プログラム(アミュール)を4分ごとにループで閉じて再起動したい(自分で閉じると決めるまで)。
このコードを試しました
#!/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;
置き換えてみてください。amuleが TERM 信号を無視する場合は、前にオプションを追加する必要があるかもしれません。killlall amule
pkill amule
killall
pkill
-KILL
amule