Как обычно люди используют screen:
Источник: оригинал в Telegram
screen
cd /usr/local/sbin
./db_import.sh
И потом закрывают терминал, а скрипт db_import.sh продолжает где-то там шуршать и делать свои делишки.
Потом возвращаются спустя время и делают:
screen -list
3393.pts-3.dev (Attached)
screen -x 3393.pts-3.dev
или
screen -r 3393.pts-3.dev
Убеждаются, что скрипт завершил свою работу, ну и выходят, порой даже не закрывая screen сессию (3393.pts-3.dev).
Чем отличается -r и -x
Подход нормальный, никаких тебе ключей запоминать не нужно и т.п.
Но есть такой вариант:
screen -dmS имя_сессии bash /путь/к/скрипту.sh
Команда выше создаст сессию screen и запустит скрипт в фоновом режиме. А самое главное отпустит терминал и ты сможешь дальше в нём работать.
screen -list список будет пуст.Еще можно так:
screen -X -S "script0$scriptID" stuff "^C"
На закуску.
Когда ты подключился к сессии и у тебя там еще работает скрипт, как не закрывая терминал вернуться в интерактивный режим?
Я раньше просто закрывал окно с терминалом и сейчас вижу что много кто так делает.
Все просто, прожимаем CTRL+A и затем «d». Ты отключаешься от сессии, переходишь в интерактивный режим с терминалом, а скрипт продолжает шуршать в фоне.
А как посмотреть выхлоп скрипта если сессия закрыта?
Добавь в свой скрипт логирование и обработку экспешенов, пусть оно в файлик пишет результаты своей работы. Нахуй тебе через screen потом ебаться все это просматривать.
Буквально вчера увидел, как инженер с утра запустил распаковку базы на сервере, через пару часов у него мигнул интернет, SSH-сессия с сервером превратилась в тыкву! Начинайте сначала!
Если запускаешь на сервере что-то очень долгое и не хочешь быть к этому привязан, используй screen! Это мастхев для подобных процедур. По крайней мере сохранишь время и нервы.
Вот и вся наука. Изучай!








Комментарии