Cronアクション:シェルスクリプト出力をファイルにリダイレクトする

Cronアクション:シェルスクリプト出力をファイルにリダイレクトする

次のシェルスクリプト行はcronジョブとしては機能しませんが、端末で直接実行されるため、うまく機能します。

#!/bin/bash

echo "Executed" >> ./crond.log 2>&1

何が問題なのでしょうか?

/var/log/cron を確認し、cron が時間に合わせて作業を開始していることを確認してください。

May 16 10:30:01 vagrant-centos64 CROND[3015]: (root) CMD (sh /vagrant/my.sh)
May 16 10:35:01 vagrant-centos64 CROND[3122]: (root) CMD (sh /vagrant/my.sh)
May 16 10:40:01 vagrant-centos64 CROND[3189]: (root) CMD (sh /vagrant/my.sh)
May 16 10:45:01 vagrant-centos64 CROND[3270]: (root) CMD (sh /vagrant/my.sh)
May 16 10:50:01 vagrant-centos64 CROND[3343]: (root) CMD (sh /vagrant/my.sh)
May 16 10:55:01 vagrant-centos64 CROND[3430]: (root) CMD (sh /vagrant/my.sh)

crontab ジョブのリストは次のとおりです。

*/5 * * * * sh /vagrant/mypagelogin.sh
*/5 * * * * sh /vagrant/my.sh
[root@vagrant-centos64 vagrant]#

crond.logへのアクセス権は次のとおりです。

-rwxrwxrwx 1 vagrant vagrant 0 May 16 10:51 crond.log

更新:crond.logファイルはmy.shと同じ場所にあります。 [/徒歩旅行者]

ベストアンサー1

クラブの最初のルールcrond:作業ディレクトリを想定していません。私の考えcrond.logでは、1つを見つけることができると思います/root。入力するには、/vagrant出力を明示的にリダイレクトします/vagrant/crond.log

(FWIW、クラブの2番目のルールcrondは:あなたのものから何も仮定しないでくださいPATH、バイナリへの明示的なパスを使用してください。しかし、echoそれはbash組み込みなので大丈夫です。)

おすすめ記事