
次のシェルスクリプト行は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組み込みなので大丈夫です。)
答え2
書かれていますが、探しているところはありません。最良の方法は絶対パスを使用することです。