cronがジョブを実行するときの「作業ディレクトリ」とは何ですか?

cronがジョブを実行するときの「作業ディレクトリ」とは何ですか?

コマンドラインから実行するときに動作するスクリプトがありますが、それを使用してスケジュールすると、ファイルまたはcronコマンドが見つからないというエラーが発生します。私の質問は2つあります。

  1. cronジョブのスケジュールに使用するときは、crontab -e権限の基礎として私のユーザーIDを使用しますか?それとも、ある種のcronユーザーIDと関連する権限を使用しますか?

  2. クローンジョブの開始時に作業ディレクトリは何ですか?実行するスクリプトを指定するディレクトリですか、それとも別のディレクトリですか?

これは私のクローンの仕事です。

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 [email protected] < 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ユーザーとして行うことができます。これを行うために私は何を見逃していますか?

ベストアンサー1

cd /home/xxxx/Documents/Scripts/このディレクトリでタスクを実行するには、追加してください。 cronが特定のディレクトリに変更される理由はありません。 Cronはホームディレクトリからコマンドを実行します。

それはssmtpあなたのデフォルトではないかもしれませんPATH。 Cronのデフォルトパスは実装によって異なりますので、マニュアルページを確認してください。ただし、デフォルトパスではなくルートにのみssmtp存在する可能性が高いです。/usr/sbinPATH

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
15 7 * * * cd /home/xxxx/Documents/Scripts && ./email_ip_script.sh

おすすめ記事