実行しているプログラムに関して質問があります。時々、特定のプログラムを再起動する必要があります。
その場合、私は通常実行します:
screen ./run.sh arg1 arg2 "arg3"
(画面、背景に何かを置く別の方法があるかどうかはわかりませんが、それは別のことです。)
したがって、このプログラムを実行する(crontab -e
を介して)cronjobを追加できると思います(しかし、そのためにbashスクリプトが必要ですか?)-しかし、プロセスを停止する方法がわかりません。今、私はそれを介してキャンセルしています CTRL + C 切り離されたセッションを再接続した後。
私はkill
ingすることを考えていましたが、プログラムを開始したときのプロセスIDがわかりません。誰かが私を助けることができますか? Ubuntu 12.04を使用しています。
tl; dr
プロセスを開始する
6分待ちます
プロセスを停止し、
(再)プロセスを開始(...)
ありがとう
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