Bashスクリプトをcronjob
として呼び出そうとすると、いくつかの問題が発生します。これは実行しないです。
考えられる障害の原因を排除するために、次のことを行います。
Sudo crontab -e
経由でcronを編集しました0 4 * * * bash ~/nightly_backup.sh
/home/myuser/nightly_backup.sh
にありますSudo bash ~/nightly_backup.sh
経由で手動で呼び出すと問題なく動作しますfswebcam -r ...
)何が間違っていますか?
さらに、スクリプトが実行された場合に今日検索すると、次のようなsyslogが表示されます。
Feb 7 04:00:01 localhost CRON[7767]: (root) CMD (bash ~/nightly_backup.sh)
Feb 7 04:00:01 localhost CRON[7764]: (CRON) info (No MTA installed, discarding output)
Feb 7 04:00:03 localhost CRON[7765]: (CRON) info (No MTA installed, discarding output)
基本的な問題は、現在のユーザーのhome
を参照する~
を使用しているようです。
問題に関する詳細:
~
の値は/home/myuser
(myuser
home)になります~
の値は/root
(root
home)になりますファイルが/root/nightly_backup.sh
cron
にないため、実行できません。
解決策:
交換:
0 4 * * * bash ~/nightly_backup.sh
と:
0 4 * * * /home/myuser/nightly_backup.sh
次のコマンドを実行して(一度)、シェルスクリプトが実行可能であることを確認する必要があります。
chmod +x /home/myuser/nightly_backup.sh
注:他の質問について
「MTAがインストールされていない、出力を破棄する」とはどういう意味ですか?
答えられました こちら
要するに:これは、cronジョブが出力を生成し、cronデーモンがその出力を電子メールで送信しようとするためです。システムにインストールされたサービス。
次のいずれかの方法で解決できます(詳細は here )
logger
にリダイレクトすると、syslog
ログに表示されます