Как остановить процесс в linux

Как остановить процесс в linux

В этом подразделе описывается:

  • как запустить команду в определенное время с помощью команд batch и at;
  • как получить информацию о состоянии процесса;
  • как завершить активный процесс;
  • как вновь запустить остановленный процесс;
  • как пренести процесс из оперативного в фоновый режим и наоборот.

8.4.1. Запуск команд в заданное время

Команды batch и at позволяют вам определять время запуска команды или последовательности команд. При помощи команды batch система определяет время запуска команды, вы это можете определить с помощью команды at. Обе команды ожидают ввод со стандартного ввода (терминала); список команд, вводимых с терминала, должен завершаться нажатием клавиши ^d (одновременное нажатие клавиши Ctrl и клавиши d).

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

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

В следующем примере batch используется для выполнения команды grep в согласованное время. Команда grep осуществляет поиск всех файлов в текущем справочнике и перенаправляет вывод в файл dol.file.

После того как вы зададите задание batch, система выдаст ответ, в котором даны номер задания, дата и время. Номер задания не то же самое, что номер процесса, который система генерирует, когда вы запускаете команду в фоновом режиме.

Команда at позволяет вам указывать точное время выполнения команд. Общий фомат команды at:

Аргумент time состоит из времени дня и даты, если дата не сегодняшняя.

В следующем примере показано, как использовать команду at для посылки сообщения happy birthday пользователю с регистрационным именем emily:

Обратите внимание, что команда at подобно команде batch выдает ответ с номером задания, датой и временем.

Если вы не хотите, чтобы команды, находящиеся в данный момент в очереди заданий batch или at были выполнены, то можете удалить их из очереди. Для этого воспользуйтесь опцией -r в команде at, указав ее с номером задания. Общий формат такой команды: Например, чтобы удалить предыдущее задание at, введите: Если вы забыли номер задания, то команда : распечатает вам список текущих заданий в очереди batch или at, как показано на следующем экране:

Таким образом команда at выполняет команды в указанное время. Вы можете использовать от одной до 4-х цифр и буквосочетания "am" и "pm", чтобы указать время. Чтобы указать дату, задайте имя месяца и вслед за ним число. Если задание должно быть выполнено сегодня, то дату вводить не надо.

8.4.2. Получить состояние запущенного процесса

Команда ps дает вам состояние всех процессов, запущенных на данный момент. Например, вы можете использовать команду ps, чтобы просмотреть состояние всех процессов, которые запущены в фоновом режиме, применив символ &.

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

В следующем примере команда grep запускается в фоновом режиме и затем выдается команда ps. Система сообщает в ответ номер идентификации процесса (PID) и номер терминала (TTY). Она также выдает время выполнения каждого процесса (TIME) и имя команды, которая выполняется (COMMAND):

Обратите внимание, что система распечатала номер PID для команды grep так же, как и для всех других запущенных процессов: для самой команды ps и команды sh, которая была запущена во время вашей регистрации.

Читайте также:  Белый налет на стеклах автомобиля

Вы можете приостановить и вновь запустить программу, если в вашей системе предусмотрена функция управления заданиями. Команда jobs выдает список текущих фоновых процессов, запущенных или приостановленных. Команда jobs дополнительно к PID распечатывает идентификатор задания (JID) и имя задания. Чтобы вновь запустить приостановленное задание, либо возобновить фоновый процесс в оперативном режиме, вам необходимо знать JID. JID распечатывается на экране каждый раз, когда вы вводите команду запуска или останова процесса. Если вы введете: то на экране появится следующая информация: или

8.4.3. Завершение активных процессов

Команда kill завершает активные процессы в фоновом режиме и команда stop приостанавливает временно процессы. Общий формат этих команд: или Обратите внимание, что вы не можете завершать фоновые задания нажатием клавиш BREAK или DEL. Следующий пример показывает, как вы можете завершить команду grep, которая выполняется в фоновом режиме.

После того как система выдаст ответ на запрос, на экране появится подсказка $, означающая, что процесс завершен. Если система не найдет указанный PID, то появится сообщение об ошибке:

Чтобы приостановить оперативный процесс (если активна функция управления заданиями), введите: На экране появится следующее сообщение:

8.4.4. Запуск остановленного задания

Если функция управления заданиями активна, то вы можете вновь запустить приостановленный процесс. Чтобы вновь запустить процесс, остановленный командой stop, вы сначала должны определить JID с помощью команды jobs. Затем вы можете использовать JID со следующими командами: fg — возобновляет приостановленное задание или переводит задание из фонового режима в оперативный; bg — вновь запускает приостановленное задание в фоновом режиме.

8.4.5. Использование команды nohup

Все процессы, за исключением at и batch, завершаются, когда вы выходите из системы. Если вы хотите, чтобы после вашего выхода из системы процесс в фоновом режиме продолжал выполняться, то вам необходимо использовать команду nohup. Команда nohup имеет следующий формат:

Предположим, вы хотите, чтобы команда grep осуществила поиск во всех файлах в вашем текущем справочнике строки "word" и перенаправила вывод в файл word.list, и затем, не ожидая завершения, вы хотите выйти из системы, то введите следующую строку:

Вы можете завершить команду nohup с помощью команды kill.

Под процессом мы будем понимать запущенную в системе копию программы. Например, если вы открыли три окна калькулятора (например, gcalctool), это значит, что вы запустили три процесса.

Находим PID зависшего процесса

Каждый процесс в Linux имеет свой идентификатор, называемый PID. Перед тем, как выполнить остановку процесса, нужно определить его PID. Для этого воспользуемся командами ps и grep. Команда ps предназначена для вывода списка активных процессов в системе и информации о них. Команда grep запускается одновременно с ps (в канале) и будет выполнять поиск по результатам команды ps. Вывести список всех процессов можно, выполнив в командной строке:

Но, как правило, список очень большой и найти процесс, который мы хотим «убить», бывает не так просто. Здесь на помощь приходит команда grep. Например, чтобы найти информацию о процессе с именем gcalctool выполните команду:

Команда grep выполнит поиск по результатам команды ps и на экран будут выведены только те строки, которые содержат строку (слово) gcalctool. Здесь есть одна интересная деталь, например, если у вас не запущено приложение gcalctool, то после выполнения ps axu | grep gcalctool вы получите:

То есть мы получили сам процесс grep, так как в качестве параметра команде мы указали слово gcalctool, и grep нашел сам себя в выводе команды ps.

Если процесс gcalctool запущен, то мы получим:

Читайте также:  Прохождение игры crash bandicoot 2

Здесь нас интересует строка: «yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool». Число 25609 и есть идентификатор (PID) процесса gcalctool.

Есть еще один более простой способ узнать PID процесса — это команда pidof, которая принимает в качестве параметра название процесса и выводит его PID. Пример выполнения команды pidof:

«Убиваем» процесс командой kill

Когда известен PID процесса, мы можем убить его командой kill. Команда kill принимает в качестве параметра PID процесса. Например, убьем процесс с номером 25609:

Вообще команда kill предназначена для посылки сигнала процессу. По умолчанию, если мы не указываем какой сигнал посылать, посылается сигнал SIGTERM (от слова termination — завершение). SIGTERM указывает процессу на то, что необходимо завершиться. Каждый сигнал имеет свой номер. SIGTERM имеет номер 15. Список всех сигналов (и их номеров), которые может послать команда kill, можно вывести, выполнив kill -l. Чтобы послать сигнал SIGKILL (он имеет номер 9) процессу 25609, выполните в командой строке:

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

Убиваем процессы командой killall

Команда killall в Linux предназначена для «убийства» всех процессов, имеющих одно и то же имя. Это удобно, так как нам не нужно знать PID процесса. Например, мы хотим закрыть все процессы с именем gcalctool. Выполните в терминале:

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

Заключение

Некоторые процессы не удается остановить под обычным пользователем. Например, если процесс был запущен от имени пользователя root или от имени другого пользователя системы, то команды kill и killall нужно выполнять от имени суперпользователя, добавляя sudo (в Ubuntu):

Бывают ситуации, когда вы работаете в графическом интерфейсе (например, GNOME) и вам не удается открыть эмулятор терминала, чтобы остановить зависший процесс. Тогда можно переключиться на виртуальную консоль клавишами Ctrl+Alt+F1, залогиниться в ней и выполнять команды уже из нее. А потом перейти обратно, нажав Ctrl+Alt+F7.

Справку по использованию любой команды можно получить командой man:

Linux в целом довольно стабильная система. Тем не менее, иногда мы хотим настроить работу системы так чтобы она лучше соответствовала нашим потребностям. В этой статье мы рассмотрим, как управлять программами или процессами в системе Linux.

Процесс

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

Linux, как и большинство современных ОС, является многозадачной операционной системой. Это означает, что многие процессы могут выполняться одновременно. Наряду с процессами, которые мы запускаем, в системе могут быть и другие пользователи.

Если мы хотим получить снимок того, что в данный момент происходит в системе, нужно использовать программу top.

Давайте разберемся с данной командой

  • Строка 2 Задачи . Обычно в вашей системе в одно и то же время работает довольно много процессов. Большинство из них будут системными процессами.

Другая программа для просмотра процессов называется ps, которая обозначает процессы. При обычном использовании онf покажет вам только процессы, запущенные в вашем текущем терминале. Если мы добавим аргумент aux, он покажет полный системный вид, что немного более полезно.

Это дает довольно мало информации, поэтому люди обычно направляют ее в grep. В итоге, фильтруются только те данные, которые нужны.

Подробнее команду grep мы рассматривали в данной статье.

Читайте также:  Панель задач не пропадает при просмотре видео

Это случается не часто, но когда происходит сбой программы, это может сильно раздражать. Допустим, у нас работает наш браузер, и он неожиданно блокируется. Вы пытаетесь закрыть окно, но ничего не происходит. Не беспокойтесь, мы можем «закрыть» Firefox и снова открыть его. Для начала нам нужно идентифицировать процесс.

Это номер рядом с владельцем процесса, который является ID процесса.

Мы будем использовать это, чтобы определить, какой процесс отменить. Для этого мы используем программу, которая соответственно называется kill .

Иногда запустив kill, процесс будет остановлен и завершен. Когда вы делаете это, kill отправляет процессу сигнал, который просит процесс завершиться. Мы всегда пробуем эту опцию в первую очередь, это лучший вариант. К сожалению, временами это не работает.

Не беспокойтесь, мы снова можем закрыть, но на этот раз подаем сигнал 9.

Блокировка рабочего стола

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

Большую часть времени мы видим только консоль которая является графическим интерфейсом, но мы можем легко добраться до остальных. Если GUI заблокирован, можно добраться до другой консоли и оттуда отменить процесс, вызывающий нарушение. Для переключения между консолями вы используете последовательность клавиш CTRL + ALT + F .

Таким образом, CTRL + ALT F2 приведет вас к консоли, где вы можете запускать команды, как указано выше, чтобы идентифицировать процессы и отменить их.

Затем CTRL + ALT F7 вернет вас в графический интерфейс, чтобы увидеть, было ли это исправлено. Общий подход заключается в том, чтобы сохранить процессы отмены, пока не будет устранена блокировка.

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

Фоновый режим

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

Мы продемонстрируем это с помощью программы sleep . Все, что нужно сделать, — это подождать определенное количество секунд, а затем выйти. Мы также можем использовать программу, называемую jobs, которая перечисляет текущие фоновые задания для нас.

Если вы запустите приведенный выше пример самостоятельно, вы заметите, что терминал ждет 5 секунд, прежде чем снова вывести приглашение. Теперь, если мы запустим ту же команду, но вместо этого добавим амперсанд (&) в конце команды, мы сообщим терминалу запустить этот процесс в фоновом режиме.

На этот раз вы заметите, что он присваивает процессу номер задания. Кроме того, сообщает нам номер и сразу же возвращает нам подсказку. Мы можем продолжать работать, пока процесс работает в фоновом режиме. Если вы подождете 5 секунд, а затем нажмете ENTER, появится сообщение о том, что задание выполнено.

Мы также можем перемещать задания между передним и задним планами. Если вы нажмете CTRL + z, то текущий процесс переднего плана будет приостановлен и перемещен в фон. Затем мы можем использовать программу под названием fg.

Вывод

Мы познакомились со следующими командами Linux

top — просмотр в режиме реального времени данных о процессах, запущенных в системе.

ps — получить список процессов, запущенных в системе.

kill — завершить запуск процесса.

jobs — показать список текущих заданий, работающих в фоновом режиме.

fg — переместить фоновый процесс на передний план.

Ссылка на основную публикацию
Как написать бит для рэпа
Compose music and record vocals in your favorite styles quickly and online! How it works? RapMe is a free online...
Как запустить службу теневого копирования
Теневая копия — технология Microsoft, позволяющая пользователям делать вручную или автоматическую синхронизацию документов, вплоть до заблокированных. Для функционирования службы теневого...
Как запустить стимовскую игру без стима
Как запустить игру без физического носителя, то есть диска, или интернета – актуальный вопрос не только для любителей пиратских сборок,...
Как написать в подслушано анонимно
Часто приходится сталкиваться с ситуацией, когда нужно отправить в группу какой-либо контент, но не хочется открывать свои персональные данные, чтобы...
Adblock detector