Иногда требуется, чтобы команда выполнялась, когда вы уже отключились от консоли, то есть в "фоне".
Иногда требуется, чтобы команда продолжала выполняться, когда вы уже отключились от консоли, то есть в "фоне". Для этого существуют оконные менеджеры: tmux или screen. Но есть и другие способы:
Команда "nohup"
[max@jabber ~]# nohup sleep 12345 & [1] 24758 [max@jabber ~]# nohup: ignoring input and appending output to `nohup.out' [max@jabber ~]# exit logout
Входим снова и смотрим на существование процесса через ps:
[max@jabber ~]# ps ax | grep sleep 24758 pts/3 S 0:00 sleep 12345 25066 pts/3 S+ 0:00 grep --colour=auto sleep
Вернуться к команде можно через fg. Если команда давала какой-то вывод, то его можно посомтреть в файле nohup.out, который создается в текущей директории.
Команда "at"
В gentoo linux устанавливается sys-process/at
[max@jabber ~]# echo sleep 12345 | at now +5 minutes
И "sleep" выполнится через 5 минут. Подробнее "at" читайте в этой записе.
Практические применения данным приёмам могут быть самые разные. В случае с "at" можно классически обнулять фаирвол. Или устанавливать одноразовые задачи на какое-то время (одноразовый аналог крона).
Хочу отдельно упомянуть (раз уж чуть выше зашла речь) о командах fg и bg. Отличие bg от nohup - огромное. Самое основное - это то, что выполнение процесса через bg зависит от текущей сессии пользователя. Польза от этих команд также разная, но чаще всего удобно запустить процесс с амперсантом на конце (command &) или запустить и нажать ctrl+z, чтобы "свернуть" процесс, что-то посмотреть и снова "развернуть" при помощи fg. Но при "сворачивании" процесса через ctrl+z в фон, сам процесс перестает выполняться, то есть замараживается, а нужно чтобы он выполнялся. В этом случае "разморозьте" его в фоне командой bg. Вот небольшой пример:
jabber ~ # sleep 123456 ^Z [3]+ Stopped sleep 123456 jabber ~ # bg 3 [3]+ sleep 123456 &
Просмотреть список процессов в "фоне" можно при помощи команды "jobs".
Как это можно использовать? Например, вы вошли на сервер и увидели, что у вас скопились сообщения в очереди. Вы решаете обработать её и вызвали обработку очереди без вывода. "Свернули" процесс, "разморозили" в фоне. Теперь вы можете смотреть лог. Конечно, это никак не сравнится с окнными менеджерами tmux или screen, но иногда закинуьт процесс в фон очень удобно и ускоряет работу в консоли.
Комментарии (0)
Добавление комментариев закрыто.