web-dev-qa-db-ja.com

特定のルーチンをキャンセルして再起動します(python-script)

実行しているプログラムに関して質問があります。時々、特定のプログラムを再起動する必要があります。

その場合、私は通常実行します:

screen ./run.sh arg1 arg2 "arg3"(画面、背景に何かを置く別の方法があるかどうかはわかりませんが、それは別のことです。)

したがって、このプログラムを実行する(crontab -eを介して)cronjobを追加できると思います(しかし、そのためにbashスクリプトが必要ですか?)-しかし、プロセスを停止する方法がわかりません。今、私はそれを介してキャンセルしています CTRL + C 切り離されたセッションを再接続した後。

私はkillingすることを考えていましたが、プログラムを開始したときのプロセスIDがわかりません。誰かが私を助けることができますか? Ubuntu 12.04を使用しています。

tl; dr

プロセスを開始する

6分待ちます

プロセスを停止し、

(再)プロセスを開始(...)

ありがとう

2
DasSaffe

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
4