Linux
Шрифт:
ps -ах
PID TTY STAT TIME COMMAND
1 ? S 0:04 init
2 ? SW 0:00 [keventd]
3 ? SW 0:00 [kapm-idled]
4 ? SWN 0:00 [ksoftirqd_CPU0]
5 ? SW 0:00 [kswapd]
6 ? SW 0:00 [kreclaimd]
7 ? SW 0:00 [bdflush]
8 ? SW 0:00 [kupdated]
9 ? SW< 0:00 [mdrecoveryd]
13 ? SW 0:00 [kjournald]
437 ? S 0:00 syslogd -m 0
442 ? S 0:00 klogd -2
462 ? S 0:00 portmap
490 ? S 0:00 rpc.statd
647 ? S 0:00 /usr/sbin/sshd
704 ? S 0:00 lpd Waiting
732 ? S 0:00 sendmail: accepting connections
751 ? S 0:00 gpm -t ps/2 -m /dev/mouse
769 ? S 0:00 crond
835 ? S 0:00 xfs -droppriv -daemon
853 ? S 0:00 anaсron
871 ? S 0:00 /usr/sbin/atd
885 tty1 S 0:00 login – root
886 tty2 S 0:00 /sbin/mingetty tty2
887 tty3 S 0:00 /sbin/mingetty tty3
888 tty4 S 0:00 /sbin/mingetty tty4
889 tty5 S 0:00 /sbin/mingetty tty5
890 tty6 S 0:00 /sbin/mingetty tty6
893 tty1 S 0:00 -bash
1037 tty1 R 0:00 /usr/bin/mc -P
1038 ? S 0:00 cons.saver /dev/ttyl
1039 pts/0 S 0:00 bash -rcfile .bashrc
1067 pts/0 R 0:00 ps -axКак
Появился новый столбец – stat. В этом столбце отображается состояние (status) процесса. Полный список состояний вы можете прочитать в описании программы ps, а пока – самые важные состояния:
• буква R обозначает запущенный процесс, исполняющийся в данный момент времени;
• буква S обозначает спящий (sleeping) процесс – процесс ожидает какое-то событие, необходимое для его активизации;
• буква Z используется для обозначения «зомбированных» процессов (zombied) – это процессы, родительский процесс которых прекратил свое существование, оставив дочерние процессы рабочими.
Помимо этого позвольте обратить ваше внимание на колонку tty. Как вы, наверное, заметили, многие процессы, расположенные в верхней части таблицы, в этой колонке содержат знак"?" вместо терминала. Так обозначаются процессы, запущенные с более не активного терминала. Как правило, это всякие системные сервисы.
Если вы хотите увидеть еще больше информации о выполняемых процессах, попробуйте выполнить команду:
Как вы видите – информации прибавилось. Появились еще следующие столбцы:
• USER – показывает, от имени какого пользователя был запущен данный процесс;
• %CPU, %МЕМ – показывают, сколько данный процесс занимает соответственно процессорного времени и объем используемой оперативной памяти;
• TIME – время запуска программы.
В табл. 26.2 приведены некоторые параметры командной строки программы ps.
Таблица 26.2. Параметры командной строки программы pstop
Еще одна утилита, с помощью которой можно получать информацию о запущенных в операционной системе процессах. Для использования достаточно просто запустить команду top на выполнение. Эта утилита выводит на экран список процессов в системе, отсортированных в порядке убывания значений используемых ресурсов.
Сначала идет общесистемная информация – из нее можно узнать время запуска операционной системы, время работы операционной системы от момента последнего перезапуска системы, количество зарегистрированных в данный момент в операционной системе пользователей, а также минимальную, максимальную и среднюю загрузку операционной системы. Помимо этого, отображается общее количество процессов и их состояние, сколько процентов ресурсов системы используют пользовательские процессы и системные процессы, использование оперативной памяти и свопа.
Далее идет таблица, во многом напоминающая вывод программы ps. Идентификационный номер процесса, имя пользователя – владельца процесса, приоритет процесса, размер процесса, его состояние, используемые процессом оперативная память и ресурс центрального процесса, время выполнения и наконец – имя процесса.
Утилита top после запуска периодически обновляет информацию о состоянии процессов в операционной системе, что позволяет нам динамически получать информацию о загрузке системы.
kill
Программа kill (в переводе с английского – убить) предназначена для посылки соответствующих сигналов указанному нами процессу. Как правило, это бывает тогда, когда некоторые процессы начинают вести себя неадекватно. Наиболее часто программа применяется, чтобы прекратить выполнение процессов.
Для того чтобы прекратить работу процесса, необходимо знать PID процесса либо его имя. Например, чтобы «убить» процесс 123, достаточно выполнить следующую команду:
kill 123
Как обычно, чтобы прекратить работу процесса, вам необходимо быть его владельцем. Само собой, пользователь root может прекратить работу любого процесса в системе. Иногда обычное выполнение программы kill не справляется с поставленной задачей. Обычно это объясняется тем, что данный процесс завис либо выполняет операцию, которую с его точки зрения нельзя прервать немедленно. Для прерывания этого процесса можно воспользоваться следующей командой:
kill -9 123
Что это означает? Вообще-то программа kill предназначена для посылки процессам управляющих сигналов, одним из которых является сигнал sigterm (terminate, завершиться). Этот сигнал посылается процессу при выполнении программы kill по умолчанию. Процесс, получивший данный сигнал, должен корректно завершить свою работу (закрыть используемые файлы, сбросить буферы ввода/вывода и т. п.). Ключ -9 указывает программе kill посылать процессу другой тип сигнала – sigkill.
kill -1
1) SIGHUP
2) SIGINT
3) SIGQUIT
4) SIGILL
5) SIGTRAP
6) SIGABRT
7) SIGBUS
8) SIGFPE
9) SIGKILL
10) SIGUSR1
11) SIGSEGV
12) SIGUSR2
13) SIGPIPE
14) SIGALRM
15) SIGTERM
17) SIGCHLD
18) SIGCONT
19) SIGSTOP
20) SIGTSTP
21) SIGTTIN
22) SIGTTOU
23) SIGURG
24) SIGXCPU
25) SIGXFSZ
26) SIGVTALRM
27) SIGPROF
28) SIGWINCH
29) SIGIO
30) SIGPWR
31) SIGSYS
32) SIGRTMIN
33) SIGRTMIN+1
34) SIGRTMIN+2
35) SIGRTMIN+3
36) SIGRTMIN+4
37) SIGRTMIN+5
38) SIGRTMIN+6
39) SIGRTMIN+7
40) SIGRTMIN+8
41) SIGRTMIN+9
42) SIGRTMIN+10
43) SIGRTMIN+11
44) SIGRTMIN+12
45) SIGRTMIN+13
46) SIGRTMIN+14
47) SIGRTMIN+15
48) SIGRTMAX-15
49) SIGRTMAX-14
50) SIGRTMAX-13
51) SIGRTMAX-12
52) SIGRTMAX-11
53) SIGRTMAX-10
54) SIGRTMAX-9
55) SIGRTMAX-8
56) SIGRTMAX-7
57) SIGRTMAX-6
58) SIGRTMAX-5
59) SIGRTMAX-4
60) SIGRTMAX-3
61) SIGRTMAX-2
62) SIGRTMAX-1
63) SIGRTMAXКак видите, список внушительный. Подробную информацию о сигналах вы найдете в документации на программу kill.
killall
Еще один вариант программы kill. Используется для того, чтобы завершить работу процессов, носящих одно и то же имя. К примеру, в нашей системе запущено несколько программ тс. Для того чтобы одновременно завершить работу этих программ, достаточно всего лишь выполнить следующую команду:killall mc
Конечно, этим не ограничивается использование данной команды. С ее помощью можно отсылать сигналы группе одноименных процессов. Для получения более подробной информации по этой команде обращайтесь к ее тап-странице.
Изменение приоритета выполнения процессов
В операционной системе Linux у каждого процесса есть свой приоритет исполнения. Это очень удобно. Поскольку операционная система многозадачна – то для выполнения каждого процесса выделяется определенное количество времени. Для некоторых задач необходимо выделить побольше, для некоторых можно поменьше. Для этого и предназначен приоритет процесса. Управление приоритетом процесса осуществляется программами nice и renice.
nice
Программа nice позволяет запустить команду с предопределенным приоритетом выполнения, который задается в командной строке. При обычном запуске все задачи имеют один и тот же приоритет, и операционная система равномерно распределяет между ними процессорное время. Однако с помощью утилиты nice можно понизить приоритет какой-либо задачи, таким образом предоставляя другим процессам больше процессорного времени. Повысить приоритет той или иной задачи имеет право только пользователь root. Синтаксис использования nice следующий:nice - number command
Уровень приоритета процесса определяется параметром number , при этом большее его значение означает меньший приоритет процесса. Значение по умолчанию – 10, и number представляет собой число, на которое должен быть уменьшен приоритет. К примеру, процесс top имеет приоритет, равный —5. Для того чтобы понизить приоритет выполнения процесса на десять, мы должны выполнить следующую команду:
nice 10 top
В результате процесс top имеет приоритет, равный 5.
Только пользователь root может поднять приоритет того или иного процесса, используя для этого отрицательное значение параметра number.
renice
Программа renice, в отличие от программы nice, позволяет изменить приоритет уже работающего процесса. Формат запуска программы следующий:renice - number PID
В общем, программа renice работает точно так же, как и nice. Уровень приоритета процесса определяется параметром number , при этом большее его значение означает меньший приоритет процесса. Значение по умолчанию – 10, и number представляет собой число, на которое должен быть уменьшен приоритет процесса.
Только пользователь root может поднять приоритет того или иного процесса, используя для этого отрицательное значение параметра number.
Выполнение процессов в заданное время
Одна из основных задач автоматизации администрирования операционной системы – выполнение программ в заданное время или с заданной периодичностью. Конечно, можно запускать программы самостоятельно, но проводить 24 часа на работе или постоянно удаленно запускать программы в самое неподходящее время (часа в три ночи) – безумие. Для решения этих проблем существует несколько утилит, позволяющих запускать процессы в нужное время.
at
Для запуска одной или более команд в заранее определенное время используется команда at. В этой команде вы можете определить время и дату запуска той или иной команды. Команда at требует, по меньшей мере, двух параметров – время выполнения программы и запускаемую программу с ее параметрами запуска.
Приведенный ниже пример запустит команду на выполнение в 01:01. Для этого введите все, приведенное ниже, с терминала, завершая ввод каждой строки нажатием клавиши <Enter> и по окончании ввода всей команды – <Ctrl>+<D> для ее завершения.