Linux

通過命令行執行 if 語句

  • February 9, 2020

我正在通過每 1 分鐘執行一次的 cron 執行一個 python 程序。有時,它會佔用大量 CPU,如果是這種情況,我需要下一個 cron 作業不執行。我在嘗試

if (( ~/cpu_usage.txt< 60 )); thencd /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 呼叫它。

引用自:https://unix.stackexchange.com/questions/566416