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실행되지 않습니다.

모자 팁손잡이~의모든 답변나에게 이 방향을 가리켰다.

관련 정보