Не удается запустить скрипт python при загрузке

В Fedora у меня есть /etc/rc.local который выглядит так …

 # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi /usr/bin/screen -dmS wixel python "/home/myuser/python-usb-wixel-xdrip/python-usb-wixel.py" exit 0 

Но после того, как я sudo screen -r wixel , sudo screen -r wixel представляет меня. There is no screen to be resumed matching wixel.

Запуск /usr/bin/screen -dmS wixel python "/home/myuser/python-usb-wixel-xdrip/python-usb-wixel.py" запускает мой скрипт, а sudo screen -r wixel следует за его выходом.

Почему мой скрипт не запускается при загрузке?

Я попробовал sudo chmod a+rx /etc/rc.local

Это не указано в вашем описании, но здесь я вижу метку Fedora. Fedora некоторое время использовала systemd , поэтому, если вы ее используете, вам нужно включить службу rc.local.

Для получения дополнительной информации проверьте службу systemd в /usr/lib/systemd/system/rc-local.service .

Ваш скрипт должен перейти в /etc/rc.d/rc.local (строка ExecStart , вместо /etc/rc.local ). Файл должен быть предоставлен пакетом initscripts , но я не нашел его в своей системе. Не бойтесь и не создавайте. Но не забудьте установить правильные разрешения и shebang (например, #!/bin/bash ). Затем вам нужно запустить и включить rc-local.service .

Это должно сработать для вас:

 # as root mv /etc/rc.local /etc/rc.d/rc.local sed -i '1i #!/bin/bash' /etc/rc.d/rc.local chmod 0755 /etc/rc.d/rc.local # this run the script immediately (!) systemctl start rc-local.service # this enables service to run it within boot systemctl enable rc-local.service 

systemd запускает скрипт с параметром start . Это ничего не сломало, но вы можете использовать его в своем скрипте.

Это довольно хорошо для вашего вопроса о rc.local . В любом случае лучшим решением должно быть добавление новой службы systemd. Я слишком ленив, чтобы написать его там, потому что есть несколько руководств в Интернете 🙂 Например: http://www.linuxveda.com/2014/04/28/autostart-process-gnu-screen-systemd/