毎分実行されるcronjobがあります。
*/1 * * * * root sh /test.sh
私の/ test.shは "top"と "free"コマンドの結果を記録します。 「sh /teste.sh」を使用して端末で手動で実行し、出力をクールなファイルに保存すると正常に動作しますが、cronジョブが実行されると以下の「free」コマンドの結果のみが保存されます。確認してください:
printf "\n" >> "log_lojar_top_free.txt"
printf %s "$(date)" >> "log_lojar_top_free.txt"
printf '\t' >> "log_lojar_top_free.txt"
top -b -n 3 -d 1 | grep "Cpu" | tail -n 1 | awk '/^%Cpu\(s\)/ {printf $2}' >> "log_lojar_top_free.txt"
printf '\t' >> "log_lojar_top_free.txt"
free | awk '/^Mem:/ {printf $7}' >> "log_lojar_top_free.txt"
最後の(アイドル)行の出力のみが記録されるエラーは何ですか?
ベストアンサー1
他の人が提案したように、スクリプトで直接bash shebangを使用するか、bash
代わりにプレフィックスを使用してみてくださいsh
。実際にどのシステムで実行されているのかわからないため、最近の/bin/sh -c myscript.sh
Debian派生バージョンであるubuntuでスクリプトを呼び出すのに問題がありました。をdash
使用するバージョンですbash
。
たぶんそれが質問の中心であるかもしれません。
編集:このcrontabエントリを使用してrootを操作しましたcrontab -e
。
*/1 * * * * /bin/bash -c "/test.sh"