「crontab」で「rtcwake」を実行するには?

「crontab」で「rtcwake」を実行するには?

rootとして実行してみましたが、うまく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
    

上記の手順で何を変更する必要がありますか?それとも別のステップがありませんか?

PS。私のオペレーティングシステム情報:

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 suspendsystemd-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過度すぎたようです。

関連情報