nohup
Итак, начнём с самого простого — nohup
. Утилита эта принадлежит пакету coreutils
, а задача её сводится к тому, чтобы запустить какую-то программу независимо от шелла, перенаправив стандартный ввод на /dev/null
, а стандартный вывод — в nohup.out
(а если это невозможно — в $HOME/nohup.out
). Если хотите, чтобы вывод писался в другой файл, используйте перенаправление:$ nohup aptitude -y upgrade >upgrade.txt &
Точно такой же трюк можно проделать и со вводом.Обратите внимание на то, что сама по себе nohup не отправляет команду в фон — она нужна скорей для того, чтобы обезопасить себя от неожиданных обрывов связи с терминалом (например, из-за разрыва SSH-соединения или падения иксов :) Поэтому в конец команды можно дописать амперсанд, как сделано в примере выше.
dtach
Следующая рассматриваемая программа — dtach
— не намного более сложна. В её man
-странице написано, что «dtach
is a program that emulates the detach feature of screen
», т.е. dtach
занимается эмулированием одной-единственной фичи скрина, а именно — созданием отдельных сессий для каждого приложения. Весь смысл в том, чтобы запустить программу под dtach
'ем, а потом подключаться к ней, когда необходимо.Хорошим примером применения данной программы может служить консольный клиент
rtorrent
: держать ради него постоянно открытый терминал попросту неудобно, а вот запустить приложение под dtach
'ем и забыть — это запросто. А когда мне захочется посмотреть рейтинг какого-то торрента или добавить новый, я просто подключусь к уже существующей сессии и выполню все необходимые действия.Интересной особенностью
dtach
является то, что он требует явно указать, куда помещать сокет, с помощью которого идентифицируется сессия. Кстати говоря, доступ к сессии целиком и полностью определяется доступом к сокету, так что если вам хочется показать всему народу на мейнфрейме, как круто вы кодите в emacs
'е — запускайте dtach
, ставьте права на сокет равными 644
и хвастайтесь на здоровье :)Специально для тех, кто не любит читать маны — маленький гайд.
Создать сессию с
rtorrent
'ом внутри (одноимённый сокет поместить в домашнюю директорию):dtach -c $HOME/rtorrent rtorrent
Насмотрелись? Нажмите Ctrl+\
, и вы покинете dtach
. Чтобы заново подключиться к существующей сессии, наберите:dtach -a $HOME/rtorrent
Собственно, на этом гайд заканчивается — треть возможностей я уже пересказал, а за остальными добро пожаловать в
man
-страницу (она, кстати, совсем простая и крохотная — по крайней мере, по сравнению со screen
'овской :).Ну что же, простые решения мы рассмотрели — настало время гигантов. Начнём, пожалуй, со
screen
'а.GNU screen
Эта утилита позволяет пользователю создавать сессии, в каждой из которых может быть по нескольку окон, в каждом из которых выполняется отдельное приложение. Окнами можно управлять, причём не только открывать и закрывать, но и располагать их на экране — в частности, поддерживается горизонтальный и вертикальный сплиттинг. Фактически это целый оконным менеджер в консоли.mutt
, запущенный в screen
'еВсех возможностей
screen
'а и не пересчитать — это крупный (чтобы не сказать монструозный) проект. В рамках же данной статьи я зацеплю только основы — а именно создание сессий и управление окнами.Итак, для создания новой сессии вам достаточно просто запустить
screen
:screen
Но т.к. в этом случае сессия получит невразумительное имя вида PID.номер_терминала.имя_машины
(например, 21701.pts-2.speedy
), то полезным будет указать ключик -S
:screen -S test
Сразу после запуска вам покажут краткую справку по
screen
. Она вам быстро надоест, так что советую прописать в ~/.screenrc
такую строку:startup_message off
После справки вы увидите шелл, откуда можно запускать любое приложение. Чтобы отключиться от
screen
'а, нужно последовательно нажать две комбинации клавиш — сначала Ctrl+a
, а потом Ctrl+d
.Сразу же сделаю маленькую ремарку касательно хоткеев:
Ctrl+a
означает, что следующий хоткей будет передан screen
'у, а не программе, запущенной в текущем окне. Если хотите передать Ctrl+a
именно программе, нажмите эту комбинацию дважды.Итак, вы отключились от сессии. Чтобы подключиться снова, наберите:
screen -r test
Список доступных сессий можно посмотреть с помощью следующей команды:screen -ls
Теперь перейдём к окнам. Сразу скажу, что не буду затрагивать разбиение экрана на несколько частей, передвижение и ресайз окон — я в этом пока что не разобрался, да и особой потребности нет, ведь всё работает и так.
Новое окно создаётся с помощью комбинации
Ctrl+a c
. Чтобы переключиться на какое-то другое окно, у вас есть три пути:Ctrl+a n
переключит вас на следующее окно,Ctrl+a p
— на предыдущееCtrl+a "
покажет вам список всех доступных окон; вы можете выбирать окно с помощью стрелочек (Up/Down
) или указать его номер, а потом перейти на него, нажавEnter
- если вы помните номер окна, вы можете нажать
Ctrl+a номер
и сразу перепрыгнуть туда
И последняя фича, касающаяся окон — их переименование: нажмите Ctrl+a A и наберите новое имя окна. Задав окнам имена, вы упростите навигацию по вышеупомянутому списку.
Ну что же, на этом ликбез по
screen
'у считаю оконченным — всё остальное вы можете прочесть в мане и разнообразных howto/manual/tutorial.tmux
Наконец, завершающий этап нашего разговора — tmux
. Он разрабатывался как альтернатива screen
'у, лицензированная под BSD. Возможности у tmux
'а примерно такие же, как и у конкурента от GNU — программа умеет создавать отдельные сессии, в каждой из которых может быть произвольное количество окон с отдельными программами. Дабы не растекаться мыслью по древу, перейдём сразу к практике.mutt
в tmux
'еИтак, новая сессия создаётся так же, как и в
screen
'е, т.е. простым запуском tmux
'а:tmux
К сожалению, именовать можно только сокеты, а сами сессии задаются номерами. Просмотреть доступные сессии можно командой:tmux ls
а подключиться к одной из них — вот так:tmux attach номер
Отключится же от сессии можно комбинацией Ctrl+b d
.Поехали дальше. Создать окно можно с помощью
Ctrl+b c
, переключиться на следующее — Ctrl+b n
, на предыдущее — Ctrl+b p
. Можно переключаться и как в screen
'е — Ctr+b номер
. Хоткея для списка окон нету, да он и не нужен — он успешно заменён inline-списком внизу страницы. Переименование окна осуществляется с помощью Ctrl+b ,
.Собственно, на этом рассказ о
tmux
'е можно завершить — основы я дал, а всё остальное вы и сами можете выучить ;)Такие дела — не одним шеллом богаты :) Спасибо Павлу Вьязовому за подсказку касательно
tmux
— автор, к своему стыду, об этой программе только слышал, но никогда не пробовал. Теперь же мой вердикт — она выглядит проще и понятней screen
'а :)Всем удачи и — до встречи!
Копируете статью — поставьте ссылку!
8 комментариев:
Про tmux очень мало. Собственно, даже не написано в чём его плюсы перед screen'ом, а они есть, и не мало =]
кто про что, а я опять о своём - я так и не понял в чем принципиальное отличие тмукса от скрина, ну кроме лицензии.
Если к скрину я уже привык и пользую его впостоянку то тмукс даже поплотнее попробывать лень(подгонка конфигов и изучение) ибо оторваться от скрина в процессе всё же не получится. Вот и жду кто же напишет знатное сравнение с плюсами и минусами обоих...
на первый взгляд у тмукс лучше с utf - но это только в описаниях, на практике чего-то я этого "лучше" не заметил - скорее даже наоборот(хотя может чего настроить надо было?)...
2 bosha:
Дык это, я с tmux познакомился только когда сел статью писать :) А вот screen я уже некоторое время юзаю (правда, там мои познания тоже не очень глубоки).
Кстати, ты обещал статью о tmux — а где она?
2 muhas:
я, к сожалению, не в состоянии расписать сравнение tmux и screen, т.к. ни тем, ни другим достаточно хорошо не владею.
2Minoru
Да, я помню что обещал) У меня экзаменов куча, поэтому я не успел дописать. Планировал на следующий день после твоего предыдущего поста, но не срослось..
2muhas
Подожди чуть чуть. Я допишу на днях пост про tmux)
> экзаменов куча
Помнится, anjolio, автор Linux is Easy, сказал, что именно во время сессии студентов тянет поэкспериментировать с Линуксом :) Тогда не поверил, а сейчас вот постоянно убеждаюсь — таки да, когда по учёбе завал, так и тянет что-то поковырять и поразбираться.
@bosha а у тебя как со скрином? а то просто получается как и муска с крысоядом - те у кого есть желание написать знают либо одно либо другое, но никак не вместе, так что какого-то сравнения не получается, а на базовом уровне монопенисуально...
@muhas Два года использования скрина достаточно? =]
Я кстати, свалил на tmux. Он мне кажется более удобным && фичастным =)
@Minoru
Я бы не сказал. Мне не до постов сейчас. Я этот пост откладывал уже около месяца..
Кстати пост таки дописал - http://the-bosha.ru/2010/06/01/terminal-window-manager-tmux/
> Хоткея для списка окон нету...
Ctrl + b, w
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.