У меня есть скрипт, и я хочу, чтобы он работал в фоновом режиме после загрузки. Поэтому я добавил приведенную ниже команду в rc.local. Однако это не работает.
sudo -iu executerroot screen -dmS test bash -c "bash /home/pi/FileServer/Run; exec bash"
Также я пробовал команды на сайте https://askubuntu.com/questions/261899/run-a-screen-session-on-boot-from-rc-local, но у меня никто не работал. Если я выполню
sudo -iu executerroot screen -dmS test bash -c "bash /home/pi/FileServer/Run; exec bash"
Я получаю это:
bash: /home/pi/FileServer/Run/: No such file or directory
пока это не работает для реальных файлов. Когда я набираю «screen -r», я получаю просто пустой экран bash, если файл существует.
Я не могу понять, почему это не работает. Пожалуйста, объясните, почему это происходит и как я могу решить эту проблему. Спасибо...
Решение проблемы
Сегодня, спустя годы, у меня возникла похожая проблема. На этот раз я пытался вызвать экранную программу внутри crontab. Я понял, что мне нужны абсолютные пути и правильная версия bash crontab, как и в самом скрипте.
Я думаю, что я сделал подобную ошибку 6 лет назад. Я сегодня написал аналогичную программу, возможно, из-за разных переменных среды скрипт не смог найти программы (в моем случае openvpn). Даже program &> output.txtне работал. Проблема заключалась в том, что другая версия bash не поддерживала перенаправление вывода. Раньше я /usr/sbin/bash -c "command"справлялся с этим. Кроме того, openvpnв этой crontabсреде нет пути, поэтому мне пришлось называть его абсолютным путем (например, /usr/sbin/openvpn). Тогда это сработало.
Комментариев нет:
Отправить комментарий