nohup не будет отображать следующее приглашение в сеансе SSH

Aug 20 2020

Предположим, что я подключен через SSH в удаленной системе Ubuntu. Я хочу выполнить там сценарий, используя его nohupв случае потенциального разрыва соединения и перенаправив его журнал в файл. Я запускаю команду

nohup bash myscript.sh > log.txt &

Затем терминал распечатывает PID скрипта и сообщение:

nohup игнорирует ввод и перенаправляет stderr на stdout

Курсор там зависает, и я не могу выполнять другие команды, если не выйду из сеанса SSH с помощью Ctrl+ Dи повторно зарегистрируюсь. Я бы предпочел, чтобы сеанс SSH оставался открытым и переходил к следующему запросу терминала без необходимости повторного входа. Есть ли способ добиться этого?

Ответы

1 roaima Aug 21 2020 at 03:39

Эта команда работает в фоновом режиме, как и следовало ожидать. Однако в этом конкретном случае существует состояние гонки, когда выходное сообщение записывается частично после приглашения оболочки.

Визуальный результат - либо приглашение оболочки предшествует nohupсообщению, либо оно полностью перезаписывается.

Практический результат состоит в том, что, поскольку оболочка записала свое приглашение, она готова к следующей команде. Вы можете нажать Enter, чтобы сгенерировать новое приглашение, или в любом случае просто введите следующую команду.