Почему мой процесс завершается после выхода из системы, несмотря на nohup и disown?

Команда

ssh user@host echo $PATH

будет выполнять echoна удаленном хосте с любым значением $PATHлокально, поскольку переменная задается в командной строке без кавычек.

Чтобы получить удаленный путь, убедитесь, что локальная оболочка не расширяет переменную:

ssh user@host 'echo $PATH'

Одинарные кавычки вокруг команды предотвращают расширение локальной оболочки $PATH.

0
08.07.2020, 19:18
1 ответ

Поскольку tmux или screen не подходят, я бы посоветовал вам использовать для этого systemd. Для вашего примера вы должны создать файл (как sudo )с вашим любимым редактором (nano, vim и т. д. ), например:

sudo nano /etc/systemd/system/myexecuteable.service

Он должен содержать как минимум следующее:

[Unit]
Description=start my executable after multi-user target

[Service]
Type=simple
ExecStart=/path/to/my/executable

[Install]
WantedBy=multi-user.target

Теперь у вас есть две возможности.

  1. Исполняемый файл должен запускаться при каждом запуске системы. Затем вы должны ввестиsudo systemctl enable myexecutable.service
  2. Вы хотите запустить его вручную. Затем введитеsudo systemctl start myexecutable.service

В первом случае вам, возможно, придется дополнительно ввести команду «systemctl start» для проверки, поскольку «enable» не означает «старт»

Эта служба будет работать, даже если вы покинете сеанс. Если этот исполняемый файл имеет некоторый вывод (, используйте «логгер для этого в файле bash ), вы можете проверить его в любое время, используяjournalctl -u myexecutable.service

0
18.03.2021, 23:21

Теги

Похожие вопросы