ユーザー(ユーザー)でcronジョブを実行しようとしています。
Cronジョブのインストールに問題はなく、スクリプトを実行するだけでスクリプトが機能します。それは実行可能で、bashスクリプトであることを示すbash
フラグがあります。
crontab -e
としてuser
としてログインして、スクリプトを作成しました。
テストのために、このスクリプトを毎分実行しますが、最終的には10分に変更します。
私のcronjobは、10分ごとにgooglesサーバーにpingを実行し、ログを作成するスクリプトを実行する必要があります。これにより、問題を追跡するためにデバイスがインターネット接続を失ったかどうかを知ることができます。ログファイルを毎日移動し、日付付きでログに記録する別のスクリプトがあります。このスクリプトは別のログファイルを作成する必要があります。現在、このcronジョブでファイルを作成したり、スクリプトを実行した後にファイルを更新したりすることはありません。
私のcronjob
*/1 * * * * bash /home/user/ping_scripts/ping-test.sh
私のスクリプト
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
exec Sudo "$0" "$@"
fi
if [ ! -e /var/log/ping.log ];then
touch /var/log/ping.log
fi
ping -q -c5 google.com > /dev/null
if [ $? -eq 0 ];then
echo -e "[$(date)] \t\t google ping successful" >> /var/log/ping.log
else
echo -e "[$(date)] \t\t google ping failed" >> /var/log/ping.log
fi
私はいくつかの他の解決策を読みましたが、nonは私のエラーを修正していました。
(私の質問が単なる質問以外の違いを説明することはできません、通過中に答えを見つけることができませんでした なぜcrontabスクリプトが機能しないのですか? これはcronに固有のエラーです解決策は特にcronに固有のものではありませんでした。私のスクリプトに関係がありました。答えを得るには、以下のチェックされた答えを参照してください。)
私の問題は、ユーザーがsudoer
ではないということでした。
この問題は、ユーザーを/etc/sudoers
ファイルに追加するか、cronジョブをroot
として追加することで解決できます。
Sudo su
crontab -e
そこにcronジョブを配置します
としてcronジョブを与えてみてください
* 1 * * * cd /home/user/ping_scripts/ && ./ping-test.sh
また、スクリプトが実行可能であることを確認します