Linux команда запустить процесс

Linux команда запустить процесс

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

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

batch первая команда . . . последняя команда

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

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

$ batch grep dollar * > dol.file  job 155223141.b at Sun Dec 11:14:54 1989 $

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

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

at time первая команда . . . последняя команда

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

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

$ at 8:15am Feb 27 banner happy birthday | mail emily  $

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

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

$ at -lCW user mylogin 168302040.a at Sat Nov 25 13:00:00 1989 user mylogin 453400603.a at Fri Feb 24 08:15:00 1989 $

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

at 08:15am Feb 27 at 5:14pm Sept 24

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

Читайте также:  Install dnf oracle linux

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

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

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

$ grep word * > temp 28223 $ $ ps PID TTY TIME COMD 28124 tty10 0:00 sh 28223 tty10 0:04 grep 28224 tty10 0:04 ps $

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

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

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

Команда kill завершает активные процессы в фоновом режиме и команда stop приостанавливает временно процессы. Общий формат этих команд:

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

$ kill 28223 28223 Terminated $

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

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

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

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

Читайте также:  Какие есть виды линукса

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

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

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

nohup grep word * > word.list &

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

Источник

Команды для управления процессами в Linux

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

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

В Linux процессы могут быть двух типов:

  • Процессы переднего плана — зависят от ввода пользователя. Они также называются интерактивными процессами.
  • Фоновые процессы — работают независимо от пользователя. Называются неинтерактивными или автоматическими процессами.

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

Процесс в Linux после его создания и до завершения может проходить через разные состояния, а именно:

  • Running (выполняется) — процесс в состоянии выполнения, то есть он запущен или готов к запуску.
  • Sleeping (спящий) — процесс находится в спящем состоянии, пока ожидает доступного ресурса:
    • Interruptible sleep (прерывистый сон) — процесс в состоянии прерывистого сна может просыпаться для обработки сигналов.
    • Uninterruptible sleep (Непрерывный сон) — процесс не будет просыпаться для обработки сигналов.

    Команды для управления процессами

    В Linux доступны две команды для отслеживания запущенных процессов — Top и Ps.

    1: Команда top

    Для отслеживания запущенных процессов вы можете выполнить команду top:

    Эта команда выводит список процессов, которые работают в реальном времени, а также сколько они занимают памяти и CPU. Давайте подробнее разберем ее вывод:

    • PID: уникальный идентификатор процесса, присвоенный каждому процессу.
    • User: имя владельца процесса.
    • PR: приоритет, присвоенный процессу при планировании.
    • NI: значение ‘nice’ процесса.
    • VIRT: объем виртуальной памяти, которую занимает процесс.
    • RES: объем физической памяти, используемой процессом.
    • SHR: объем памяти, разделяемой с другими процессами.
    • S: состояние процесса:
      • “D” = непрерывный сон
      • “R” = запущен
      • “S” = спящий
      • “T” = отслежен или остановлен
      • “Z” = зомби

      Перемещаться вверх и вниз по списку можно клавишами со стрелками вверх/вниз. Для выхода из команды top нажмите q. Чтобы завершить процесс, выделите его клавишами со стрелками и нажмите ‘k’.

      В качестве альтернативы вы также можете выполнить команду kill, которую мы рассмотрим позже.

      2: Команда ps

      ps — это сокращение от “Process Status”. Она выводит запущенные в данный момент процессы. Но, в отличие от команды top, результат не генерируется в реальном времени.

      Рассмотрим ее вывод подробнее:

      • PID — идентификатор процесса.
      • TTY — тип терминала.
      • TIME — общее время работы процесса.
      • CMD — имя команды, которая запускает процесс.

      Для вывода дополнительной информации с помощью команды ps добавьте параметр -u:

      На скриншоте вы можете увидеть следующие данные:

      • %CPU — количество вычислительной мощности, которую занимает процесс.
      • %MEM — объем памяти, занимаемой процессом.
      • STAT — состояние процесса.

      Хотя команда ps выводит только запущенные в данный момент процессы, с помощью нее можно посмотреть список всех процессов:

      Эта команда выводит список даже тех процессов, которые в данный момент не запущены.

      3: Остановка процесса

      Чтобы остановить процесс в Linux, выполните команду “kill”. kill отправляет сигнал процессу.

      Есть разные типы сигналов, которые можно отправлять. Однако самый частый — “kill -9”, который является “SIGKILL”.

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

      Сигнал по умолчанию — 15, то есть SIGTERM. Это означает, что если вы просто выполняете команду kill без номера, она отправляет сигнал SIGTERM.

      Синтаксис для остановки процесса:

      В качестве альтернативы вы также можете выполнить:

      Эта команда отправит процессу сигнал “SIGKILL”. Ее следует выполнять в случае, если процесс игнорирует обычный запрос на остановку.

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

      В Linux между процессами можно расставлять приоритеты. Значение приоритета для процесса называется ‘Niceness’, оно может варьироваться от -20 до 19. 0 — значение по умолчанию.

      Четвертый столбец в выводе команды top — это столбец для значения niceness.

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

      $ nice -n [value] [process name]

      Для изменения значения nice уже запущенного процесса выполните:

      Заключение

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

      Читайте также:

      Источник

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