我对我运行的一个程序有疑问。每隔一段时间,我就需要重新启动某个程序。
对于这种情况,我通常会运行:
screen ./run.sh arg1 arg2 "arg3"
(屏幕,因为我不知道是否还有其他方法可以将某些东西放在背景中 - 但那是另一回事。)
因此,我认为我可以添加一个 cronjob(通过crontab -e
)来运行此程序(但是我需要一个 bash 脚本吗?) - 但我不知道如何停止该过程。现在,我在重新连接分离的会话后通过CTRL+取消它。C
我正在考虑kill
这样做,但启动程序时我不知道进程 ID。有人能帮我吗?我正在使用 Ubuntu 12.04。
总结
启动进程
等待 6 分钟
停止该过程,
(重新)启动该过程 (...)
谢谢
答案1
如果您不反对bash
解决方案,这里有一个脚本可以执行您概述的操作。它可以添加/etc/rc.local
到每次启动时运行。只需bash /path/to/script &
从内部调用它即可/etc/rc.local
#!/bin/bash
while true
do
screen ./run.sh arg1 arg2 "arg3" & # start in background
CMDPID=$! # get pid of that command
TIME=$( date +%s ) # get timestamp
# next while loop just keeps checking time
# We don't want to block up CPU with
# continuous sleep command
while [ $(date +%s) -lt $(($TIME+360)) ];
do
sleep 0.25
done
kill -TERM $CMDPID # kill that process
# return to the top and repeat the procedure
done