Nohup over ssh не повернеться


11

Я намагаюся зробити

[me@myPc]$ ssh me@server "nohup myBashScript.sh &"

Моя мета - запустити процес на сервері, а потім негайно повернутися.

Це не працює: робота запускається на сервері, але я все одно отримую висновок на myPc і баш чекати завершення, перш ніж попросити мене про іншу команду.

Чому? Це не повинно! Будь-який спосіб цього уникнути?

  • myPc є RHEL6.2
  • сервер є ubuntu 10.04і
  • обидва пробіги openssh

Відповіді:


12

Поки вхід або вихід залишаються відкритими, ssh буде тримати з'єднання відкритим. Щоб вирішити це, переконайтесь, що вхід і вихід не відкриті.

Наприклад, використовуйте ssh -nта перенаправляйте свій вихід:

ssh -n me@example.com "nohup myscript.sh >/dev/null 2>&1 &"

Що робити, якщо я все-таки хочу myscript.shвидати мені вихід, але сеанс ssh все-таки закінчиться після виконання сценарію? У моєму випадку сам сценарій запускає процес nohup, потім повертається. Я був під враженням, що ssh -Tдопоможе мені це зробити.
Готьє

@Gauthier Тоді просто запустіть сценарій без нохупу.
Майкл Хемптон

Я згоден. Сценарій запускає інші команди з nohup та &, а потім завершується. Але ssh не повертається. Команди, що викликаються у скрипті, перенаправляють stdout у файли. О, але не жорсткіше і stdin, це могло бути чому?
Готьє

Там у вас є! Вхід і вихід повинні бути перенаправлені.
Майкл Хемптон

Що я не розумію, це те, що якщо я фактично увійду в систему і отримаю tty, запустіть скрипт, який запускає команди nohup & команди, то мені дозволяється вийти з сеансу ssh. Він не скаржиться на те, що є відкритий вхід і вихід. Хіба це не те, що ssh -tповинно імітувати?
Готьє
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.