我只是想守护这个简单的 python 脚本:
#!/usr/bin/python3
print('hello')
Run Code Online (Sandbox Code Playgroud)
这是我的命令和状态:
root@gw-0317STLG0067 /lib/systemd/system # systemctl enable test.service
root@gw-0317STLG0067 /lib/systemd/system # systemctl daemon-reload
root@gw-0317STLG0067 /lib/systemd/system # systemctl start test.service
root@gw-0317STLG0067 /lib/systemd/system # systemctl status test.service
* test.service - My Script Service
Loaded: loaded (/usr/lib/systemd/system/test.service; enabled; vendor preset:
Active: inactive (dead) since Sun 2016-07-31 10:06:29 UTC; 4s ago
Process: 20620 ExecStart=/root/test.py (code=exited, status=0/SUCCESS)
Main PID: 20620 (code=exited, status=0/SUCCESS)
Jul 31 10:06:29 gw-0317STLG0067 systemd[1]: Started My Script Service.
Jul 31 10:06:29 gw-0317STLG0067 test.py[20620]: hello
Run Code Online (Sandbox Code Playgroud)
这里是我的服务脚本:
[Unit]
Description=My Script Service
After=multi-user.target
[Service]
Type=simple
ExecStart = /root/test.py
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
为什么它死了,当你守护打印语句时到底应该发生什么?它应该炸毁终端吗?
您的脚本通常作为服务启动,结束得非常快(因为只有一个命令并且没有 while 循环或类似的命令重新执行它),因此服务结束得更快,然后您可以询问其状态。尝试添加一些循环(超时不会对您的日志发送垃圾邮件)以便能够看到它处于活动状态:
while True:
print('hello')
time.sleep(2)
Run Code Online (Sandbox Code Playgroud)
并在您看到(使用journalctl -u test.service
)足够多后立即通过 systemctl 杀死它。
归档时间: |
|
查看次数: |
11384 次 |
最近记录: |