web-dev-qa-db-ja.com

cronジョブは実行されません

ユーザー(ユーザー)で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に固有のものではありませんでした。私のスクリプトに関係がありました。答えを得るには、以下のチェックされた答えを参照してください。)

1

私の問題は、ユーザーがsudoerではないということでした。

この問題は、ユーザーを/etc/sudoersファイルに追加するか、cronジョブをrootとして追加することで解決できます。

Sudo su
crontab -e

そこにcronジョブを配置します

2

としてcronジョブを与えてみてください

* 1 * * * cd /home/user/ping_scripts/ && ./ping-test.sh

また、スクリプトが実行可能であることを確認します

0
LOKI