"crontab"에서 "rtcwake"를 실행하는 방법은 무엇입니까?

"crontab"에서 "rtcwake"를 실행하는 방법은 무엇입니까?

루트로 실행 해 보았는데 rtcwake작동합니다.

root@ywt01-15Z90N-V-AR53C2:~# rtcwake -m mem -s 90

↑ 명령이 실행 중입니다.

rtcwake하지만 내부에서 실행하려고 하면 crontab작동하지 않습니다.

  1. 열려 있는 crontab:
     root@ywt01-15Z90N-V-AR53C2:~# crontab -e
    
  2. 편집하다 crontab:
     01 22 * * * /usr/sbin/rtcwake -m mem -s 90 > /root/rtc.log 2>$1
    

위 단계에서 무엇을 변경해야 합니까? 아니면 다른 단계가 누락되었나요?

추신. 내 운영 체제 정보:

Distributor ID: Ubuntu
Description:    Ubuntu 20.04.5 LTS
Release:    20.04
Codename:   focal

답변1

스크립트를 어떻게 수정해야 할지 잘 모르겠습니다 rtcwake. 약간 이상하다고 느껴지는 부분이 많습니다 :)

대조적으로, systemd(Ubuntu 20.04의 기반)를 사용하면 시스템이 자동으로 깨어나는 타이머 작업을 간단하게 수행할 수 있습니다. 그것은 마치https://joeyh.name/blog/entry/a_programmable_alarm_clock_using_systemd/:

/etc/systedm/system/whatever_I_need_to_do_at_22_01.service

[Unit]
Description=Important thing that needs to happen 1 past 10
RefuseManualStop=true
RefuseManualStart=true
# Requires=multi-user.target or whatever you want to sure runs!
[Service]
Type=oneshot
ExecStart=/usr/bin/true

/etc/systedm/system/whatever_I_need_to_do_at_22_01.timer

[Unit]
Description=Important timer

[Timer]
Unit=whatever_I_need_to_do_at_22_01.service
OnCalendar=*-*-* 22:01
WakeSystem=true
Persistent=false 

[Install]
WantedBy=multi-user.target

그런 다음 sudo systemctl enable --now whatever_I_need_to_do_at_22_01.timer지정된 시간에 깨어나도록 설정하면 됩니다.

잠에 들려면 를 사용하세요 systemctl suspend. systemd-suspend.service특정 시간에 일시 중지하고 싶다면 타이머를 호출할 수도 있습니다!

답변2

이 스레드를 참조하십시오(rtcwake가 루트 크론 작업으로 실행되지 않습니다.) 답변을 얻으려면 rtcwake. 내 경우에는 s cron을 사용하고 있음에도 불구하고 sudo다음 명령을 추가해야 했습니다.cronroot

30 14 * * * sudo /usr/sbin/rtcwake -m mem -l -t $(date +\%s -d 'today 17:55:00') >> /home/user/crond.log 2>&1

수정이 systemd너무 지나친 것 같았습니다.

관련 정보