Во время обслуживания сайтов клиентов, а зачастую и при выполнении работ по администрированию сервера, используя удаленный доступ, приходится по несколько часов ждать завершения тех или иных задач откинувшись на спинку кресла. В принципе эта ситуация нормальная, но когда в конце 2-3 часовой работы отваливается сеть, а процессы еще не закончили работать - приходится грязно материться и начинать все заново. Вот и начинаешь задумываться над тем, как избежать такой ситуации. |
Порывшись в интернете нашел ответ на данный вопрос. Вот несколько утилит которые помогут разрешить проблему.
nohup - утилита позволяющая запустить программу независимо от shell.
dtach - еще одна утилита для создания отдельных сессий для каждого приложения.
screen - утилита, являющаяся полноценным оконным менеджером для терминала
tmux - еще один оконный менеджер для терминалов, который является альтернативой screen
Аналогично порывшись в интернете можно найти описание всех их. Для ленивых можно почитать например здесь
h ttp://debiania.blogspot.com/2010/05/nohup-dtach-screen-tmux.html
Для себя выбрал утилиту SCREEN. Про нее и пойдет дальнейшее повествование.
По умолчанию она не установлена в FreeBSD, поэтому ставим ее.
cd /usr/ports/sysutils/screen
make install clean
После установки в каталоге /usr/local/etc появится общесистемный конфигурационный файл screenrc. Если нужно что-бы разные пользователи, могли запускать программу со своими настройками, просто копируем этот файл в домашнюю директорию юзера с именем .screenrc.
Во время работы с утилитой screen, почти все сочетания клавиш работают через комбинацию [ Ctrl+a ], то есть сначала нажимаете ее, а уже затем управляющую комбинацию, например, что-бы получить исчерпывающую информацию по всем сочетаниям клавиш, жмем: [ Ctrl+a, ? ].
Приведу самые мной используемые
с - создать новый экран
p - предыдущий экран
n - следующий экран
d - выйти из утилиты screen
\ - убить (kill) запущенный screen
screen
или
screen -S test
где test - имя сессии придуманное вами
Если утилита SCREEN запущена, то в нее можно войти по команде
screen -rd
Утилита SCREEN может работать до тех пор пока сервер не будет перезагружен. Если такое случится, в системе останутся мертвые экземпляры, ранее работавших SCREEN, о чем мы будем проинформированы следующим образом:
screen -rd
There are
screens on:
48273.ttyp5.hostname (Dead ???)
Remove dead
screens with 'screen -wipe'.
There is no screen to be detached.
От мертвых экземплярова можно избавиться командой
screen -wipe
Коментувати