我想创建一个简单的 init.d 文件,以便我可以重置正在使用的试用服务。我目前正在使用 CodeSys,启动脚本会在 2 小时后切断我,因此我需要重置机器或手动重启服务。
有人可以帮我编写一个脚本吗:
service stop codesys
service start codesys
(每 7200 秒无限循环一次)
提前致谢!
编辑:这是最初包含的启动脚本,你找到任何与 2 小时计时器相关的东西了吗?我真的不太了解这些东西。
答案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
文件,在本例中,stdout
和stderr
被重定向到 ,/dev/null
因为您不需要检查输出。使用nohup
是为了在 的执行/etc/rc.local
终止时不会终止进程。&
操作员将进程置于后台,以便 的执行/etc/rc.local
可以继续。