Как посмотреть запущенные программы на линукс

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

Оглавление скрыть

Сигналы

Управление процессами в Linux — это довольно обширная темя. Но все сводится к одному, мы различными способами меняем характеристики процессов. При этом мы можем преследовать совершенно разные цели: например мы можем хотеть завершить или приостановить процесс, поменять ему приоритет, заставить работать в фоне и другое.

Управление процессами может происходить по разному. Начнём наше обучение с сигналов, которые мы можем отправлять процессам.

Сигналы нужны для асинхронного оповещения процессов о разнообразных событиях в системе. Это могут быть события оборудования или события других процессов. Работа сигналов очень похожа на прерывания. То есть, если процесс получает сигнал, то он прерывает свою обычную работу, обрабатывает сигнал, а затем продолжает работать.

Сигналы от ядра поступают процессам напрямую. А сигналы от одних процессов другим поступают через ядро, то есть с помощью системных вызовов. Системный вызов, который обрабатывает сигналы называется — kill(). Его так назвали, так как большинство стандартных сигналов завершают (убивают) процесс.

Основы Linux. Управление процессами. Часть 1

Сигналы от ядра к процессам поступают напрямую. А сигналы от одних процессов к другим идут через ядро с помощью системных вызовов

Посмотреть обзор на сигналы можно выполнив man 7 signal . Или вы можете почитать эту же документацию здесь.

Стандартные сигналы

В этой документации вы можете посмотреть список стандартных сигналов:

Разберём некоторые из низ:

  • SIGHUP (1) — разрыв с управляющим терминалом. Процесс либо что-то предпримет (если программист об этом позаботился), либо завершится. Например, вы работаете с сервером, подключившись к нему по ssh, и вдруг связь пропадает, SSH сессия рвётся. Все ваши процессы неожиданно теряют управляющий терминал и начинают завершаться, так как получают от ядра этот сигнал.
  • SIGINT (2) — клавиатурный сигнал, срабатывает когда мы нажимаем Ctrl+c. Это штатное завершение, то есть процесс будет завершён корректно (если процесс вообще умеет завершаться корректно).
  • SIGQUIT (3) — клавиатурный сигнал, срабатывает когда мы нажимаем Ctrl+. Аварийное завершение с выдачей отладочной информации.
  • SIGABRT (6) — аналог SIGQUIT (3). Если у процесса нет управляющего терминала, то отправить ему клавиатурный сигнал не получится, поэтому используется этот сигнал.
  • SIGKILL (9) — этот сигнал сразу завершает процесс (некорректно). И это поведение нельзя изменить, то есть программист не может сам указать программе что делать в случае получения этого сигнала.
  • SIGTERM (15) — это аналог SIGINT (2). Если у процесса нет управляющего терминала, то отправить ему клавиатурный сигнал не получится, поэтому используется этот сигнал.
  • SIGTSTP (20) — клавиатурный сигнал, когда мы нажимаем Ctrl+z. Этот сигнал приостанавливает процесс на управляющем терминале и переводит процесс на задний фон. То есть процесс переходит в состояние T (stopped by job control signal — остановленный специальным сигналом).

Утилита kill

Существует специальная команда — kill, она позволяет отправлять сигналы процессам. Тип сигнала указывается в качестве параметра в виде номера (например, -9) или имени (например, -SIGKILL). Следующим параметром нужно указать PID процесса, которому мы отправляем сигнал. Вот примеры:

Видео #32. Запуск Windows-программ на Linux


$ kill -9 9898 $ kill -SIGKILL 2565

Вы можете отправить сигнал своему процессу, а если хотите отправить сигнал чужому, то нужно использовать sudo, или запускать команду kill из под пользователя root.

Передний и задний фон

Когда вы работаете в графической системе, то вы можете одновременно работать в нескольких программах. Для этого используются окна приложений. Пока вы работаете с одной программой, её окошко работает на переднем фоне. А в это время другие окна могут оставаться на заднем фоне.

Читайте также:
Программа отключение питания USB

Управление процессами в Linux можно применять и для того, чтобы в терминале можно было работать также, на заднем и переднем фоне. Представьте, что вы читаете справку (man) и захотели что-то попробовать. Чтобы не закрывать man, вы можете нажать Ctrl+z и приостановить man. При этом работа man не просто приостанавливается, она уходит на задний фон.

Дальше вы можете поработать в терминале. А затем, когда захотите, вернёте man на передний фон. А чтобы увидеть процессы на заднем фоне используется команда jobs:

Разберём вывод: [1] — номер задания, + означает что это последнее приостановленное задание, а дальше идёт состояние и название процесса.

И наконец, чтобы вернуть задание на передний фон, нужно выполнить fg % . Или можно выполнить fg без указания номера задания, тогда на передний план вернётся задание, которое было помечено плюсиком в выводе jobs.

После выполнения последней команды, на передний план вернется работа man.

Группа переднего фона — это терминал и то что на нём сейчас выполняется. Все остальные группы — это группы заднего фона.

Работа процесса на заднем фоне

Выше я показал как остановить процесс и поместить его на задний фон. Но на заднем фоне процесс может быть не только в приостановленном состоянии. Если выполнение процесса не требует от вас каких-то интерактивных действий (никакого ввода или вывода), то можно заставить процесс выполнятся на заднем фоне. Для этого нужно выполнить bg % .

Например, начнём скачивание большого файла с помощью команды wget:

Затем переведём процесс скачивания на задний фон, то-есть нажмём Ctrl+z. И посмотрим список заданий на заднем фоне:

Теперь, с помощью команды bg, запустим процесс на заднем фоне:

Wget должен выводить информацию о скачивании файла, но на заднем фоне запрещено выводить информацию на терминал. Именно поэтому весь вывод автоматически перенаправляется в файл — wget-log.

С помощью команды ls можем убедиться что файл скачивается (его размер увеличивается):

Выше я уже писал, что запустить процесс на заднем фоне можно только, если он не интерактивный. Например запустить остановленный man не получится:

Как только man попытался вывести на терминал справку, то сразу был опять остановлен. И остановлен он был тоже с помощью сигнала. Вот два сигнала, которые работают для фоновых заданий:

  • SIGTTIN (21) — остановлен за попытку чтения из stdin (на заднем фоне).
  • SIGTTOU(22) — остановлен за попытку вывода на stdout (на заднем фоне).

Если плохо помните стандартные потоки ввода вывода (stdin, stdout, stderr), то про них я писал здесь.

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

Приоритеты процессов Linux

В работающей системе Linux выполняется множество процессов. И каждому запущенному процессу назначается приоритет. Как ни странно, но чем больше значение приоритета, тем меньше сам приоритет. То есть, процесс с приоритетом 15 будет более приоритетным, чем процесс с приоритетом 20.

Более приоритетные процессы получают больше процессорного времени. Они более отзывчивы, выполняются более быстро. Но при этом, они сильнее нагружают процессор и замедляют все остальные процессы.

Но никакие пользователи и даже root не могут управлять приоритетами процессов. Они могут управлять другим значением — nice. Диапазон nice имеет 40 приоритетов от -20 до +19. По умолчанию, любой процесс Linux, созданный пользователем, имеет значение nice равное 0, и приоритет равный 20.

Вы можете увидеть значение nice для процессов своего пользователя и своего терминала с помощью следующей команды (утилиту ps я рассматривал здесь):

Или можно получить список всех процессов, а не только ваших:

Читайте также:
Лучшие программы для создания фотоальбомов

Разница в том, что priority — это реальный приоритет процесса в данный момент, а nice — подсказка для ядра указывающая нужно ли увеличить или уменьшить приоритет процессу.

Для пользовательских процессов, в большинстве случаев, значение priority можно рассчитать по следующей формуле: priority = 20 + nice. Таким образом, процесс с nice=3 имеет priority=23, а процесс с nice=-7 имеет priority=13.

Кроме ps, для просмотра приоритетов процессов можно использовать top и htop.

Утилита top - колонка NIУтилита htop - колонка NI

В Linux управление процессами, а точнее их уровнем nice, происходит с помощью команд:

  • nice — настраивает приоритет процесса перед его запуском;
  • renice — позволяет изменить приоритет уже запущенного процесса.
  • обычный пользователь может лишь уменьшить nice своего процесса;
  • root может уменьшить или увеличить nice своего или чужого процесса.

Команда nice

Вы можете легко проверить значение nice для своего терминала (или оболочки), выполнив команду nice без каких-либо аргументов:

То есть любые команды запущенные из этой оболочки будут иметь значение nice=0.

А чтобы запустить команду с изменённым значением nice, её нужно запускать таким образом: nice . Например, запустим две программы с разным приоритетом (что-бы запустить их две в одном терминале, я использую выполнение на заднем фоне):

Теперь, с помощью htop, посмотрим на приоритеты процессов для нашего пользователя:

Как видите команды md5sum работают параллельно. Но у одной команды приоритет стал 22, а у другой 28. При этом более приоритетный процесс получает больше процессорного времени, это видно в колонке TIME+.

А если мы хотим указать отрицательное значение для nise. Другими словами, уменьшить nice и уменьшить priority, тем самым увеличив приоритет. То должны использовать двойное тире и sudo (так как обычный пользователь не имеет право запускать процессы с повышенным приоритетом):

Кстати, этот экземпляр md5sum, будет работать от пользователя root. Вот так можно посмотреть на все процессы md5sum с помощью ps:

Выше видно, что сильнее всего нагружает процессор процесс с уровнем nice равным -2.

Команда renice

Чтобы изменить приоритет уже работающего процесса нужно использовать команду renice -n -p . И этой командой может пользоваться только root.

Вернём всем процессам значение nice=0:

А ещё вы можете изменить приоритет всех процессов определённого пользователя таким образом: sudo renice -n -u . Например:

Обратите внимание, процессы alex стали с уровнем nice=5, а процесс root так и остался с уровнем nice=0.

Итог

Статья получилось довольно длинной. Я показал как происходит некоторое управление процессами в Linux.

Рассказал про сигналы и как их отправлять процессам с помощью клавиатуры или с помощью команды kill. Также я показал, как можно использовать передний (fg) и задний (bg) фон терминала, и этим реально можно пользоваться. Также я разобрал приоритеты процессов и как их можно менять с помощью команд nice и renice.

В статье много примеров использования команды ps. Думаю, что умение работать с этой утилитой, это очень полезный навык для системного администратора Linux.

Источник: sysadminium.ru

Как посмотреть все процессы в Linux

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

Как посмотреть все процессы в Linux

Статьи по теме:

  • Как посмотреть все процессы в Linux
  • Как в Ubuntu запустить программу
  • Как в Ubuntu удалить программу

Просмотр через «Терминал»

Для просмотра запущенных процессов в системе нажмите комбинацию кнопок Ctrl и T клавиатуры. Вы также можете вызвать терминал через ярлык на рабочем столе (если имеется) или меню «Приложения» в верхней части оконного менеджера Gnome. Для доступа в меню программ через KDE воспользуйтесь нижней панелью системы и аналогичным пунктом «Программы».

В появившемся окне при помощи клавиатуры введите запрос ps и нажмите Enter. Перед вами будет отображен список процессов, запущенных в текущей сессии системы. Если вы работаете под учетной записью root («Администратор»), введите команду sudo ps –ax для просмотра всех исполняемых программ.

Читайте также:
Судьба человека гости программы список

Через ps вы можете только просмотреть текущие выполняемые задачи. Альтернативная команда top позволяет отследить процессы, которые на данный момент запущены в системе, а также область памяти, которую занимают другие пользователи сети или компьютера. При этом top производит отображение задач в реальном времени, что дает возможность отследить активность выполняющихся программ.

Удаление процессов производится путем вызова команды kill. Список доступных параметров для управления приложениями можно получить, введя kill –l. Чтобы удалить конкретную задачу из оперативной памяти, необходимо указать идентификатор команды (например, kill top). Для звершения дерева процессов воспользуйтесь запросом killall (например, killall vmware).

Управление через графический интерфейс

В репозиториях Synaptic или «Менеджере пакетов» можно загрузить графические программы, которые позволяют наглядно управлять запущенными процессами. Для просмотра списка задач можно выбрать средство YaST, которое также позволяет изменять некоторые параметры системы. Для управления приложениями в KDE можно воспользоваться KDE System Guard.

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

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

Совет полезен?
Статьи по теме:

  • Как посмотреть пользователей linux
  • Как в ubuntu удалить файл
  • Особенности ОС Linux для пользователей: мифы и реальность

Добавить комментарий к статье
Похожие советы

  • Как запустить терминал
  • Особенности ОС Linux
  • Как посмотреть запущенные процессы
  • Как проверить запущенные процессы
  • Как посмотреть загрузку Сisco
  • Как посмотреть загруженность сервера
  • Как отключить процесс
  • Как повысить приоритет процесса
  • Как посмотреть разделы Linux
  • Как увидеть сетевые подключения
  • Как в Линуксе посмотреть
  • Как войти в консоль
  • Как найти диагональ в параллелограмме
  • Как перезапустить демон
  • Как узнать, какие процессы запущены
  • Как распаковать папку
  • Как запустить процесс
  • Как узнать о системе Linux
  • Как найти массу через плотность и объем
  • Как определить модуль вектора
  • Как вычислить относительную молекулярную массу вещества

Источник: www.kakprosto.ru

Как просмотреть и завершить процесс в Astra Linux

Для того чтобы в операционной системе Astra Linux узнать текущею загрузку системы, просмотреть список запущенных процесс и при необходимости завершить какой либо из них. Можно воспользоватся системным монитором либо все это сделать через терминал. Давайте рассмотрим оба этих варианта.

Системный монитор

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

Astra Linux

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

Astra Linux системный монитор

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

Общая загрузка системы Astra Linux

Просмотр и завершение процессов через терминал

Все тоже самое можно сделать с помощью команд. Для этого запускаем терминал.

Запуск терминала в Astra Linux

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

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

Получение root прав в Astra Linux

Для того чтобы завершить процесс необходимо ввести команду с номером PID например.

команда завершения процесса в Astra Linux

После чего обновляем список процессов и смотрим завершился ли он.

Источник: sibsisadmin.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru