无法在启动时运行 python 脚本

无法在启动时运行 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呈现给我的是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

答案1

您的描述中没有指定,但我在这里发现了 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/

相关内容