Linux
通過命令行執行 if 語句
我正在通過每 1 分鐘執行一次的 cron 執行一個 python 程序。有時,它會佔用大量 CPU,如果是這種情況,我需要下一個 cron 作業不執行。我在嘗試
if ((
~/cpu_usage.txt< 60 )); then
cd /path/to/program && python myfile.py 100; fi
myfile
在文件中有一個print bob_here
,這會導致上面的崩潰:
bob_here: command not found
它
myfile.py
自己執行得很好,所以問題出在 if 語句上。如何讓腳本正確執行?注意:這裡可能不太重要,但
cpu_usage.txt
它是一個簡單的 bash 程序,可以列印出目前的 cpu 使用情況:echo $[100-$(vmstat 1 2|tail -1|awk '{print $15}')]
只需失去刻度並提供 python 解釋器的完整路徑:
if (( `~/cpu_usage.txt` < 60 )); then python /path/to/program/myfile.py 100; fi
您不需要刻度,因為 shell 將
then
按照設計的關鍵字執行命令;滴答聲將啟動一個子外殼,然後將結果/輸出用作 的命令if-then
,這不是您想要的:> if true; then echo OK; fi > OK > if true; then `echo OK`; fi > OK: command not found
編輯:根據我的經驗,如果您想將它與 crontab 一起使用,最好將所有命令放在 shell 腳本中並從 crontab 呼叫它。