bash循环重新启动程序

bash循环重新启动程序

我想每 4 分钟关闭并重新启动一个程序(amule)作为循环(直到我自己决定关闭)。
我试过这段代码

#!/bin/bash
for (( ; ; ))
do
amule
sleep 240;
wmctrl -c aMule;
done  

但它不起作用(即使在退出时禁用确认之后)。

编辑
1)我意思是该脚本应在 240 秒后关闭 amule(抱歉 180 是一个错误),然后(立即)重新打开它。并且,事后240之后重新关闭又重新打开等等。
2)是的姓名是正确的,当我尝试从 konsole 运行该行 /(wmctrl -c aMule;) 时,它可以工作

编辑我尝试这样做:1)创建一个新脚本:

wmctrl -c aMule
sleep 10
amule  

2)将脚本添加到crontab(每6分钟运行一次)

但是命令“wmctrl -c aMule”,从终端工作,在(这样的)脚本中不起作用。
我不明白为什么...

答案1

amule在前台工作。你的脚本永远不会到达sleep 240。在后台运行amule,以便脚本可以继续。

#!/bin/sh

while :; do
   amule &     # run in background
   sleep 240
   killall amule
      # or   wmctrl -c aMule
   wait         # in case amule needs time to close
done

答案2

watch -n 240 'amule;wmctrl -c aMule'

答案3

您可以尝试wmctrl -c aMule;killlall amule或替换,具体取决于您安装了pkill amule哪个killall或。如果 amule 忽略 TERM 信号,pkill您可能需要-KILL在之前添加该选项。amule

相关内容