Страницы

среда, 6 марта 2013 г.

Быстро делаем демон и идем спать

Допустим вам нужно сделать какой-то процесс который отработает один раз и все...процесс работает долго, ждать не хочеться...хочеться спать...
вариант номер один сделать задание cron...самое простое
crontab -e, потом удалить

вариант номер два



nohup /home/user/some_command.pl  & или
          nohup /home/user/some_command.pl > result.txt  & или

И пойти спать.... nohup переопределяет для процесса сигналы отключения терминала и тп..что по сути и происходит когда вы отключаетесь от терминала....запустили и пошли спать...
Третий способ самый интересный и полезный утилита screen
Эта утилита создает консольный терминал, как демон и позволяет к нему подключиться любому количеству пользователей... пример выше тогда будет выглядеть так


screen -e^Ff -S duty-test
создает скрин с именем duty-test   и сразу в него входит...для вас это будет выглядеть как обычная консоль

bogdan@bogdan-Vostro-1015:~
понять что вы на самом деле в скрине , можно следующем способом


bogdan@bogdan-Vostro-1015:~ echo $STY
         5331.duty-test

скрин определяет специальную переменную....дальше запускаем команду


     bogdan@bogdan-Vostro-1015:~ /home/user/some_command.pl
Смотрим за выполнением , когда надоедает выходим из скрина и идем спать..

нажимаем Ctrl-F d ( две последовательности шлем в терминал - Ctrl-F и букву d - аналогия Ctrl-D только для screen ) подробнее про управляющую последовательность лучше почитать в man (русскоязычный доступен здесь ). Самая главная опасность (условно) совместной работы в screen - это то что нажатие системной посылки Ctrl-D прекращает сессию вообще
("выходить" пользователю  необходимо исключительно через Ctrl-F d)
а демон скрина остался работать...убедиться в этом можно следущем образом..
bogdan@bogdan-Vostro-1015:~ screen -lsThere is a screen on:
5331.duty-test (Detached)
подключиться   обратно можно командой выше... А еще можно создать условно общего юзера,
сделать на него sudo для всех пользователей, и из под него запустить скрин....готово общий терминал работы для n пользователей...
Всем удачной ночи































Комментариев нет: