我有一个问题,关于如何在启动完成后立即启动用python编写的应用程序。此应用程序需要以完全权限运行,因此不需要密码,因为它有两个使用sudo运行的命令。
如果应用程序关闭,我还需要它以相同的权限重新启动应用程序。
我做过类似的事情,但从未一起做过。例如,在启动时启动。我将抛出一个简短的脚本,该脚本在另一个目录init.d目录中调用我想要的应用程序。然后通过执行“ update-rc.d app defaults”,它将作为Ubuntu的启动脚本的一部分自动启动
如果它使另一个简单的脚本崩溃,则重新启动程序
#!/usr/bin/python
from subprocess import Popen
import sys
filename = sys.argv[1]
while True:
print("\nStarting " + filename)
p = Popen("python " + filename, shell=True)
p.wait()
完成工作。我可以在文件名中插入应用程序名称,因此在调用它时不必提供它作为参数的一部分。
我的主要问题是我正在运行的应用程序需要在根环境中运行,在引导时自动启动,并在其关闭时重新启动。
有什么建议?
因此,在收到格伦·杰克曼(Glenn Jackman)的建议后,我开始花更多的时间来研究新贵/系统化公司。我最终查看了systemd,并弄清了我所寻找的许多方面。
关注的问题之一是,到目前为止,我需要在根环境中运行该软件,因为我使用的某些供应商软件都需要它。看来,当您使用systemd设置服务时,所有内容都以root特权运行。这样就解决了我的问题之一。
就启动时启动和管理软件的关闭而言,它是通过一个非常简单的单位文件来处理的,该文件位于/lib/systemd/system/app.service中
[Unit]
Description=this does something
WantedBy=multi-user.target
[Service]
exec executes my app
Restart
RestartSec
[Install]
wantedBy=multi-user.target
接下来,我通过使用systemctl启用了新服务
sudo systemctl enable app.service
sudo systemctl daemon.reload
sudo systemctl start app.service
这启用了启动时的启动功能,并立即对其进行了测试。
再次感谢格伦为我指出正确的方向。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句