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


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.


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.