私のcrontab構文は無効ですか?

私のcrontab構文は無効ですか?

簡単な質問:

10 4 * * * rm -rf ~/code/rehlds/build/ && ~/code/rehlds/build.sh --compiler=gcc --jobs=4 > /dev/null 2>&1

確認したところ、/build フォルダーが存在しないことがわかりました。これは、build.sh が実行されなかったことを示しています。

crontab -e

10 4 * * * rm -rf ~/code/rehlds/build/ && ~/code/rehlds/build.sh --compiler=gcc --jobs=4 > /dev/null 2>&1

pgrep cron 658 1232359

ここでそれが実行されたことがわかります sudo grep CRON /var/log/syslog Dec 8 04:10:01 xxxx CRON[1190963]: (xxx) CMD (rm -rf ~/code/rehlds/build/ && ~/code/rehlds/build.sh --compiler=gcc --jobs=4 > /dev/null 2>&1)

ジョブは実行されましたが、コンパイルされず、cronlog ファイルは空です。

CMD (./code/rehlds/build.sh --compiler=gcc --jobs=4 &> ./cronlog)

答え1

  1. 2 つの bash セッションで作業する場合は、nano を使用してファイルを保存するだけでなく、閉じる必要があります。そうすることで初めて crontab が追加されます。

  2. build.sh を実行するときは、まずそのディレクトリに cd する必要があります。そうしないとエラーが発生します。

$ ./code/rehlds/build.sh --compiler=gcc --jobs=4 CMake Error: The source directory "/home/cs2" does not appear to contain CMakeLists.txt. Specify --help for usage, or press the help button on the CMake GUI. make: *** No targets specified and no makefile found. Stop.

このコマンドを手動で実行してそれを発見しました

正しいコマンド:

10 4 * * * cd ./code/rehlds && rm -rf ./build && ./build.sh --compiler=gcc --jobs=4 > /dev/null 2>&1

関連情報