如何创建每两小时重启一次服务的脚本?

如何创建每两小时重启一次服务的脚本?

我想创建一个简单的 init.d 文件,以便我可以重置正在使用的试用服务。我目前正在使用 CodeSys,启动脚本会在 2 小时后切断我,因此我需要重置机器或手动重启服务。

有人可以帮我编写一个脚本吗:

service stop codesys
service start codesys

(每 7200 秒无限循环一次)

提前致谢!

编辑:这是最初包含的启动脚本,你找到任何与 2 小时计时器相关的东西了吗?我真的不太了解这些东西。

http://pastebin.com/vzWi3FBN

答案1

最直接的方法就是运行一次

sudo service start codesys && watch -n 7200 'sudo service stop codesys && sudo service start codesys'

这将每秒执行一次命令sudo service stop codesys && sudo service start codesys(停止codesys服务并在成功后再次启动它)7200并显示潜在输出。

请注意,在这种情况下,由于要执行的命令实际上是两个命令的链,因此需要用引号将命令括起来。

watch以下是来自的相关部分man watch (trusty)

[...]
描述
       手表  重复运行命令,显示其输出和错误(
       第一屏)。这样您就可以看到程序输出的变化
       随着时间的推移。默认情况下,该程序每 2 秒运行一次。
       默认,手表将一直运行直至被中断。

选项
[...]
       -n- 间隔
              指定更新间隔。该命令不允许更快
              小于 0.1 秒间隔,其中较小的值
              已转换。
[...]

为了使其在启动时运行,请将此行添加到/etc/rc.local该行之前exit 0

nohup sh -c "sudo service start codesys && watch -n 7200 \"sudo service stop codesys && sudo service start codesys\"" > /dev/null &

nohup启动一个不受信号影响的进程SIGHUP,将进程重定向stdin/dev/null和 ,并将stdout和 都重定向stderr到一个nohup.out文件,在本例中,stdoutstderr被重定向到 ,/dev/null因为您不需要检查输出。使用nohup是为了在 的执行/etc/rc.local终止时不会终止进程。&操作员将进程置于后台,以便 的执行/etc/rc.local可以继续。

相关内容