nohup <command> <arg> &
Когда я подключаюсь по SSH к серверу Linux, если я хочу запустить команду и убедиться, что она продолжит работать в фоновом режиме после выхода из SSH, я буду использовать указанные выше команды.
Недавно я использую стек серверов под названием Стек Bitnami Node.js. Это автономный пакет программного обеспечения. Eсть node
двоичный файл в папке bin в каталоге установки.
В командной строке я могу использовать node
команда для запуска моих JS-программ: node <js_program.js>
. Нет проблем.
Но я хотел бы продолжить запуск программы после выхода из SSH. Когда я бегу nohup <installation_dir>/nodejs/bin/node <js_program.js> > <stdout.out> &
, программа будет работать в фоновом режиме. Но когда я выхожу из SSH, программа также немедленно завершается. Похоже, что nohup
в этом случае команда не действует.
Как я могу исправить эту проблему?
Бег:
nohup command ... > file &
оставит открытыми stderr и stdin. Вместо этого запустите:
nohup command ... > file 2>&1 <&- &
или:
nohup command ... > logfile 2> errfile <&- &
который перенаправит stdout и закроет stdin.
Имейте в виду, что ваша команда может прерваться, если она не может читать из стандартного ввода.
Если у вас есть at
пакет установлен, и вам не будет отказано (либо напрямую через /etc/at.deny
, или неявно через /etc/at.allow
) от его использования, попробуйте использовать любой из:
echo "<installation_dir>/nodejs/bin/node <js_program.js> > <stdout.out>" | at now
или:
at now
и укажите свою команду в at>
Подсказка.
Это должно запланировать немедленный запуск команды через at
демон.
Вот как я традиционно "подражал" nohup
на системах со сломанными nohup
реализации (например, AIX 5.3 и более ранние версии).
Мне удалось решить эту проблему, изменив способ выхода из терминала оболочки SSH.
Вместо того, чтобы нажимать X
кнопку, чтобы закрыть окно PuTTY, я набираю exit
в терминале оболочки SSH для выхода. Теперь процесс может продолжать работать в фоновом режиме после выхода из системы.
Если я нажму X
кнопку, чтобы закрыть окно, фоновый процесс немедленно прекратится.