Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение. |
Управление процессами
Управление процессами
Команды наблюдения за процессами
Для просмотра текущего списка и состояния процессов следует использовать программу ps. Она выдает "мгновенный снимок" таблицы процессов, которые запущены в системе.
Программа ps без аргументов сообщает список процессов, запущенных пользователем в текущей сессии. Обычно системного администратора интересуют все запущенные в системе процессы, список которых можно узнать по команде
ps –ef
В системах BSD и System V программа ps имеет разные ключи, поэтому если вы переходите от одной системы к другой, надо помнить об этих различиях или обращаться к man ps.
Разберем подробнее, какую информацию выдает программа ps.
ps -ef | more UID PID PPID C STIME TTY TIME CMD root 0 0 0 17:43:30 ? 0:03 sched root 1 0 0 17:43:30 ? 0:00 /etc/init -s root 2 0 0 17:43:30 ? 0:00 pageout root 3 0 0 17:43:30 ? 0:00 fsflush root 349 1 0 17:43:53 ? 0:00 /usr/lib/saf/sac –t 300 root 277 276 0 17:43:49 ? 0:00 htt_server –port 9010 –syslog -message_locale C root 180 1 0 17:43:45 ? 0:00 /usr/lib/autofs/automountd root 59 1 0 17:43:39 ? 0:00 /usr/lib/sysevent/syseventd root 73 1 0 17:43:40 ? 0:00 /usr/lib/picl/picld root 133 1 0 17:43:43 ? 0:00 /usr/sbin/rpcbind root 229 1 0 17:43:48 ? 0:00 /usr/lib/power/powerd root 172 1 0 17:43:44 ? 0:00 /usr/lib/nfs/lockd root 156 1 0 17:43:44 ? 0:00 /usr/sbin/inetd -s root 217 1 0 17:43:47 ? 0:00 /usr/lib/lpsched daemon 168 1 0 17:43:44 ? 0:00 /usr/lib/nfs/statd root 189 1 0 17:43:45 ? 0:00 /usr/sbin/syslogd root 203 1 0 17:43:46 ? 0:00 /usr/sbin/cron root 205 1 0 17:43:46 ? 0:00 /usr/sbin/nscd root 343 1 0 17:43:53 ? 0:00 /usr/sbin/vold root 240 1 0 17:43:48 ? 0:00 /usr/lib/utmpd root 324 1 0 17:43:51 ? 0:00 /usr/lib/snmp/snmpdx –y –c /etc/snmp/conf root 261 1 0 17:43:49 ? 0:00 /usr/sadm/lib/smc/bin/smcboot root 355 329 0 17:43:56 ? 0:00 /usr/dt/bin/dtlogin -daemon root 329 1 0 17:43:52 ? 0:00 /usr/dt/bin/dtlogin -daemon root 262 261 0 17:43:49 ? 0:00 /usr/sadm/lib/smc/bin/smcboot root 263 261 0 17:43:49 ? 0:00 /usr/sadm/lib/smc/bin/smcboot root 354 1 0 17:43:55 ? 0:00 /usr/lib/ssh/sshd root 338 1 0 17:43:52 ? 0:00 /usr/lib/dmi/snmpXdmid -s sunny root 352 349 0 17:43:53 ? 0:00 /usr/lib/saf/ttymon root 353 329 2 17:43:54 ? 1:41 /usr/openwin/bin/Xsun :0 –nobanner –auth /var/dt/A:0-KtaiPa root 356 329 0 17:43:56 ? 0:00 /usr/openwin/bin/fbconsole –d :0 root 358 324 0 17:43:57 ? 0:00 mibiisa -r –p 5248 root 337 1 0 17:43:52 ? 0:00 /usr/lib/dmi/dmispd
Ниже мы описываем смысл колонок этого вывода. Некоторые колонки появятся только при использовании специфических ключей, отличных от ключей ef. Для получения еще более детальной информации следует обратиться к man ps.
UID – эффективный идентификатор владельца процесса (реальный выводится при использовании ключа –f ).
В колонке F – flags (флаги) – выводятся флаги процесса; это устаревшее поле, сохраненное для совместимости.
В колонке S – state (состояние) – указывается состояние процесса. Состояния бывают следующие:
- O (ON PROC) – процесс находится в процессоре и выполняется;
- S (Sleeping) – процесс ждет завершения события (например, ввода-вывода);
- R (Runnable) – процесс готов к выполнению и ждет своего кванта в очереди к процессору;
- Z (Zombie) – процесс стал "зомби", так как завершился, а родительский процесс не подождал его завершения;
- T (sTopped) – процесс остановлен по сигналу остановки или в процессе трассировки.
Идентификатор PID – уникальный идентификатор процесса, используется при передаче ему сигналов.
PPID – идентификатор родительского процесса.
C – загрузка процессора на планирование задачи (устарело, выводится для совместимости).
PRI – приоритет процесса; когда указан ключ -с, б о льшие значения означают б о льший приоритет, без ключа –с б о льшие значения означают меньший приоритет.
NI – значение NICE (показателя уступчивости), используется при вычислении глобального приоритета процессов в классе разделения времени.
ADDR – адрес в памяти.
SZ – размер процесса в виртуальной памяти, включая все отображенные файлы и устройства, измеряется в страницах памяти; для получения размера в килобайтах в большинстве случаев это значение надо умножить на 4, точнее – см. команду pagesize.
WCHAN – адрес события, ради которого процесс перешел в состояние сна; если поле пусто – процесс запущен.
STIME – время запуска процесса, в часах, минутах и секундах; для запущенных более суток назад процессов указываются месяцы и дни.
TTY – управляющий терминал (то же, что и терминальная группа), символ вопросительного знака "?" печатается для процесса без управляющего терминала.
TIME – сколько времени процесс отнял у процессора.
CMD – команда, которой был запущен процесс.
При указании ключа j выводятся дополнительные сведения:
При указании ключа L выводятся дополнительные сведения, причем информация выдается по одной строке на каждый легковесный процесс. Обычные однопоточные процессы соотносятся только с одним легковесным процессом:
Процессы, которые завершились, но чей код заверешния не был востребован родительским процессом, помечаются как <defunct>.
Кроме программы ps в UNIX для получения информации о запущенных в данный момент процессах широко используется команда top:
top last pid: 923; load averages: 4.56, 1.18, 0.50 17:54:22 64 processes: 63 sleeping, 1 on cpu CPU states: 0.0% idle, 0.5% user, 99.5% kernel, 0.0% iowait, 0.0% swap Memory: 128M real, 18M free, 101M swap in use, 499M swap free PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND 909 root 1 60 0 17M 3340K sleep 0:00 0.92% pagein 353 root 1 58 0 32M 16M sleep 0:05 0.37% Xsun 893 root 1 49 0 2228K 1172K cpu 0:00 0.15% top 753 root 1 49 0 15M 8112K sleep 0:00 0.13% dtterm 911 root 1 59 0 3352K 752K sleep 0:00 0.03% sh 912 root 1 49 0 3360K 600K sleep 0:00 0.03% sh 894 root 1 59 0 3064K 1816K sleep 0:00 0.03% dtexec 656 root 5 59 0 22M 10M sleep 0:01 0.02% dtwm 648 root 1 59 0 6644K 2280K sleep 0:00 0.02% ttsession 667 root 1 59 0 1844K 512K sleep 0:00 0.02% rpc.rstatd 277 root 29 59 0 5612K 1724K sleep 0:00 0.01% htt_server 895 root 1 59 0 3360K 756K sleep 0:00 0.01% soffice 720 root 4 49 0 42M 26M sleep 0:03 0.00% mozilla-bin 649 root 1 49 0 18M 6288K sleep 0:00 0.00% dtsession 760 root 1 49 0 4752K 1656K sleep 0:00 0.00% bash
В Solaris вместо команды top принято использовать похожую по функциональности команду prstat.
Кроме этого, в Solaris для удобства получения информации о процессах с определенными именами есть команда
pgrep имя
Она является эквивалентом команды
ps –ef | grep имя
С помощью pargs можно посмотреть, какие аргументы переданы конкретному процессу и какая у него среда окружения:
pargs 2793 2793: dtterm -name Run -xrm *menuBar: False -iconic -map -e /usr/dt/ bin/dtexec -open argv[0]: dtterm argv[1]: -e argv[2]: /usr/dt/bin/dtexec argv[3]: -open argv[4]: -1 argv[5]: -ttprocid argv[6]: 2.10fX-r 01 648 1289637086 1 1 0 192.168.5.33 5 sunny_105_1 argv[7]: /export/home/mozilla_bin/sfw/bin/mozilla argv[8]: <NULL> argv[9]: -open argv[10]: -1 argv[11]: -ttprocid argv[12]: 2.10fX-r 01 648 1289637086 1 1 0 192.168.5.33 5 sunny_105_1 argv[13]: /export/home/mozilla_bin/sfw/bin/mozilla pargs -e 2793 2793: dtterm -name Run -xrm *menuBar: False -iconic -map -e /usr/dt/ bin/dtexec -open envp[0]: AB_CARDCATALOG=/usr/dt/share/answerbooks/ru_RU.UTF-8/ ab_cardcatalog envp[1]: DISPLAY=:0.0 envp[2]: DTAPPSEARCHPATH=//.dt/appmanager:/etc/dt/appconfig/ appmanager/%L:/etc/dt/appconfig/appmanager/C:/usr/dt/appconfig/ appmanager/%L:/usr/dt/appconfig/appmanager/C envp[3]: DTDATABASESEARCHPATH=//.dt/types,/etc/dt/appconfig/types/%L,/ etc/dt/appconfig/types/C,/usr/dt/appconfig/types/%L,/usr/dt/appconfig/ types/C
Вывод команды pargs значительно сокращен, ключ –e требует вывести все содержимое среды окружения, а для графических программ типа dtterm, как в нашем примере, среда окружения весьма велика.
Команда prstat позволяет в динамике, подобно команде top, отслеживать состояние процессов:
prstat PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 3576 root 3412K 868K run 13 0 0:00:02 6,3% find/1 353 root 45M 19M sleep 59 0 0:02:30 0,2% Xsun/1 753 root 15M 3620K run 49 0 0:00:02 0,1% dtterm/1 3577 root 6640K 4108K cpu0 49 0 0:00:00 0,1% prstat/1 205 root 2872K 624K sleep 59 0 0:00:00 0,0% nscd/18 895 root 123M 21M sleep 49 0 0:00:49 0,0% soffice.bin/4 667 root 1844K 488K sleep 59 0 0:00:00 0,0% rpc.rstatd/1 217 root 5364K 536K sleep 59 0 0:00:00 0,0% lpsched/1 324 root 4360K 196K sleep 59 0 0:00:00 0,0% snmpdx/1 240 root 1100K 288K sleep 59 0 0:00:00 0,0% utmpd/1 343 root 4892K 0K sleep 59 0 0:00:00 0,0% vold/3 276 root 3240K 0K sleep 59 0 0:00:00 0,0% htt/1 633 root 3784K 0K sleep 59 0 0:00:00 0,0% sdt_shell/1 657 root 16M 2496K sleep 49 0 0:00:00 0,0% dtfile/1 203 root 4484K 568K sleep 59 0 0:00:00 0,0% cron/1 189 root 5636K 1092K sleep 59 0 0:00:00 0,0% syslogd/13 168 daemon 2444K 820K sleep 59 0 0:00:00 0,0% statd/1 156 root 2412K 688K sleep 59 0 0:00:00 0,0% inetd/1 172 root 2160K 748K sleep 59 0 0:00:00 0,0% lockd/2 229 root 1348K 0K sleep 59 0 0:00:00 0,0% powerd/2 133 root 2212K 604K sleep 59 0 0:00:00 0,0% rpcbind/1 Total: 61 processes, 161 lwps, load averages: 0,25, 0,17, 0,27
Вы можете получить информацию только о тех процессах, которые запущены вами. Пользователь root может получть информацию о любых процессах.