ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

10 минут чтени€

¬ данной статье мы постараемс€ разобрать, как создать, отследить и завершить процесс. ѕосмотрим следующие задачки:

  1. «апуск задачи в активном и фоновом режиме;
  2. «аставить задачу выполн€тс€ после выхода из системы;
  3. ќтслеживать и сортировать активные процессы;
  4. «авершать процессы;

ѕостараемс€ разобрать следующие пон€ти€:

  • Fg (foreground) и bg (background);
  • Nohup (no hang up);
  • Ps - информаци€ об активных процессах;
  • Pstree - дерево процессов;
  • Pgrep - поиск процессов;
  • Pkill - завершение процессов;
  • Top - диспетчер задач;
  • Free - загрузка оперативной пам€ти;
  • Uptime - врем€ и полнота загрузки;
  • Screen - управление сесси€ми.

Ќачнем разбирать данную тему с простой команды.


 оманда sleep

man sleep
man sleep

— помощью данной команды мы можем выставить задержку на определенное врем€, собственно, о чем и написано в справочной статье. ќна обычно пригождаетс€, когда необходимо выполнить какой-то скрипт и компьютер должен немного подождать.

¬ частности, мы можем посмотреть следующий пример:

sleep 1000 - после данной команды, мы можем вводить в консоль различные символы, они будут по€вл€тьс€ на экране но машина и операционна€ система не будет реагировать. ƒл€ того чтобы прервать нажимаем ctrl + c сочетание клавиш.

 огда набираем команду, она начинает работать в активном режиме и занимает консоль, и мы соответственно ничего не можем делать. “ак как компьютер у нас сейчас много задачный, процессор многозадачный, операционна€ система многозадачна€, мы можем запускать какие-то процессы в фоновом режиме. ƒл€ того, чтобы это сделать необходимо набрать команду и в конце поставить знак амперсанда "". “.е. мы получим следующее sleep 1000.

sleep 1000

 ак, только мы написали команду плюс амперсанд и нажали Enter. ћы видим по€вилс€ один процесс, и он бежит в фоновом режиме. ≈сть така€ команда jobs, она показывает выполн€ющиес€ задачи, бегущие процессы.

≈сть така€ команда jobs, она показывает выполн€ющиес€ задачи, бегущие процессы

» вот мы видим, что у нас есть одна выполн€юща€с€ задача sleep на 1000 секунд. ћы можем еще запустить один sleep 999. ѕрактического эффекта нету, данный пример необходим дл€ нагл€дности процессов. ѕо€вилс€ еще один процесс с отличным от прошлого id.

ѕо€вилс€ еще один процесс с отличным от прошлого id

»того у нас 2 процесса. “еперь представим, что нам необходимо поработать с сервером, но в насто€щий момент необходимо обновить, например, репозиторий или пакеты. ћы запускаем процесс обновлени€ с амперсандом и продолжаем работу в обычном режиме, консоль стандартного вывода у нас свободна. Ќо если нам необходимо вернутс€ к процессу, который бежит в фоне. ћы можем использовать команду fg и номер процесса, например, 1 или 2. “ак же сданной командой мы можем использовать PID, т.е. уникальный идентификатор процесса.

fg

“аким образом мы можем видеть, что мы оказались внутри указанного процесса. ƒл€ выхода нажимаем ctrl+z. » теперь данна€ задача будет остановлена. ¬ чем можно убедитс€, использу€ команду job. » соответственно, чтобы запустить процесс используем команду bg #процесса.

bg #процесса

Ќебольшой итог: ≈сть команда, показывающа€ процессы jobs. » команды fg и bg, которые позвол€ют отправить процессы в фоновый режим и вернуть обратно.


 оманда PS

man ps
man p

—огласно описанию, данна€ команда показывает снапшот текущих процессов. ” данной команды очень много ключей, но очень часть данна€ команда используетс€ в таком виде ps aux. Ёто означает вывести результат по всем пользовател€м, все процессы, даже запущенные вне нашего терминала. Ёто помогает, когда у нас много пользовательска€ среда, или мы запустили от имени суперпользовател€, а сами переключились на текущего. ¬ыгл€дит данна€ картинка примерно так:

запустили от имени суперпользовател€

Ќа данной картинке мы можем увидеть от имени какого пользовател€ процессы выполн€ютс€. Ёто снимок процессов системы, статический снапшот. ќн выполнен на тот момент, когда мы подали команду на терминал. ¬низу на картинке, можно увидеть наши sleep, значит они на момент ввода команды бежали в фоновом режиме.

 роме того, мы можем запускать данную команду, через pipeline. Ќапример: ps aux | grep sleep ps aux | grep sleep

 оманда grep - отсортировать. » в данном случае мы увидим только два наших процесса.

ћы так же можем убить процессы. ѕроцессы убиваютс€ командой kill PID (т.е по его ID).

kill PID

¬от таким образом мы можем завершить процесс. «апустим еще несколько процессов. “еперь мы можем их завершить массово с использованием их сортировки killall sleep например.

killall sleep

ћы можем увидеть, что процессы завершились. ƒанна€ команда может быть полезно при зависании какого ни будь приложени€. ƒействие данной команды работает, только в пределах пользовател€ от которого данную команду запустили. ≈сли выполн€ть данную команду от root. “о данна€ команда завершит процессы у всех пользователей с именем sleep.

≈сли мы создадим процесс, а затем выйдем из терминала (команда exit). «аход€ обратно выполн€€ ps aux мы так же в фоне увидим, что процесс выполн€етс€. ј набрав jobs мы не увидим данный процесс. Ёто происходит потому, что команда jobs показывает только текущие процессы запущенные из данной консоли.

≈сть такой тонкий нюанс. ≈сли мы запускаем в нашем сеансе процессы, бэкграунд или активный режим, при завершении сессии наши процессы завершаютс€. ѕолучаетс€ следующее, при подключении к серверу, через ssh все наши процессы запущенные при обрыве сессии прервутс€. Ќапример, мы запустим процесс обновлени€ системы и завершим нашу сессию процесс обновлени€ прерветс€. „тобы у нас процессы не завершались при выходе из системы пользовател€, есть команда nohup. »спользуем ее.

nohup sleep 10000

¬о-первых, данна€ команда позвол€ет заменить стандартный вывод на вывод в файл и во -вторых команда будет выполн€тс€, пока будет запущенна операционна€ система. ¬не зависимости от наличи€ пользовател€ в системе, который запустил. ≈сть достаточно много нюансов. ћожно логинитс€, разлогиниватс€ и попадать в тот же сеанс, а в современных Ubuntu уже практически нет необходимости использовать данную команду. Ќо все же, чтобы гарантированно процесс работал необходимо использовать данную команду.

nohup sleep 10000

“еперь можно посмотреть команду pstree.

ƒанна€ команда позвол€ет посмотреть все процессы в иерархическом виде дерева.

pstree

Ќа картинке, четко виден родительский процесс systemd, который запускает все остальные процессы. Ќапример sshd - подключение к серверу, которое запускает bash - интерпретатор, далее запускаетс€ sudo , su и pstree в самом конце.

≈сть еще интересные команды pgrep и pkill. ≈сть просто запустить pgrep то данна€ команда ничего не выдаст. ј если в совокупности с ключами и названием процесса, то данна€ команда вернет идентификационный номер данного процесса. ћы так же можем добавить ключ -l, то команда вернет и название процессов. ” нее много других ключей. ћожно, например, команде сказать pgrep -u root -l, т.е показать все процессы пользовател€ root.

—ледовательно, команда pkill позвол€ет убить все эти процессы. Ќапример: pkill sleep. ћы убили все процессы sleep.

pkill sleep

¬ реальной же ситуации, мы обычно используем команду top. ƒанна€ команда позвол€ет наблюдать и не только в режиме реального времени за процессами.

top

ѕосмотрим на данные выводимые данной утилитой. ћы видим, что по умолчанию данна€ утилита сортирует по загрузке процессора. ћы можем перейти в режим помощи нажав клавишу "h".  лючей и опций у данной утилиты достаточно много. ћожно воспользоватьс€ клавишами """", дл€ переключени€ сортировки, например на сортировку по загруженности оперативной пам€ти. ¬ данной утилите мы можем сказать, что необходимо завершить той или иной процесс. ѕрактически он аналогичен ƒиспетчеру задач в операционной системе windows. ƒл€ того, чтобы убить процесс нажимаем клавишу "k" и система ждет ввода PID процесса. ѕо умолчанию он берет тот PID, который находитс€ в самом верху. “.е. по факту самый загружающий процесс систему. ≈сли у нас, что-то висит, то достаточно удобно завершить такой процесс.

ѕосле ввода PID система запросит, какой сигнал ей необходимо послать по умолчанию сигнал номер 15 или sigterm - т.е. сигнал завершени€ работы в м€гком режиме. ≈сли мы хотим использовать более жесткий вариант отправл€ем цифру 9, или sigkill. ¬ таком случае операционна€ система, очень жестко потушит процесс наплевав на зависимые процессы от данного и те процессы от которых зависит данный процесс.


 оманда uptime

man uptime
man uptime

ƒанна€ команда показывает, как долго у нас запущена система. —ам по себе эти данные нам ничего не дают. ƒанна€ команда. полезна в контексте, если нам передали сервера, и мы видим у них очень большой аптайм, следовательно, сервера не обновл€лись и не перезагружались.

ƒанна€ команда полезна помимо параметра сколько запущенна системаданна€ команда показывает общую загрузку системы. Ёто показывают три цифры в выводе данной команды.

три цифры в выводе данной команды

“ам достаточно сложна€ формула по которой рассчитываетс€ данный параметра, во внимание принимаетс€ загрузка ÷ѕ, жестких дисков, оперативной пам€ти. ѕерва€ цифра - это загрузка в минуту, втора€ цифра - это загрузка в последние п€ть минут и треть€ цифра - это загрузка в последние 15 минут. »сход€ из последней картинки, цифры примерно одинаковые, а значит нагрузка равномерна. ≈сли цифры скачут, значит необходимо анализировать, особенно если на сервере есть просадка по производительности.


 оманда free

man free

man free

ƒанна€ команда показывает свободное и используемое количество пам€ти в системе. » в данном случае, так же, как и в windows task manager, под пам€тью понимаетс€ оперативна€ пам€ть, так и файл подкачки (windows), раздел подкачки (swap Linux).

swap Linux

Swap раздел, это раздел системы используемый дл€ ее нужд если системе не хватает оперативной пам€ти. Ёто раздел на жестком диске, который используетс€ в качестве оперативной пам€ти. Ќо жесткий диск значительно медленней оперативной пам€ти, поэтому сначала заполн€етс€ оперативна€ пам€ть, а только потом используетс€ раздел подкачки (swap).


 оманда screen

man screen
man screen

ќна есть не во всех дистрибутивах по умолчанию. Ёта команда, котора€ позвол€ет создать типа оконного менеджера. Ёто удобно, когда подключаешьс€ по ssh и получаешь, как будто бы несколько окон в пределах одного терминала. ѕон€тно, что современные ssh клиенты позвол€ют открыть сколько угодно вкладок и работать с ними параллельно.

«апускаем screen. ѕереходим во внутрь screen, запускаем какую-нибудь команду, например, ping ya.ru. ƒалее нажимаем ctrl+a и затем d и получаем:

ping ya.ru

ѕерва€ команда позвол€ет находитс€ в текущем окне, а втора€ клавиша d позвол€ет свернуть текущий скрин. “еперь можно закрывать терминал, вылогиниватьс€ из консоли. ѕроцесс запущенный в скрине будет работать. ƒл€ того, чтобы восстановить окно с процессом достаточно ввести screen -r и мы вернемс€ к бегущему процессу. ƒл€ того, чтобы завершить screen необходимо внутри ввести exit.

≈сли у нас есть потребность запустить несколько окон, то можно это сделать следующим образом:

Screen -S yandex ping ya.ru, screen -S rambler ping r0.ru

√де yandex и rambler - это просто названи€ окон (alias)

ѕросмотреть бегущие окна:

screen - ls

„тобы вернутс€ к нужному окну вводим screen -r alias