Linux命令以一定时间间隔运行脚本

10
我在Ubuntu终端中运行这个命令。
python2.5 /home/me/web/gae/google_appengine/dev_appserver.py /home/me/web/gae/APPLICATION/trunk

我需要每隔10秒停止并重新启动这个程序 - 如果必要的话,我可以从.sh文件中运行它。

最好的方法是什么?如果可能的话,我想把所有内容都放在一个脚本中,所以不太喜欢使用cron作业来运行它 - 在纯shell脚本中有没有一种带延迟的循环的方法呢?

我能想到最接近的等价物是JavaScript的setInterval(function(),10000);


为什么不使用cron?看起来这是完成此任务的正确工具。 - sorpigal
3个回答

18

你可以尝试像这样:

while true; do
  python2.5 /home/me/web/gae/google_appengine/dev_appserver.py /home/me/web/gae/APPLICATION/trunk &
  sleep 10
  kill $!
done

即:无限循环(while true),在后台启动Python脚本,等待10秒钟(sleep 10),并杀死后台进程(kill $!)。


那是 setTimeout(),不是 setInterval() - woky

5

I like ~$ watch -n sec command

i.E.

watch -n 10 ls /home/user/specialdata

watch -n 30 csync /dir/A /remote/dir/B

1
我认为这个假设正在观察的进程会终止,而OP正在运行需要被杀死的服务器进程。但是我不知道watch,所以谢谢你的提示。 - contrebis
使用watch命令可以指定以毫秒为单位的时间间隔吗? - Mohit Shah

1

如果你不喜欢 cron,可以用sleepat

echo "print after 3min again"
sleep 180  # or sleep +3m
echo "hello again, 3min passed"

阅读手册页,稍微尝试一下,我认为围绕这些内容建立您想要的东西会很容易。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接