PPID - Информационна бележка
Архив на тагове: PPID
Лекция No14 - Процеси, задачи. Команди fg, bg, jobs, top, nohup
В тази лекция ще завършим темата за процесите и сигналите вLinux и ще преминем към темата за монтиране на файлови системи. В последния урок многократно използвахме знака& (амперсанд) в края на командата (sleep 100 & ). Знакът амперсанд в края на командата означава, че стартираният процес ще трябва да бъде поставен на заден план.Ако изпълним командатаsleep 100 без знака&, тогава няма да получим подкана на командния ред, докато процесътsleep не приключи.
Командите, стартирани от конзолата с амперсанд, се изпълняват във фонов режим и се наричат задачи (работи ). Можем да кажем, чезадачите са процеси, свързани с обвивката. Такива задачи, в допълнение към традиционнияPID, също имат собствена номерация, започваща от единица. Можете да видите изпълняванитезадачи на интерпретатора с командатаjobs. Примерът по-долу показва ситуацията, когато има двезадачи и изпълнението на една от тях е спряно.
Въведетеtop в конзолата. Тази команда показва в реално време съществуващи процеси, но не всички, а само частта, която се побира на екрана. Ще се върнем към тази команда малко по-късно. Засега може да забележите, чеtop не връща контрола на обвивката. Можете или да излезете от програмата (като натиснете q), или да спрете процеса с клавишната комбинацияctrl+z (не бъркайте комбинациитеctrl+c -end процес иctrl+z -stop процес). Видяхме спрения процесtop в горния пример. За да възобновите работата на този процес (задача), има две команди:fg иbg, съкращения от англ.думи foreground (преден план) и background (фон). Синтаксисът е прост:fg номер на задачата. Командатаfg работи не само със спрени задачи, но и със задачи като цяло. В нашия пример командатаfg 2 ще изведе процесаsleep на преден план и подканата на обвивката ще стане недостъпна (сякаш ако изпълним командатаsleep без символа& ). Командатаfg 2 ще възобнови процесаtop и ще го изведе на преден план. Командатаfg без параметър ще възобнови последния процес, спрян от комбинациятаctrl+z, и ако няма такива, ще изведе на преден план последната задача (задача с по-висок пореден номер).Задачата, която ще бъде възстановена (показана) от командатаfg без параметър, е маркирана със знака+ в изхода на командатаjobs. Командатаbg е предназначена да възстанови работата наспрени процеси (задачи) във фонов режим.
Имайте предвид също, чезадачите имат собствено номериране за всеки терминал (конзола). Ако влезете в друга конзола и стартирате процес във фонов режим, номерът назадачата ще започне от едно. Също така няма да намерите помощ за командитеfg иbg (man fg, man bg ). Тъй като тези команди са част отbash. И ще намерите споменаване за тях вman bash.
Всички процеси, стартирани от обвивката, са деца на обвивката. ИPPID на такива процеси ще бъде равен наPID на съответния шел. Ако излезете от командния интерпретатор, тогава всички процеси, стартирани от него (включително тези във фонов режим), ще бъдат прекратени. Влезте в две конзоли и стартирайте няколко процеса във втората,отидете на първия и изпълнете командатаps al :
1 2 3 4 5 6 7 8 9 |
1 2 3 4 5 6 |