Поддерживайте работоспособность программы после закрытия консоли, после запуска программы [дубликат]

8

Возможный дубликат:
Как полностью отключить процесс от терминала?

У меня есть программа, работающая в консоли Unix на удаленном компьютере Unix. Я (тупо) не запускал его с помощью nohup &, и теперь мне нужно закрыть локальную консоль.

Есть ли способ, чтобы он продолжал работать удаленно после закрытия локальной консоли?

Траун
источник

Ответы:

12

Если ваша оболочка есть bash, их можно использовать disown. Ctrl-Z, чтобы приостановить процесс, а затем disown -hзаставить его не получать SIGHUP.

Дуглас Лидер
источник
Гениальное решение. Это сработало :-)
Thrawn
3
Просто любопытно: так как процесс приостановлен, не должно ли это в конечном итоге сопровождаться bgили что-то подобное? Или disown -hвозобновить это тоже?
Арджан
Будет ли это работать, если процесс работает внутри screen? Я хотел бы продолжить процесс в моем обычном режиме xterm.
tjt263
IIRC однажды отрекся от него, он не будет подключен ни к одному терминалу
Дуглас Лидер
5

На Solaris 9 вы можете использовать nohup -p <pid>nohup запущенного процесса. Вот интересное объяснение реализации. Я не знаю, было ли это реализовано в других Unices.

coneslayer
источник
nohup: неверный параметр - p Не работает на gentoo, ubuntu или fedora (юниксы, на которых я это пробовал), но, тем не менее, спасибо :-) Приятно знать, что в Solaris есть.
Траун
2

Ctrl-Z, чтобы приостановить процесс, затем bgзаставить программу перейти в фоновый режим и продолжить работу до ее завершения.

Матрица Крот
источник
Проблема в том, что если я закрою консоль, фоновые процессы также будут остановлены. Мне нужно что-то, что отсоединяет процесс от консоли, как это делает nohup, но после запуска процесса :-)
Thrawn
И я не думаю, что «nohup bg &» тоже сработает :-(
Thrawn
1
Я попробовал его на одной из моих систем, и он продолжал работать нормально, когда я вышел из системы (просто используется du / >> tempв качестве тестовой программы), но я понимаю, что колеблюсь, если вы не хотите потерять программу или ее результаты.
Матрица Крот
2

Если вы можете позволить себе остановить программу и перезапустить ее перед выходом из системы, остановите ее и перезапустите через экран , который является обязательным для всех, кто использует удаленные подключения к хостам Unix.

Компьютерщик
источник
1
Я думаю, что главная проблема заключается именно в том, что он хотел бы не останавливать программу.
Gnoupi
1
Да, я хотел бы, чтобы программа не была остановлена ​​:-)
Thrawn
Я очень рекомендую screen для будущего использования в такой ситуации (у меня почти всегда есть сеанс экрана, работающий в любой системе, в которой у меня есть o).
Матрица Крот
1
Несколько лет спустя, я понял, что я был дураком, чтобы не использовать экран :-)
Thrawn