Debian 11 (bullseye): ユーザー cron ジョブは実行されません。

Debian 11 (bullseye): ユーザー cron ジョブは実行されません。

私は、DHCPを介してパブリックIPアドレスを発行する住宅用ISPを介して自宅でサーバーをホストします。これは、DCHPリースが更新されたときに常に同じIPを取得しないことを意味します。私のパブリックIPが変更されたことを確認し、変更された場合は、新しいIPアドレスを電子メールで送信するbashスクリプトを作成しました。 「現在の」IPは、誰でも読み書きできるマイホームディレクトリのテキストファイルに保存されます。毎時間実行したいがcronを実行できないようです。どの私に就職の機会をください。スクリプトは問題なく実行されます。

前の質問を見た結果、ファイル権限や出力処理の問題があるようには見えません。ファイル/操作は/var/log/syslogには表示されません。

アイデア?

バージョン管理

システム詳細(uname -a):Linux jasonbourne 5.10.0-19-amd64 #1 SMP Debian 5.10.149-2 (2022-10-21) x86_64 GNU/Linux

クローンの詳細( apt info cron):Version: 3.0pl1-137

バッシュの詳細( apt info bash):Version: 5.1-2+deb11u1

バッシュスクリプト:

#!/bin/bash

#known (current) IP
current_ip=`cat /home/jasonbourne/.current_ip`

#check for actual IP
check_ip=`dig -4 +short myip.opendns.com @resolver1.opendns.com`

if [ $check_ip != $current_ip ]
then
    message="`hostname`'s IP address changed from $current_ip to $check_ip on `date +%D` at `date +%T`"
    email="[email protected]"
    subject="`hostname` IP address change!"
    echo $message | mail -r $email -s "$subject" $email
    echo $check_ip > /home/jasonbourne/.current_ip
fi

スクリプトと現在のIPには適切な権限があります。

jasonbourne@debian:~$ ls -la /usr/bin/public-ip-monitor.sh
-rwxr-xr-x 1 root root 873 Dec 28 20:14 /usr/bin/public-ip-monitor.sh
jasonbourne@debian:~$ ls -la /home/jasonbourne/.current_ip
-rw-rw-rw- 1 jasonbourne jasonbourne 15 Dec 28 21:28 /home/jasonbourne/.current_ip

crontabとcron.timeを試してみてください:

cron サービスが正常に実行されます。

jasonbourne@debian:~$ sudo systemctl status cron
● cron.service - Regular background program processing daemon
     Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-12-28 00:32:37 EST; 21h ago
       Docs: man:cron(8)
   Main PID: 14242 (cron)
      Tasks: 1 (limit: 4583)
     Memory: 1.0M
        CPU: 3.949s
     CGroup: /system.slice/cron.service
             └─14242 /usr/sbin/cron -f

私のユーザーcrontabをに設定しようとしcrontab -eました。スクリプトも入れました。0 * * * * /usr/bin/public-ip-monitor.sh@hourly /usr/bin/public-ip-monitor.sh/etc/cron.hourly

答え1

/etc/cron.hourly/public-ip-monitor.sh動作しない理由は、時間ごとのcronエントリがrun-parts/ etc / crontabファイルを介して開始されるためです。

01 * * * * root cd / && run-parts --report /etc/cron.hourly

コンポーネントの実行実行に関する特定の規則があります。

run-partsは、ディレクトリディレクトリにある以下に説明する制約内で指定されたすべての実行可能ファイルを実行します。

--lsbsysinitオプションと--regexオプションが指定されていない場合、名前はASCII大文字と小文字、ASCII番号、ASCII下線、およびASCII減算ハイフンで構成する必要があります。

したがって、拡張子を持つファイルは.sh実行されません。

帽子のヒントハンドル~のすべての回答私にこの方向を指した。

関連情報