コマンドラインから実行すると機能するスクリプトがありますが、スケジュールを設定するとcron
、ファイルやコマンドが見つからないというエラーが発生します。私の質問は2つあります。
を使用してcronジョブをスケジュールする
crontab -e
場合、ユーザーIDを許可の基礎として使用しますか?または、ある種のcronユーザーIDとそれに関連する権限を使用しますか?cronジョブが起動されたとき、作業ディレクトリは何ですか?実行するスクリプトを指定するディレクトリですか、それとも別のディレクトリですか?
これが私のcronジョブです。
15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh
実際のスクリプトは次のとおりです。
vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt
ssmtp XXXXX@gmail.com < emailmsg.txt
mail
生成されたメッセージを表示すると、次のエラーが表示されcron
ます。
sed: can't read template.txt: No such file or directory
/home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found
見つけることができませんtemplate.txt
が、スクリプトと同じディレクトリにあります。実行することもできませんがssmtp
、ユーザーとして実行できます。これを適切に機能させるために何が欠けていますか?
cron
、それは自分だ持っているPATH
か、私は、ユーザーのを確認することができますかPATH
?私はそれが自分だ持つようにセットアップSSMTP設定user
し、wheel
それは誰もが(cronを含む)、それを使用できるようにするだろうと考え許可。CENTOS 6.2のImに役立つ場合