локальный (привязаны к процессору и возможны только в пределах компьютера);
— каналы
- pipe (они же конвейеры, так же неименованные каналы), о них я много рассказывал в прошлом посте, примером можно привести: команда1 | команда2. По сути, pipe использует stdin, stdout и stderr.
- Именованные каналы (FIFO: First In First Out). Данный вид канала создаётся с помощью mknod или mkfifo, и два различных процесса могут обратиться к нему по имени. Пример работы с fifo:
в первом терминале (создаем именованный канал в виде файла pipe и из канала направляем данные с помощью конвейера в архиватор):
# mkfifo pipe # ls -l total 0 prw-r--r-- 1 root root 0 Nov 9 19:41 pipe # gzip -9 -c < pipe > out
во втором терминале (отправляем в именованный канал данные):
# cat /path/to/file > pipe
в результате это приведет к сжатию передаваемых данных gzip-ом
— сигналы
сигнал — это асинхронное уведомление процесса о каком-либо событии. Когда сигнал послан процессу, операционная система прерывает выполнение процесса. Если процесс установил собственный обработчик сигнала, операционная система запускает этот обработчик, передав ему информацию о сигнале. Если процесс не установил обработчик, то выполняется обработчик по умолчанию.
Все сигналы начинаются на «SIG…» и имеют числовые соответствия, определяемые в заголовочном файле signal.h. Числовые значения сигналов могут меняться от системы к системе, хотя основная их часть имеет в разных системах одни и те же значения. Утилита kill позволяет задавать сигнал как числом, так и символьным обозначением.
Сигналы можно послать следующими способами:
— разделяемая память
Разделяемую память применяют для того, чтобы увеличить скорость прохождения данных между процессами. В обычной ситуации обмен информацией между процессами проходит через ядро. Техника разделяемой памяти позволяет осуществить обмен информацией не через ядро, а используя некоторую часть виртуального адресного пространства, куда помещаются и откуда считываются данные.
После создания разделяемого сегмента памяти любой из пользовательских процессов может подсоединить его к своему собственному виртуальному пространству и работать с ним, как с обычным сегментом памяти.
— очереди сообщений
В общих чертах обмен сообщениями выглядит примерно так: один процесс помещает сообщение в очередь посредством неких системных вызовов, а любой другой процесс может прочитать его оттуда, при условии, что и процесс-источник сообщения и процесс-приемник сообщения используют один и тот же ключ для получения доступа к очереди.
NOTES
pspsps
This ps needs access to namelist data for proper WCHAN display. For kernels prior to 2.6, the System.map file must be installed.
CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process. This is not ideal, and it does not conform to the standards that ps otherwise conforms to. CPU usage is
unlikely to add up to exactly 100%.
The SIZE and RSS fields don’t count some parts of a process including the page tables, kernel stack, struct thread_info, and struct task_struct. This is usually at least 20 KiB of memory that is always resident. SIZE is the virtual size of
the process (code+data+stack).
Processes marked <defunct> are dead processes (so-called «zombies») that remain because their parent has not destroyed them properly. These processes will be destroyed by init(8) if the parent process exits.
DESCRIPTION
pstop
This version of ps accepts several kinds of options:
- UNIX options, which may be grouped and must be preceded by a dash.
- BSD options, which may be grouped and must not be used with a dash.
- GNU long options, which are preceded by two dashes.
Options of different types may be freely mixed, but conflicts can appear. There are some synonymous options, which are functionally identical, due to the many standards and ps implementations that this ps is
compatible with.
Note that «ps -aux» is distinct from «ps aux». The POSIX and UNIX standards require that «ps -aux» print all processes owned by a user named «x»,
as well as printing all processes that would be selected by the -a option. If the user named «x» does not exist, this ps may interpret the command as «ps aux» instead and print a
warning. This behavior is intended to aid in transitioning old scripts and habits. It is fragile, subject to change, and thus should not be relied upon.
By default, ps selects all processes with the same effective user ID (euid=EUID) as the current user and associated with the same terminal as the invoker. It displays the process ID (pid=PID), the terminal associated with the process
(tname=TTY), the cumulated CPU time in hh:mm:ss format (time=TIME), and the executable name (ucmd=CMD). Output is unsorted by default.
The use of BSD-style options will add process state (stat=STAT) to the default display and show the command args (args=COMMAND) instead of the executable name. You can override this with the PS_FORMAT environment variable. The use of
BSD-style options will also change the process selection to include processes on other terminals (TTYs) that are owned by you; alternately, this may be described as setting the selection to be the set of all processes filtered to exclude processes owned
by other users or not on a terminal. These effects are not considered when options are described as being «identical» below, so -M will be considered identical to Z and so on.
Except as described below, process selection options are additive. The default selection is discarded, and then the selected processes are added to the set of processes to be displayed. A process will thus be shown if it meets any of the given
selection criteria.
Как использовать ps команду
Общий синтаксис команды выглядит следующим образом:
По историческим причинам и из соображений совместимости команда принимает несколько различных типов параметров:
- Опции стиля UNIX, перед которыми стоит одна черточка.
- Варианты стиля BSD, используемые без тире.
- Длинные опции GNU, начинающиеся с двух тире.
Различные типы опций могут быть смешаны, но в некоторых конкретных случаях могут возникать конфликты, поэтому лучше придерживаться одного типа опций.
Опции BSD и UNIX могут быть сгруппированы.
В простейшем виде, при использовании без какой-либо опции, напечатает четыре столбца информации для минимум двух процессов, запущенных в текущей оболочке, самой оболочки и процессов, которые запускаются в оболочке при вызове команды.
Вывод включает в себя информацию о shell ( ) и процессе, запущенном в этой оболочке ( введенная вами команда):
Четыре колонки помечены , , , и .
— Идентификатор процесса
Обычно при запуске команды наиболее важной информацией, которую ищет пользователь, является идентификатор процесса. Знание PID позволяет убить сбойный процесс .
— Название управляющего терминала для процесса.
— Совокупное время ЦП процесса, показанное в минутах и секундах.
— Имя команды, которая использовалась для запуска процесса.
Вывод выше не очень полезен, так как он не содержит много информации. Настоящая сила команды появляется при запуске с дополнительными опциями.
Команда принимает огромное количество опций, которые можно использовать для отображения определенной группы процессов и различной информации о процессе, но для повседневного использования требуется лишь несколько из них.
чаще всего используется со следующей комбинацией параметров:
Форма BSD :
- Опция указывает отображать процессы всех пользователей. Только процессы, не связанные с терминалом, и процессы руководителей групп не отображаются.
- — обозначает пользовательский формат, который предоставляет подробную информацию о процессах.
- Инструктирует перечислить процессы без управляющего терминала. В основном это процессы, которые запускаются во время загрузки и работают в фоновом режиме .
Команда отображает информацию в одиннадцати столбцах , , , , , , , , , , и .
Мы уже объяснили , , и . Вот объяснение других меток:
- — Пользователь, который запускает процесс.
- — The CPU использование процесса.
- — Процент резидентного установленного размера процесса к физической памяти на машине.
- — Размер виртуальной памяти процесса в КиБ.
- — Размер физической памяти , используемой процессом.
- — Код состояния процесса, такой как (зомби), (спящий) и (работает).
- — время, когда команда началась.
Опция указывает , чтобы отобразить в виде дерева родителя к ребенку процессов:
Команда также позволяет вам сортировать вывод. Например, чтобы отсортировать вывод на основе использования памяти, вы должны использовать:
UNIX форма :
- Параметр предписывает , чтобы отобразить все процессы.
- На стендах полноформатный листинг, в котором представлена подробная информация о процессах.
Команда отображает информацию в восьми столбцах , , , , , , и .
Метки, которые еще не объяснены, имеют следующее значение:
- — То же , что и пользователь, который запускает процесс.
- — Идентификатор родительского процесса.
- — То же , что и загрузка ЦП процесса.
- — То же , что и время начала команды.
Чтобы просмотреть только процессы, запущенные от имени определенного пользователя, введите следующую команду, где указано имя пользователя:
Становимся суперпользователем
Для выполнения важных задач по администрированию системы очень часто требуются права суперпользователя root. Но постоянная работа с такими правами может негативно повлиять на нервную систему. Ведь суперпользователь имеет неограниченный доступ, а следовательно ошибок допускать нельзя. Чем больше привилегий, тем больше ответственность. Поэтому намного проще и безопаснее работать в учетной записи обычного пользователя и получать права root только, когда они необходимы. Мы ведь не хотим по ошибке разрушить свой дом имея «суперсилы»
Во многих дистрибутивах Linux существуют программы, которые могут дать временный доступ к «божественным» привилегиям root, после чего вновь можно продолжить работу в роли простого смертного не беспокоясь о последствиях.
Одна из таких программ su. Она позволяет заменить свои права на права выбранного пользователя для выполнения необходимых задач, а затем вернуть свои права обратно. Сейчас мы рассмотрим только замену своих прав, на права суперпользователя root. Чтобы получить права суперпользователя root нужно ввести команду su, после чего пароль от учетной записи root. Если пароль введен верно, то произойдет переключения прав и в конце приглашения Linux Shell знак доллара ($) изменится на «решетку» (#), которая обозначает работу под правами суперпользователя. После этого можно выполнить необходимые команды. Для завершения сеанса работы с правами root нужно набрать команду exit. Будет осуществлен возврат к привилегиям собственной учетной записи, а знак «решетки» (#) изменится на знак доллара ($).
В некоторых дистрибутивах Linux, в основном Ubuntu, используется другой подход. Вместо переключения в режим суперпользователя с помощью команды su, используется команда sudo. С помощью команды sudo обычные пользователи могут с правами суперпользователя выполнять необходимые им команды, введя перед sudo перед командой. После этого будет запрошен пароль, но не суперпользователя, а от текущей учетной записи. Кроме того, с помощью sudo можно дать возможность отдельным пользователям выполнять с привилегиями root только определенные команды (например дать возможность перезапускать компьютер), там самым ограничив их действия.
На тестовой виртуальной машине, которую мы создали в самом начале, мы не сможем поэкспериментировать с sudo Так как для этого вначале нужно произвести необходимые настройки и дать нашему пользователю право на использование sudo. О том как это сделать можно прочитать в справочном материале к программе sudo.
Если же все же попытаться выполнить команду sudo с привилегиями обычного пользователя, мы получим сообщение, что наш пользователь не указан в списке пользователей, которым это разрешено, а о нашей попытке будет доложено в «рапорте». В Linux безопасность находится на высоком приоритете и все попытки неудачного доступа журналируются в логах.
Команда PS в Linux
Наши партнеры
Библиотека сайта rus-linux.net
НАЗВАНИЕ ps — выдача информации о состоянии процессов
ОПИСАНИЕ Команда ps выдает информацию об активных процессах. По умолчанию информация дается только о процессах, ассоциированных с данным терминалом. Выводятся идентификатор процесса, идентификатор терминала, истраченное к данному моменту время ЦП и имя команды. Если нужна иная информация, следует пользоваться опциями.
Некоторые опции имеют один аргумент или список аргументов. Аргументы в списке могут быть либо отделены друг от друга запятыми, либо все вместе заключены в двойные кавычки и отделены пробелами или запятыми. Аргументы в списке_процессов и в списке_групп должны быть числами.
Командой ps обрабатываются следующие опции: -e Вывести информацию обо всех процессах.
-d Вывести информацию обо всех процессах, кроме лидеров групп.
-a Вывести информацию обо всех наиболее часто запрашиваемых процессах, то есть обо всех процессах, кроме лидеров групп и процессов, не ассоциированных с терминалом.
-f Генерировать полный листинг (см. ниже разъяснение смысла колонок).
-l Генерировать листинг в длинном формате (см. ниже).
-n файл_с_системой Считать, что операционная система загружена из файла_с_системой, а не из файла /unix.
-t список_терминалов Выдавать информацию только о процессах, ассоциированных с терминалами из заданного списка_терминалов. Терминал — это либо имя файла-устройства, например ttyномер или console, либо просто номер, если имя файла начинается с tty.
-p список_идентификаторов_процессов Выдавать информацию только об указанных процессах.
-u список_идентификаторов_пользователей Выдавать информацию только о процессах с заданными идентификаторами или входными именами пользователей. Идентификатор пользователя выводится в числовом виде, а при наличии опции -f — в символьном.
-g список_идентификаторов_лидеров_групп Выводить информацию только о процессах, для которых указаны идентификаторы лидеров групп. Лидер группы — это процесс, номер которого идентичен его идентификатору группы. Shell, запускаемый при входе в систему, является стандартным примером лидера группы процессов.
При указании опции -f ps пытается определить имя команды и аргументы, с которыми был создан процесс, исследуя пользовательский блок процесса. Если это не удается, имя процесса выводится так же, как и при отсутствии опции -f, только заключается в квадратные скобки.
Процесс, закончивший выполнение своей программы, и имеющий родительский процесс, не дождавшийся еще завершения, в качестве имени программы получает <defunct>.
СМ. ТАКЖЕ kill.
СЮРПРИЗЫ Во время выполнения команды ps положение вещей может измениться; таким образом, ps дает лишь хорошее приближение к действительности.
Некоторые сведения, относящиеся к процессам, отмеченным как <defunct>, не соответствуют действительности.
Если не указана ни одна из опций -t, -p, -u, -g, команда ps проверяет стандартный ввод, стандартный вывод и стандартный протокол (в указанном порядке) для определения управляющего терминала и пытается вывести информацию о процессах, ассоциированных с этим терминалом. В ситуации, когда все три стандартных направления ввода/вывода переназначены, ps не может найти и выдать имя управляющего терминала.
Команда ps -ef может не отметить начало входа в систему, а вывести сведения о последнем запуске для данной терминальной линии.
UID и GID
С процессом связано понятие «владельца» и «группы», определяющие права доступа процесса к другим процессам и файлам в файловой системе. «Владелец» и «группа», это числовые идентификатор UID и GID, являющийся атрибутами процесса. В отличие от файла, процесс может принадлежать нескольким группам одновременно. Пользователь в диалоговом сеансе имеет право на доступ к своим файлам поскольку диалоговая программа (shell), которую он использует, выполняется в процессе с тем же UIDом, что и UID, указанный в атрибутах файлов.
Процесс может поменять своего владельца и группу в двух случаях:
Process State Codes
Here are the different values that the s, stat and state output specifiers (header «STAT» or «S») will display to describe the state of
a process.
- D
Uninterruptible sleep (usually IO)
R
Running or runnable (on run queue)
S
Interruptible sleep (waiting for an event to complete)
T
Stopped, either by a job control signal or because it is being traced.
W
paging (not valid since the 2.6.xx kernel)
X
dead (should never be seen)
Z
Defunct («zombie») process, terminated but not reaped by its parent.
For BSD formats and when the stat keyword is used, additional characters may be displayed:
<
high-priority (not nice to other users)
N
low-priority (nice to other users)
L
has pages locked into memory (for real-time and custom IO)
s
is a session leader
l
is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+
is in the foreground process group
Output Format Control
These options are used to choose the information displayed by ps. The output may differ by personality.
- -F
extra full format. See the -f option, which -F implies.
-O format
is like -o, but preloaded with some default columns. Identical to -o pid,format,state,tname,time,command or -o
pid,format,tname,time,cmd, see -o below.
O format
is preloaded o (overloaded).
The BSD O option can act like -O (user-defined output format with some common fields predefined) or can be used to specify sort order.
Heuristics are used to determine the behavior of this option. To ensure that the desired behavior is obtained (sorting or formatting), specify the option in
some other way (e.g. with -O or —sort). When used as a formatting option, it is identical to -O, with the BSD personality.
- -M
Add a column of security data. Identical to Z. (for SE Linux)
X
Register format.
Z
Add a column of security data. Identical to -M. (for SE Linux)
-c
Show different scheduler information for the -l option.
-f
does full-format listing. This option can be combined with many other UNIX-style options to add additional columns. It also causes the command arguments to
be printed. When used with -L, the NLWP (number of threads) and LWP (thread ID) columns will be added. See the c option, the format keyword
args, and the format keyword comm.
j
BSD job control format.
-j
jobs format
l
display BSD long format.
-l
long format. The -y option is often useful with this.
o format
specify user-defined format. Identical to -o and —format.
-o format
user-defined format.
format is a single argument in the form of a blank-separated or comma-separated list, which offers a way to specify individual output columns. The
recognized keywords are described in the STANDARD FORMAT SPECIFIERS section below. Headers may be renamed (ps -o pid,ruser=RealUser -o
comm=Command) as desired. If all column headers are empty (ps -o pid= -o comm=) then the header line will not be output. Column width will increase
as needed for wide headers; this may be used to widen up columns such as WCHAN (ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). Explicit width control
(ps opid,wchan:42,cmd) is offered too. The behavior of ps -o pid=X,comm=Y varies with personality; output may be one column named «X,comm=Y» or
two columns named «X» and «Y». Use multiple -o options when in doubt. Use the PS_FORMAT environment variable to specify a default as desired;
DefSysV and DefBSD are macros that may be used to choose the default UNIX or BSD columns.
- s
display signal format
u
display user-oriented format
v
display virtual memory format
-y
Do not show flags; show rss in place of addr. This option can only be used with -l.
-Z
display security context format (SELinux, etc.)
—format format
user-defined format. Identical to -o and o.
—context
Display security context format. (for SE Linux)
«Убийство» процесса
Предположим, что запущенное приложение не отвечает («зависло»). Как тогда от него избавится? Разумеется с помощью команды kill. Попробуем завершить с ее помощью оставшийся процесс xload. Для начала нам нужно определить сам процесс и для этого мы можем воспользоваться командами jobs или ps. Команда jobs сообщает нам номер задачи, а ps уникальный номер процесса (PID).
Попробуем оба способа. Для начала определим номер задачи с помощью команды jobs. Потом выполним команду kill передав ей номер задачи, приписав перед ним знак процента (%), который значит, что мы хотим завершить задачу с указанным номером.
1 |
$ jobs + Running xload & $ kill %1 + Terminated xload |
Окно xload исчезло, так как выполнение программы было завершено с помощью команды kill.
Теперь вновь запустим xload в фоновом режиме. Определим номер процесса (PID) с помощью команды ps и завершим процесс командой kill. На этот раз команде kill передадим номер процесса (PID). В отличии от номера задачи, перед ним не нужно вставлять никаких символов.
1 |
$ xload & 25082 $ ps PID TTY TIME CMD 2345 pts/1 00:00:01 bash 25082 pts/1 00:00:00 xload 25092 pts/1 00:00:00 ps $ kill 25082 + Terminated xload |
Процесс завершился и окно программы xload исчезло.
Notes
ps works by reading the virtual files in /proc. ps does not need to be setuid kmem or have any privileges to run. Do not give this ps any special permissions.
This ps needs access to namelist data for proper WCHAN display. For kernels before 2.6, the System.map file must be installed.
CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process. This is not ideal, and it does not conform to the standards of ps. CPU usage is unlikely to add up to exactly 100%.
The SIZE and RSS fields don’t count some parts of a process including the page tables, kernel stack, struct thread_info, and struct task_struct. This is usually at least 20 KiB of memory that is always resident. SIZE is the virtual size of the process (code+data+stack).
Processes marked <defunct> are dead processes (so-called «zombies») that remain because their parent has not destroyed them properly. These processes are destroyed by init if the parent process exits.
If the length of the username is greater than the length of the display column, the numeric user ID is displayed instead.
SIMPLE PROCESS SELECTION
- a
- Lift the BSD-style «only yourself» restriction, which is imposed upon the set of all processes when some BSD-style (without «-«) options are used or when the ps personality setting is BSD-like. The set of
processes selected in this manner is in addition to the set of processes selected by other means. An alternate description is that this option causes ps to list all processes with a terminal (tty), or to list all processes when used
together with the x option. - -A
- Select all processes. Identical to -e.
- -a
- Select all processes except both session leaders (see getsid(2)) and processes not associated with a terminal.
- -d
- Select all processes except session leaders.
- —deselect
- Select all processes except those that fulfill the specified conditions (negates the selection). Identical to -N.
- -e
- Select all processes. Identical to -A.
- g
- Really all, even session leaders. This flag is obsolete and may be discontinued in a future release. It is normally implied by the a flag, and is only useful when operating in the sunos4 personality.
- -N
- Select all processes except those that fulfill the specified conditions (negates the selection). Identical to —deselect.
- T
- Select all processes associated with this terminal. Identical to the t option without any argument.
- r
- Restrict the selection to only running processes.
- x
- Lift the BSD-style «must have a tty» restriction, which is imposed upon the set of all processes when some BSD-style (without «-«) options are used or when the ps personality setting is BSD-like. The set of
processes selected in this manner is in addition to the set of processes selected by other means. An alternate description is that this option causes ps to list all processes owned by you (same EUID as ps), or to list
all processes when used together with the a option.
Как отправлять сигналы процессам в Linux
Все процессы в Linux отвечают на сигналы.
Сигналы — способ завершить или изменить поведение программ на уровне ОС.
Как отправлять процессам сигналы при помощи PID
Наиболее распространенным способом передачи сигналов программам является команда kill.
Как и следовало ожидать, функциональность данной утилиты по умолчанию заключается в попытке завершить процесс:
kill PID_of_target_process
Это отправит всем процессам сигнал TERM. Данный сигнал приказывает процессу завершиться. Это позволяет программе выполнять операции по очистке и завершить работу без помех.
Если программа неисправна и не завершает работу при отправке сигнала TERM, можно усилить сигнал, передав сигнал KILL:
kill -KILL PID_of_target_process
Данный специальный сигнал отправляется не программе.
Вместо этого он передается ядру операционной системы, которое прерывает процесс. Это используется для блокировки программ, которые игнорируют сигналы, посылаемые им.
Каждый сигнал имеет ассоциированный номер, который можно передать вместо имени. К примеру, можно отправить «-15» вместо «-TERM» и «-9» вместо «-KILL».
Как использовать сигналы для других целей
Сигналы используются не только для завершения работы программ. Они также полезны для совершения других действий.
К примеру, многие демоны можно перезапустить при помощи сигнала отбоя HUP. Apache является одной из работающих по такому принципу программ.
sudo kill -HUP pid_of_apache
Вышеприведенная команда заставит Apache перезагрузить конфигурационный файл и возобновить обслуживание контента.
Чтобы просмотреть список всех сигналов, которые можно отправить с kill, наберите:
kill -l
Как отправлять сигналы процессам по имени
Хотя отправлять сигналы процессам гораздо удобнее при помощи PID, существуют также методы отправки сигнала с помощью имен процессов.
Команда pkill работает почти также, как kill, но она действует от имени процесса:
pkill -9 ping
Команда, приведенная выше, является эквивалентом:
kill -9 `pgrep ping`
Чтобы послать сигнал каждому экземпляру определенного процесса, используйте команду killall:
killall firefox
Вышеуказанная команда отправит сигнал TERM каждому экземпляру firefox, запущенному на данном компьютере.
Как установить приоритеты процессов
Часто возникает необходимость установить, какие процессы имеют приоритет в серверной среде.
Некоторые процессы могут рассматриваться как критически важные, в то время как другие могут быть выполнены за счет остатка ресурсов.
Linux контролирует приоритеты с помощью значения под названием niceness.
Задачи с высоким приоритетом имеют низшее значение nice, так как они поглощают ресурсы. С другой стороны, задачи с низким приоритетом имеют высокое значение nice, так как они используют минимальное количество ресурсов.
При запуске команды top в начале статьи был выведен столбец, отмеченный как «NI». В нем указывается значение nice процесса:
top
В зависимости от системы, значение nice может варьироваться от «-19/-20» (наивысший приоритет) до «19/20» (самый низкий приоритет).
Чтобы запустить программу с определенным значением nice, можно использовать команду nice:
nice -n 15 command_to_execute
Это работает только при запуске новой программы.
Чтобы изменить значение nice программы, которая уже выполняется, нужно использовать инструмент renice:
renice 0 PID_to_prioritize
Примечание: в то время как nice работает с именем команды, renice вызывает PID процесса.
высокоуровневый
- Обычно — пакеты программного обеспечения, которые реализуют промежуточный слой между системной платформой и приложением. Эти пакеты предназначены для переноса уже испытанных протоколов коммуникации приложения на более новую архитектуру. Примером можно привести: DIPC, MPI и др. (мне не знакомы, честно говоря)
Итак. Подведем маленький итог:
- В Linux есть процессы,
- каждый процесс может запускать подпроцессы (нити),
- создание нового процесса создается клонированием исходного,
- прородителем всех процессов в системе является процесс init, запускаемый ядром системы при загрузке.
- процессы взаимодействуют между собой по средствам можпроцессного взаимодействия:
- каналы
- сигналы
- сокеты
- разделяемая память
- каждый процесс обладает свойствами (читай: обладает следующим контекстом):
- PID — идентификатор процесса
- PPID — идентификатор процесса, породившего данный
- UID и GID — идентификаторы прав процесса (соответствует UID и GID пользователя, от которого запущен процесс)
- приоритет процесса
- состояние процесса (выполнение, сон и т.п.)
- так же у процесса есть таблица открытых (используемых) файлов
Далее поговорим о том, как посмотреть состояние процессов в Linux и о том, как же ими управлять.
Examples
To see every process running on the system, using the standard syntax:
ps -e
ps -ef
ps -eF
ps -ely
To see every process on the system, using BSD syntax:
ps ax
ps axu
To display a process tree:
ps -ejH
ps axjf
To get info about threads:
ps -eLf
ps axms
To get security info:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
To see every process running as root (real and effective ID) in user format:
ps -U root -u root u
To see every process with a user-defined format:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan
Print only the process IDs of syslogd, the syslog daemon:
ps -C syslogd -o pid=
Print only the name of process ID 15:
ps -p 15 -o comm=