![无法在启动时运行 python 脚本](https://linux22.com/image/98413/%E6%97%A0%E6%B3%95%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E8%BF%90%E8%A1%8C%20python%20%E8%84%9A%E6%9C%AC.png)
在 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/