![在操作系统启动后启动应用程序,然后每小时重新启动该应用程序](https://linux22.com/image/96257/%E5%9C%A8%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%90%AF%E5%8A%A8%E5%90%8E%E5%90%AF%E5%8A%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%8C%E7%84%B6%E5%90%8E%E6%AF%8F%E5%B0%8F%E6%97%B6%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E8%AF%A5%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F.png)
我正在寻找一种在启动后立即启动应用程序的方法。此应用程序在 1 小时后超时。我想在初始启动后 1 小时(在初始应用程序超时后)启动该应用程序的另一个实例。我一直在想 Cron 可能被配置(巧妙地)来完成这个任务。除了在启动时将系统时钟重置为 00:00:00 然后正常运行 Cron 之外,有没有办法做到这一点?提前致谢。
更新:根据 maulinglawn 的建议,我采用了 Systemd.service 方法。具体来说,我已将 python 脚本的副本放在 /usr/bin/startVideo/startVideo.py 中。然后在/lib/systemd/service/startVideo.service中创建一个服务文件。这是该文件,
[Unit]
Description=starts video recorder
[Service]
Type=simple
ExecStart=/usr/local/bin/startVideo/startVideo.py
Restart=always
[Install]
WantedBy=multi-user.target
最后我跑了,
sudo systemctl enable startVideo.service
注册服务。它将在连接到摄像机的 Raspberry Pi3 上运行,不连接显示器或键盘。我只是在寻找能够 24/7 录制视频并能够在断电时自行重启的系统。其他建议?对于此类应用程序,“WantedBy”配置是否正确?
非常感谢这个解决方案和远离克罗维尔的指导。
答案1
根据你的描述,我会systemd
使用(因为这是我所有机器上都有的).service
文件启动应用程序。
在该服务文件中,我将指向一个脚本,该脚本将您的应用程序包装在一个简单的 while 循环中。像这样的东西:
#!/bin/sh
while true; do
/path/to/your/application
done
这样,每次应用程序终止(“超时”)时,它都会自行重新启动,因为循环的条件始终为真。
这是一种方法,也是我能想到的最简单的方法,可能还有其他方法!
答案2
对于那些不喜欢 systemd 的人来说,使用 /var/run 中的 pidfile 调用 /etc/rc.local 中的程序(外壳包装器)(例如 Debian )是不错的选择。类似while true ; do $_cmd >/dev/null 2>&1 & sleep 3600 ; pkill $( cat /var/run/pgm.pid ) ; rm /var/run/pgm.pid ; done
- 假设你的守护进程可以编写自己的 pid。否则,需要一些 ps text-fu 来仅向父进程发出信号,而不向其子进程发出信号。曼 PS.