Как использовать nohup, чтобы продолжить выполнение команды после выхода пользователя из системы?
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 команда не имеет никакого эффекта в этом случае.
Как я могу исправить эту проблему?
3 ответа
Мне удалось решить эту проблему, изменив способ выхода из терминала оболочки SSH.
Вместо нажатия X кнопку, чтобы закрыть окно PuTTY, я печатаю exit в терминале оболочки SSH для выхода. Теперь процесс может продолжать работать в фоновом режиме после выхода из системы.
Если я нажму X Нажмите кнопку, чтобы закрыть окно, фоновый процесс немедленно прекратится.
Бег:
nohup command ... > file &
оставит stderr и stdin открытым. Вместо этого запустите:
nohup command ... > file 2>&1 <&- &
или же:
nohup command ... > logfile 2> errfile <&- &
который перенаправит стандартный вывод и закроет стандартный ввод.
Имейте в виду, что ваша команда может прерваться, если она не может читать со стандартного ввода.
Если у вас есть 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 и более ранние).