Сессия linux что это

Содержание
  1. Linux и Windows: помощь админам и пользователям
  2. Администрируем и настраиваем Windows, Linux.
  3. 4 способа определить кто залогинен в Linux
  4. 1. Получаем список пользователей и команды, используемые ими с помощью команды w
  5. 2. Получаем список пользователей с помощью команды who
  6. 3. Узнаем под каким пользователем залогинены вы сами
  7. 4. Смотрим историю подключений пользователя
  8. Что такое определение «сеанса» в linux?
  9. 4 ответов
  10. Сеансы и группы процессов Linux: управление заданиями
  11. Сеансы и группы процессов — задания интерпретатора
  12. Приостановка при вводе из заднего фона (SIGTTIN)
  13. Приостановка при выводе из заднего фона (SIGTTOU)
  14. Изучаем процессы в Linux. Управление процессами
  15. Типы процессов
  16. Как Linux идентифицирует процессы?
  17. Состояния процесса в Linux
  18. Как получить идентификатор (PID) процесса
  19. Запуск интерактивного процесса в Linux
  20. Запуск фонового процесса в Linux
  21. Отслеживание активных процессов
  22. Команда ps
  23. Команда top
  24. Команда glances
  25. Управление процессами в Linux
  26. Отправка сигналов процессам
  27. Изменение приоритета процесса
  28. Комментариев: 1
  29. Добавить комментарий Отменить ответ

Linux и Windows: помощь админам и пользователям

Администрируем и настраиваем Windows, Linux.

4 способа определить кто залогинен в Linux

Если вы системный администратор, вы в любой момент времени можете захотеть узнать кто залогинен на вашем Linux сервере. Несомневаюсь что вам известен способ, который позволяет вам узнать это, но знаете ли вы все их и используете самый удобный? В этой статье мы рассмотрим 4 возможных способа.

1. Получаем список пользователей и команды, используемые ими с помощью команды w

Команда w используется для получения списка залогиненных пользователей и выполняемых ими команд. Вывод команды w содержит следующие колонки:[cut]

  • Имя пользователя
  • Номер tty
  • Адрес, с которого произошло подключение
  • Время подключения
  • Время бездействия
  • Время, затраченное всеми процессами в данном сеансе (JCPU)
  • Время, потраченное текущим процессом (PCPU)
  • Команда, выполняемая пользователем

Дополнительно могут быть использованы следующие опции:

  • -h игнорировать информацию заголовка
  • -u отображать текущую загрузку
  • -s Удалить из вывода JCPU, PCPU, и время подключения

2. Получаем список пользователей с помощью команды who

Команда who используется для получения списка пользователей, залогиненных в системе. В выводе находятся следующие колонки: имя пользователя, номер tty, дата и время, адрес подключения.

Для получения отсортированного списка используем команду:

3. Узнаем под каким пользователем залогинены вы сами

Команда whoami сообщит вам информацию о том, под какой учетной записью вы залогинены в системе. Полезно использовать с похмелья

whoami дает такую же информацию, как и команда id -un

4. Смотрим историю подключений пользователя

Команда last покажет вам историю подключений для определенного пользователя. Если в качестве аргумента не указан логин какого либо пользователя, отобразится история для всех пользователей. Данная информация берется из файла /var/log/wtmp. В выводе присутствуют следующие колонки:

  • Имя пользователя
  • Номер Tty
  • Время и дата подключения
  • Время отключения
  • Общее время работы сеанса

Постовой

Не хватает фантазии сочинить собственный текст, или просто нет времени? Вам определенно требуется копирайтер, который сделает для вас качественный уникальный материал.

Качественные объективы для фотоаппаратов. Практические все виды объективов по низким ценам.

Источник

Что такое определение «сеанса» в linux?

когда я запускаю команду «w», я вижу, что два пользователя вошли в систему (оба-я). Быстрый поиск здесь говорит о том, что это нормально, потому что «один пользователь может иметь несколько активных сессий одновременно.»

Что такое сессия? Почему у меня их два, если я вошел в систему только один раз?

4 ответов

Session обычно относится к сеансам оболочки. A shell это то, что позволяет взаимодействовать с компьютером. Он действует как мост между Пользователем и ядро. Всякий раз, когда вы запускаете команду, это оболочка, которая захватывает ваше намерение и говорит ядру делать свое дело.

в большинстве Linux вкусов, оболочка по умолчанию bash и новая bash сессия будет запускаться каждый раз при открытии нового терминала. В выводе w вы выложили, вы похоже, ваш графический сеанса (похоже ты sshing о машине):

несколько эмуляторов открытых терминалов:

и вы также, кажется, вошли в систему с неграфического tty:

каждый из них отдельный экземпляр оболочки и каждый считает своим собственные сессии.

Я думаю, что каждый сеанс терминала является сеансом пользователя. Вы можете иметь более одного терминала под X, и это виртуальные терминалы, или u может иметь реальный терминал под консолью. Это все сеансы. Это мой ‘w’

второй столбец показывает tty, так как вы можете видеть, что pts — это xterm (виртуальный терминал), другой (tty2) — это консольный логин.

сеанс-это каждая терминальная оболочка, запущенная процессами пользователя. Например, у меня сейчас запущено 3 сеанса. Окружение рабочего стола партнера и два окна терминала.

1. Хотя пользователь войти в один процесс (оболочка, которая является их интерфейс командной строки), пользователи в конечном итоге работает много процесса в результате действия, как:

-> выполнение неинтерактивной задачи в фоновом режиме.
-> переключение между интерактивным задач через работу.
-> запуск нескольких процессов, которые работают вместе через трубы.
— > идущая система windowing как система окна X которые позволяют множественным терминальным окнам к открытый.

2. Для того, чтобы обработать все эти процессы, ядро должно сформировать группы процессов, состоящие из этих процессов.

3. Чтобы управлять этими группами процессов далее в соответствии с пользователем, эти группы делятся в соответствии с пользователем на сеансы.(Примечание здесь пользователь не является пользователем linux, но оболочка или терминал означает пользователя. Два терминала на одной машине, вошедшие в систему одним и тем же пользователем linux, означают 2 разных пользователя и, следовательно, 2 разных сеанса пользователя здесь. Стержень может контролировать терминал только для одного сеанса).
процесс, выполняющий оболочку для этого «пользователя» или сеанса называется лидером сеанса.

4. Также обратите внимание на закрытие терминала, нажав кнопку » x » не делают вас из этого терминала. Что терминал продолжает работать в фоновом режиме. Если вы хотите, чтобы по сессии из терминала, вы должны выйти оттуда, нажав CTRL + D или exit.

5. При выходе из терминала ядро посылает сигнал SIGHUP (аналогично kill -1) для обработки это сессионный лидер. Теперь любой другой процесс, запущенный в терминале, является дочерним для данного лидера сессии. Эти дочерние процессы сформировали группы процессов, которые управляются этим процессом лидера сеанса (родительским процессом).

6. Процесс лидера сеанса отправляет SIGHUP каждому дочернему процессу, некоторый процесс завершается, в то время как некоторые могут не завершаться(приостановленные или работающие в фоновом режиме). Те выбирают не прекратить осиротеть как overs встречи и немедленно принятый мимо init процесс (родитель всех процессов в linux машине).

Читайте также:  Как убрать иконку приложения с рабочего стола windows 10

Источник

Сеансы и группы процессов Linux: управление заданиями

Одним из основных применений сигналов при интерактивной работе пользователя в системе является механизм управления «заданиями», которыми пользуются командные интерпретаторы и подобные интерактивные программы, например lftp.

Для удобства управления процессами при помощи сигналов они объединяются в группы и сеансы (см. credentials), проиллюстрированные в листинге ниже при помощи команды ps атрибутами PGID (process group identifier) и SID (session identifier).

Процесс (создавший группу), чей идентификатор PID совпадает с идентификатором PGID, группы, носит название лидера группы.

Процесс (создавший сеанс), чей идентификатор PID совпадает с идентификатором SID сеанса, называется лидером сеанса. Нужно отметить, что лидер сеанса в столбце STAT отмечается флагом s, а процессы группы переднего фона — флагом +.

Только одна группа сеанса, называемая «терминальной» TGPID, является группой «переднего» (foreground) фона, остальные группы сеанса являются группами «заднего» (background) фона.

Командный интерпретатор формирует свои задания «заднего» О или «переднего» фона ©, Помещая процессы заданий в соответствующие группы. Механизм управления заданиями всегда посылает «терминальные» сигналы ^C SIGINT, ^\SIGQUIT всем процессам текущей «терминальной» группы.

Для смены терминальной группы используется сигнал № 20 SIGTSTP (terminal stop signal), также отсылаемый всем процессам «терминальной» группы при получении драйвером терминала управляющего символа ^Z (SUB), генерируемого клавишами Ctrl+Z.

Обработчик сигнала SIGTSTP по умолчанию приостанавливает процессы, и управление возвращается к командному интерпретатору ©, группа которого, становится «терминальной». При помощи встроенных команд fg (foreground), bg (background) можно продолжить (SIGCONT) выполнение указанного задания (всех процессов .его группы) на «переднем» или «заднем» фоне, а при помощи команды jobs -l получить список всех заданий вместе с номерами их групп процессов.

Сеансы и группы процессов — задания интерпретатора

$ dd tf=/dev/zero of=/dev/null &

$ ps jf

PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
3094 3099 3099 3099 pts/0 3159 Ss 1000 0:00 bash
3099 3181 3181 3099 pts/0 3182 R 1000 0:08 \_ dd if=/dev/zero of=…
3099 3182 3182 3099 pts/0 3182 R+ 1000 0:00 \_ ps jf

$ man dd

Ctrl+Z
[2]+ Остановлено man dd

$ jobs -l
[1] — 3181 Выполняется dd if=/dev/zero of=/dev/null &
[2] + 3193 Остановлено man dd
[email protected]:

$ ps jf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND

3094 3099 3099 3099 pts/0 3310 Ss 1000 0:00 bash
3099 3181 3181 3099 pts/0 3310 R 1000 4:48 \_ dd if=/dev/zero of=
3099 193 3193 3099 pts/0 3310 T 1000 0:00 \_ man dd
3193 3203 3193 3099 pts/0 3310 T 1000 0:00 | \_ pager -s
3099 3310 3310 3099 pts/0 3310 R+ 1000 0:00 \_ ps jf

$ fg %1

dd if=/dev/zero of=/dev/null

^Z
[1]+ Остановлено dd if=/dev/zero of=/dev/null

$ ps f

PID TTY STAT TIME COMMAND
3099 pts/0 Ss 0:00 bash
3181 pts/0 T 26:44 \_ dd if=/dev/zero of=/dev/null
3193 pts/0 T 0:00 \_ man dd
3203 pts/0 T 0:00 | \_ pager -s
3937 pts/0 R+ 0:00 \_ ps f

$ bg 1

[1]+ dd if=/dev/zero of=/dev/null &

$ fg %2
Q
man dd
[email protected]:

$ jobs
[1]+ Остановлено ddif=/dev/zero of=/dev/null

$ fg
dd if=/dev/zero of=/dev/null |
^C11771330744+0 записей получено

11771330743+0 записей отправлено
скопировано 6026921340416 байт (6,0 ТВ), 8400,83 с, 717 МВ/с

Кроме переключения группы «переднего» фона, механизм управления заданиями координирует «совместный» доступ процессов к управляющему терминалу. При «одновременном» вводе информации с одного терминала несколькими процессами результат оказывается непредсказуем, т, к. нет возможности предугадать порядок и объемы считываемой информации.

Поэтому ввод (input) разрешен только процессам группы «переднего» фона, а группа формируется так, что только один из них в реальности будет производить чтение.

Процессам группы «заднего» фона ввод запрещен, а любые попытки подавляются при помощи сигнала SIGTTIN (terminal stop on input signal), доставка которого, приводит к приостановке процесса.

В примере из листинга ниже при составлении текста письма посредством команды mail ее процесс был временно приостановлен при помощи ^Z и SIGTSTP для получения доступа к командному интерпретатору.

Попытка продолжить в выполнение задания mail на «заднем» фоне не увенчалась успехом, т. к. была подавлена за чтение терминала. Продолжение задания на «переднем» фоне дает возможность закончить ввод текста, письма и завершить ввод управляющим символом ^Z (EOT).

Приостановка при вводе из заднего фона (SIGTTIN)

$ mail [email protected]
Subject: schedtool вместо taskset, chrt и nice/renice
^Z
[2]+ Остановлено mail [email protected]

$ which schedtool

$ dpkg -S /usr/bin/schedtool

$ bg

$ jobs -l
[1]+ 12025 Остановлено (ввод с терминала)

$ ps fj

PID TTY STAT TIME COMMAND
8992 pts/2 Ss 0:00 bash
12025 pts/2 T 0:00 \_ mail [email protected]

12063 pts/2 R+ 0:00 \_ ps f
8897 pts/0 Ss+ 0:00 bash
[email protected]:

Утилита schedtoolиз одноименного пакета schedtool заменяет «стандартные» taskset/nice/renlce/chrt↵

^D

При «одновременном» выводе информации на один терминал несколькими процессами результат точно так же непредсказуем, как и при вводе. В итоге будет получена смесь перемежающихся строчек разных процессов, однако по умолчанию вывод (output) разрешен как процессам группы «переднего» фона, так и процессам всех групп «заднего» фона.

Настроечный флаг драйвера терминала tostop (terminal output stop) позволяет запретить вывод из заднего фона так же, как и ввод. При запрещенном выводе из заднего фона все попытки будут подавляться сигналом SIGTTOU (terminal stop on output signal), приостанавливающим процесс. В листинге ниже проиллюстрировано действие сигнала SIGTTOU при включении настроечного флага tostop посредством команды stty.

Приостановка при выводе из заднего фона (SIGTTOU)

$ find / -type f -size 0 &
. . . ^C . . . ^\ . . . ^Z . . . . . .
[email protected]:

$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
isig icanon iexten echo … -echonl -nofish -xcase -tostop -echoprt ecboctl echoke

$ stty tostop

$ find / -type f -size 0 &
[1] 356
[email protected]:

$ jobs -l
[1]+ 356 Остановлено (вывод на терминал) find / -type f -size 0
[email protected]:

$ ps f

PID TTY STAT TIME COMMAND
32535 pts/1 S 0:00 -bash
356 pts/1 T 0:00 \_ find / -type f -size 0
360 pts/1 R+ 0:00 \_ ps f

Источник

Изучаем процессы в Linux. Управление процессами

Обновл. 12 Июл 2021 |

Процесс — это экземпляр запущенной программы. Всякий раз, когда в терминале выполняется какая-нибудь команда (например, команда pwd ), система создает/запускает новый процесс.

Типы процессов

В Linux существует три основных типа процессов:

Читайте также:  Как вернуть системные шрифты windows

Процессы переднего плана (или «интерактивные процессы») — они инициализируются и управляются с помощью терминального сеанса. Другими словами, необходимым условием для запуска таких процессов является наличие пользователя, подключенного к системе; они не запускаются автоматически как часть системных функций/служб. Когда команда/процесс выполняется на переднем плане, то они полностью занимают запустивший их терминал. Вы не сможете использовать другие команды, т.к. приглашение оболочки будет недоступно, пока данный процесс выполняется на переднем плане.

Фоновые процессы (или «автоматические процессы») — это процессы, не подключенные к терминалу; они не ожидают пользовательского ввода данных. Таким образом, другие процессы могут выполняться параллельно с процессом, запущенным в фоновом режиме, поскольку им не нужно ждать его завершения.

Демоны (англ. «daemons») — это особый тип фоновых процессов, которые запускаются при старте системы и продолжают работать в виде службы; они не умирают. Такие процессы запускаются как системные задачи (службы). Однако при этом они могут управляться пользователем через init-процесс (о котором мы поговорим чуть позже). Например, к демонам относится служба электронных сообщений sendmail и sshd — служба, принимающая от клиентов запросы на соединения по протоколу ssh. За исключением процесса init и некоторых других, процессы демонов обычно имеют окончание d в своем имени.

Как Linux идентифицирует процессы?

Поскольку Linux является многопользовательской системой, разные пользователи могут запускать различные программы, при этом каждый запущенный экземпляр программы должен быть однозначно идентифицирован ядром.

Процессы запущенной программы имеют уникальный пятизначный номер — PID (сокр. от «Process IDentificator»«идентификатор процесса»), а также PPID (сокр. от «Parent Process IDentificator»«идентификатор родительского процесса»). В связи с этим процессы дополнительно разделяют на две группы:

Родительские процессы — это процессы, которые во время своего выполнения создают другие процессы.

Дочерние процессы — эти процессы, создаваемые другими процессами во время своего выполнения.

Прародителем всех процессов в системе является процесс init (от англ. «initialization») — первая программа, которая выполняется при загрузке Linux и управляет всеми другими процессами в системе. init запускается самим ядром и всегда имеет PID = 1, поэтому у него в принципе нет родительского процесса.

Примечание: В любой момент времени в системе не существует двух процессов с одинаковым PID. Вновь создаваемому процессу может быть назначен ранее использованный свободный PID.

Состояния процесса в Linux

Когда процесс передает ядру запрос, который не может быть исполнен сразу же, то процесс «погружается в сон/ожидание» и «пробуждается», когда запрос может быть удовлетворен. В связи с этим, в зависимости от текущей ситуации, процесс, во время своего выполнения, может переходить из одного состояния в другое:

Рассмотрим основные состояния процесса:

Выполнение — процесс либо запущен (текущий процесс в системе), либо готов к запуску (ожидает передачи на выполнение процессору).

Ожидание — процесс ожидает наступления некоторого события (пользовательского ввода, сигнала от другого процесса и т.п.) или выделения системных ресурсов. Кроме того, ядро также различает два типа ожидающих процессов:

прерываемые ожидающие процессы — могут быть прерваны сигналами;

непрерываемые ожидающие процессы — процессы ожидают непосредственно на аппаратном уровне и не могут быть прерваны каким-либо событием/сигналом.

Завершен — процесс был остановлен, как правило, путем получения сигнала штатного завершения работы exit().

Зомби — иногда, когда родительский процесс убивается до завершения дочернего процесса, дочерние процессы становятся «осиротевшими», при этом в качестве нового родителя (с соответствующим изменением PPID) им назначается процесс init. Убитые процессы, но при этом все еще отображающиеся в таблице процессов, называются процессами зомби (они мертвы и не используются).

Как получить идентификатор (PID) процесса

Для отображения идентификатора нужного вам процесса можно использовать команду pidof, например:

$ pidof init
$ pidof bash
$ pidof systemd

Примечание: На вышеприведенном скриншоте вы можете видеть, что процессу init назначен PID=1 , а процессу systemd — PID=881 , хотя системой инициализации в Debian является именно systemd. Детально о том, почему возникла такая путаница, читайте здесь.

Чтобы вывести PID и PPID текущей оболочки, выполните:

$ echo $$
$ echo $PPID

Запуск интерактивного процесса в Linux

Как только вы выполните какую-нибудь команду или программу (например, firefox ), она создаст в системе соответствующий процесс. Вы можете запустить процесс переднего плана (он будет подключен к терминалу, ожидая пользовательского ввода) следующим образом:

Запуск фонового процесса в Linux

Запуск процесса в фоновом режиме полезен только для программ, которые не нуждаются в пользовательском вводе (через оболочку). Перевод задания в фоновый режим обычно выполняется, когда ожидается, что выполнение задания займет много времени.

Кроме этого, в оболочку встроена утилита управления заданиями jobs, которая позволяет легко управлять несколькими процессами, переключая их между передним планом и фоновым исполнением. Также, с помощью jobs процессы могут быть сразу запущены в фоновом режиме.

Чтобы запустить процесс в фоновом режиме, используйте символ & после имени запускаемой программы. В этом случае процесс не будет принимать пользовательский ввод, пока не переместится на передний план:

Вы также можете отправить процесс в фоновый режим, приостановив его с помощью сочетания клавиш Ctrl+Z. Данное сочетание клавиш отправит процессу сигнал SIGSTOP , тем самым переведя его в режим ожидания:

$ firefox #После Enter нажмите Ctrl+Z
$ jobs

Чтобы продолжить выполнение вышеупомянутой приостановленной команды в фоновом режиме, используйте команду bg (от англ. «begin»):

Чтобы отправить фоновый процесс на передний план, используйте команду fg (от англ. «foreground») вместе с идентификатором задания следующим образом:

Отслеживание активных процессов

Существует несколько различных инструментов для просмотра/перечисления запущенных в системе процессов. Двумя традиционными и хорошо известными из них являются команды ps и top:

Команда ps

Отображает информацию об активных процессах в системе, как показано на следующем скриншоте:

$ ps
$ ps -e | head #(head – фильтр, отображающий только первые 10 строк вывода команды «ps -e»)

Для получения дополнительной информации о процессах, запущенных текущим пользователем, применяется опция -f :

Столбцы, присутствующие в выводе команды ps , имеют следующие значения:

UID — идентификатор пользователя, которому принадлежит процесс (тот, от чьего имени происходит выполнение).

PID — идентификатор процесса.

PPID — идентификатор родительского процесса.

C — загрузка CPU процессом.

STIME — время начала выполнения процесса.

TTY — тип терминала, связанного с процессом.

TIME — количество процессорного времени, потраченного на выполнение процесса.

Читайте также:  Run windows in dosbox

CMD — команда, запустившая этот процесс.

Также можно отобразить информацию по конкретному процессу, используя команду ps -f [PID] , например:

Есть и другие опции, которые можно использовать вместе с командой ps :

-a — показывает информацию о процессах по всем пользователям;

-x — показывает информацию о процессах без терминалов;

-u — показывает дополнительную информацию о процессе по заданному UID или имени пользователя;

-e — отображение расширенной информации.

Если вы хотите вывести вообще всю информацию по всем процессам системы, то используйте команду ps –aux :

Обратите внимание на выделенный заголовок. Команда ps поддерживает функцию сортировки процессов по соответствующим столбцам. Например, чтобы отсортировать список процессов по потреблению ресурсов процессора (в порядке возрастания), введите команду:

$ ps -aux —sort=%cpu

Если вы ходите выполнить сортировку по потреблению памяти (в порядке убывания), то добавьте к имени интересующего столбца знак минуса:

$ ps -aux —sort=-%mem

Еще один очень популярный пример использования команды ps — это объединение её и команды grep для поиска заданного процесса по его имени:

$ ps -aux | grep bash

Команда top

Команда top отображает информацию о запущенных процессах в режиме реального времени:

PID — идентификатор процесса.

USER — пользователь, которому принадлежит процесс.

PR — приоритет процесса на уровне ядра.

NI — приоритет выполнения процесса от -20 до 19 .

VIRT — общий объем (в килобайтах) виртуальной памяти (физическая память самого процесса; загруженные с диска файлы библиотек; память, совместно используемая с другими процессами и т.п.), используемой задачей в данный момент.

RES — текущий объем (в килобайтах) физической памяти процесса.

SHR — объем совместно используемой с другими процессами памяти.

S (сокр. от «STATUS») — состояние процесса:

S (сокр. от «Sleeping») — прерываемое ожидание. Процесс ждет наступления события.

I (сокр. от «Idle») — процесс бездействует.

R (сокр. от «Running») — процесс выполняется (или поставлен в очередь на выполнение).

Z (сокр. от «Zombie») — зомби-процесс.

%CPU — процент используемых ресурсов процессора.

%MEM — процент используемой памяти.

TIME+ — количество процессорного времени, потраченного на выполнение процесса.

COMMAND — имя процесса (команды).

Также в сочетании с основными символами состояния процесса (S от «STATUS») вы можете встретить и дополнительные:

— процесс с высоким приоритетом;

N — процесс с низким приоритетом;

l — многопоточный процесс;

s — лидер сессии.

Примечание: Все процессы объединены в сессии. Процессы, принадлежащие к одной сессии, определяются общим идентификатором сессии — идентификатором процесса, который создал эту сессию. Лидер сессии — это процесс, идентификатор сессии которого совпадает с его идентификаторами процесса и группы процессов.

Команда glances

Команда glances — это относительно новый инструмент мониторинга системы с расширенными функциями:

Примечание: Если в вашей системе отсутствует данная утилита, то установить её можно с помощью следующих команд:

$ yum install -y glances

$ sudo apt-get update
$ sudo apt-get install glances

Управление процессами в Linux

Также в Linux присутствуют некоторые команды для управления процессами:

kill — посылает процессу сигнал завершения работы;

pkill — завершает процесс по его имени;

pgrep — ищет процесс по его имени (и, опционально, по имени запустившего его пользователя);

killall — завершает все активные процессы.

Ниже приведены несколько основных примеров их использования:

$ pgrep -u diego firefox
$ kill 6516
$ pgrep -u diego firefox
$ pgrep -u diego glances
$ pkill glances
$ pgrep -u diego glances

Отправка сигналов процессам

Основополагающим способом управления процессами в Linux является отправка им соответствующих сигналов. Для перечисления списка всех доступных сигналов, введите команду:

Чтобы отправить процессу нужный сигнал, используйте команды kill , pkill или pgrep , о которых мы упоминали ранее. Но программы могут реагировать на сигналы только в том случае, если они запрограммированы на распознавание этих сигналов.

Большинство сигналов предназначены для внутреннего использования системой или для программистов, когда они пишут код. Ниже приведены наиболее полезные сигналы:

SIGHUP (1) — отправляется процессу, когда его управляющий терминал закрыт.

SIGINT (2) — отправляется процессу управляющим терминалом, когда пользователь прерывает процесс нажатием клавиш Ctrl+C.

SIGQUIT (3) — отправляется процессу, если пользователь посылает сигнал выхода Ctrl+D.

SIGKILL (9) — этот сигнал немедленно завершает (убивает) процесс, и процесс не будет выполнять никаких операций очистки за собой.

SIGTERM (15) — сигнал завершения программы (отправляется командой kill по умолчанию).

SIGTSTP (20) — отправляется процессу управляющим терминалом с запросом на остановку; инициируется пользователем нажатием клавиш Ctrl+Z.

Ниже приведены примеры команды kill для уничтожения приложения firefox с помощью PID, после его зависания:

$ pgrep -u diego firefox
2275 #ответ терминала
$ kill 9 2275

$ kill -SIGKILL 2275

Чтобы убить приложение, используя его имя, применяются команды pkill или killall , например:

Изменение приоритета процесса

В системе Linux все активные процессы имеют определенный приоритет выполнения, задаваемый так называемым nice-значением. Процессы с более высоким приоритетом обычно получают больше процессорного времени, чем процессы с более низким приоритетом. Однако пользователь с root-правами может повлиять на это с помощью команд nice и renice.

Узнать значение приоритета команды можно по выводу команды top (столбец NI):

Используйте команду nice , чтобы задать NI-значение для запускаемого процесса. Имейте в виду, что обычные пользователи могут задавать данный параметр в диапазоне от 0 до 20 тем процессам, которыми они владеют. Только пользователь root может использовать отрицательные значения приоритета.

Чем больше nice-значение, тем меньшим приоритетом будет обладать процесс. Например, вы можете задать приоритет для запускаемого процесса следующим образом:

$ nice -n 10 firefox

Чтобы изменить приоритет уже запущенного процесса, используйте команду renice следующим образом:

$ renice +8 5547
$ renice +8 1151

На данный момент это всё! Если у вас есть какие-либо вопросы или дополнительные идеи, вы можете поделиться ими с нами с помощью комментариев.

Поделиться в социальных сетях:

В чем разница между su и sudo в Linux?

Комментариев: 1

Написано что у каждого процесса есть свой уникальный пятизначный номер, но в терминале их гораздо меньше. Оставшиеся недописанные цифры это не показывающиеся нули слева?

Добавить комментарий Отменить ответ

  • Словарь программиста
  • Урок №1. Введение в программирование
  • Что делать после установки Windows?
  • 70+ бесплатных ресурсов для изучения программирования
  • Создание игры «Тетрис»
  • Создание игры «Змейка»
  • Создание игры «Сапер»
  • Cоздание игры «Breakout»
  • Что такое Linux?
  • Сравнение Linux и Windows

Источник

Оцените статью