コマンドラインでifステートメントを実行する

コマンドラインでifステートメントを実行する

私はcronで1分ごとに実行されるPythonプログラムを実行しています。時にはCPUが大量に消費されますが、その場合は次のクローンジョブが実行されないようにする必要があります。頑張ってる

if (( `~/cpu_usage.txt` < 60 )); then `cd /path/to/program && python myfile.py 100`; fi

myfileprint bob_hereファイルに上記の競合を引き起こすファイルが1つあります。

bob_here: command not found

myfile.pyそれ自体はうまく機能するので、問題はifステートメントにあります。スクリプトが正しく実行されるようにするにはどうすればよいですか?

注:これはあまり重要ではないかもしれませんが、cpu_usage.txt現在のCPU使用率を印刷する単純なbashプログラムです。


echo $[100-$(vmstat 1 2|tail -1|awk '{print $15}')]

ベストアンサー1

チェックマークを外してPythonインタプリタへのフルパスを提供します。

if (( `~/cpu_usage.txt` < 60 )); then python /path/to/program/myfile.py 100; fi

ティックは設計どおりにキーワードの後に​​コマンドを実行するため、ティックは必要ありませんthen。ティックはサブシェルを起動し、結果/出力をコマンドとして使用しますif-then。これは望むものではありません。

> if true; then echo OK; fi
> OK
> if true; then `echo OK`; fi
> OK: command not found

編集:私の経験によると、crontabで使用するには、すべてのコマンドをシェルスクリプトに入れてcrontabから呼び出すことをお勧めします。

おすすめ記事