crontabを介して毎分実行するように設定したシェルスクリプトに特有の問題があります。
私はPelicanをブログプラットフォームとして使用しており、新しい投稿があるたびにサイトが更新される方法を半自動化したいと考えていました。これを行うためにrespawn
、コンテンツと同じディレクトリで呼び出されるファイルを検索するスクリプトを作成しました(Dropboxを介して同期するため、サーバーと同期するファイルをそこに作成するだけです)。
スクリプトは、ファイルrespawn
が存在する場合、ブログを再構築して削除するように記述されています。そうでない場合は、代わりに終了します。
これがというスクリプトですpublish.sh
#!/bin/bash
Respawn="/home/user/content/respawn"
if [ -f $Respawn ]
then
sudo /home/user/sb.sh;rm $Respawn
else
exit 0
fi
exit 0
これがシェルスクリプトのcrontabです
* * * * * /home/user/publish.sh
そして最後に、これがの内容ですsb.sh
make html -C /var/www/site/
これで、SSH経由でスクリプトを実行してrespawn
存在する場合、それは完全に機能します。ただし、cronに実行させると、シェルスクリプトは実行されませんが、respawn
ファイルは削除されます。
4時間ごとに実行されるもう1つのcronジョブがあります。これは単純に実行sb.sh
され、完全に機能します(何かを公開するのを忘れた場合に備えて)。
ユーザーのcrontabを使用し、代わりにrootに追加してみました。また、パスワードを使用せずに実行できるように、ユーザーをsudoersファイルに追加しました。どちらも機能していないようです。私は何かが足りないのですか?