ループ内でスクリプトを実行して停止する方法

ループ内でスクリプトを実行して停止する方法

demo.py「最初にスクリプトを実行します」というスクリプトがあります。

python demo.py -some arguments

しばらくして(120秒と仮定)、Ctrl+で中断しCてやり直してください。これらの手順を自動的に繰り返すbashスクリプトを作成できますか?

ベストアンサー1

python demo.py -some arguments &
( sleep 120; kill -TSTP "$!")  & 
fg %1

まず、backgroundに移動してから120秒間続くpythonバックグラウンドシェルを起動してから送信します。sleeppython-TSTP停止する信号。これは押すのと厳密に同じではありません。CTRL+C- 欲しいのですがkill -INT "$!"- やるのと同じだからもう一度復元したいかもしれません。CTRL+Z代わりに。

ついにそれfg 展望ジョブID %1- テーブルに2つのプロセスしかない場合、jobsこのIDはですpython

demoウェイターがkill影の中に隠れている間、あなたは走り始めます。

cat5秒間待ちます。

cat & ( sleep 5; kill -TSTP "$!" )& fg %1
cat
[1] + Stopped                    cat

ループでこれを行うには、次のようにします。

(kill -TSTP 0); code=$?
python demo.py -some arguments & pid=$!  
while   (sleep 120;kill -TSTP "$pid")&
        fg %1; [ "$?" = "$code" ]
do :;   done

おすすめ記事