以下、crontabにて動作させたいと思っているシェルスクリプトです。
test.sh
1DATESTR=`date +%Y%m%d-%H%M%S` 2 3cd /data/code 4COMMIT_ID=`git log -1 | grep -oE '[0-9a-f]{40}'` 5 6echo ${DATESTR}'_'${COMMIT_ID} >> test.txt
/data/codeの中は、gitのローカルリポジトリとなっており、ここでgitの最終commitのIDを獲得しようというのが、上記4行目のコマンドです。
これは、/data/code以下のディレクトリでないと行えません。
これを、
sh test.sh
で行うと、test.txtの中には
20201126-194504_cd898294d4b321f725f5843ed3f7f0098d13e29f
と日付とcommit IDが残ります。しかしながら、これをcrontabから行うと、
20201209-145701_
となってしまいます。
なぜ、shコマンドで行うのと、crontabで行うのと結果が異なるのか、ご存知の方はいらっしゃいますでしょうか?
よろしくおねがいします。
crontabにはどのようにJOBを登録しているのでしょうか。crontab -e で登録したときのことです。crontab -l の出力と言ってもよいです。また、ユーザーは同じなのですよね。
[root@db734c51390b batch]# crontab -l
0 0 * * * sh /batch/test.sh
[root@db734c51390b batch]# ll /batch/test.sh
-rw-r--r-- 1 root root 960 12月  9 19:36 /batch/test.sh
となっておりますね。
rootですべて確認しているのでしょうか。
はい、そうです。

回答4件
あなたの回答
tips
プレビュー



