我想每 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