在操作系统启动后启动应用程序,然后每小时重新启动该应用程序

在操作系统启动后启动应用程序,然后每小时重新启动该应用程序

我正在寻找一种在启动后立即启动应用程序的方法。此应用程序在 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.

相关内容