У меня есть пара команд, которые мне нужно выполнить. Эти команды должны постоянно выполняться даже после выхода из интерфейса. Когда у меня есть доступ к графическому интерфейсу Linux, я выполняю что-то вроде:
cd /home/testuser/Scripts*
xterm -hold -T "Background_Script1" -e "service1-start.sh" &
sleep 10
xterm -hold -T "Background_Script2" -e "service2-start.sh" &
Любая помощь будет высоко ценится.
linux
command-line
putty
process
gnu-screen
user3331952
источник
источник
set -m;
делает так, что мои сценарии продолжают работать после того, как я выйду из CentOS и RHEL.Ответы:
Пытаться
nohup гарантирует, что процесс не завершается при закрытии терминала. Символ & отодвигает процесс на задний план.
Надеюсь, это было полезно.
источник
nohup
, это в основном "без зависания" - с nohupHUP
сигнал hangup ( ) игнорируется.Если вы хотите прочитать вывод позже, вы можете использовать
screen
:Это дает вам отдельный терминал, к которому вы можете подключиться позже (
screen -r
) для чтения вывода stdout / stderr.источник
screen -r
), у вас также будут все выходные данные, созданные вашей программой, и в противном случае вы бы «пропустили». Кроме того, экран может делать так много удивительных вещей, как разделенные экраны и т. Д.! :)Другой вариант, если
nohup
команда недоступна, это использовать команду disown .Сначала вы можете просмотреть свои фоновые задачи, запустив
jobs
в терминале. Вы можете получить номер работы оттуда.Теперь просто запустите,
disown %[job number]
и процесс будет отсоединен от текущего терминала и останется в живых, когда вы выйдете из системы.Примечание: убедитесь, что вы задаете правильный вопрос. Если вы используете реальные сервисы, как вы намекнули в своем примере, вы можете посмотреть, как создать демон в выбранной вами ОС. Это сделано для того, чтобы процесс по-прежнему работал после перезагрузки, и чтобы он был более совместимым с другими службами.
Надеюсь это поможет.
источник
Поскольку
screen
уже упоминалось: есть другие терминальные мультиплексоры там. Мнеtmux
очень нравится , см., Например, этот другой вопрос суперпользователя, tmux против экрана для сравнения.источник
Вы также можете попробовать:
setsid
Setsid также работает с фоновыми программами и позволяет им продолжать работать после отключения терминала / ssh.Используйте это так:
Manpage: http://man7.org/linux/man-pages/man2/setsid.2.html
источник