systemd: Gecikmeli kapanmanın planlanan zamanı nasıl kontrol edilir?


14

shutdown -h TIME/+DELAYBazen kullanmayı seviyorum . Ancak, systemd'e (Ubuntu'da) geçişten bu yana, işler biraz değişmiş gibi görünüyor.

Önceki bir kapatma komutunun artık yeni bir komutun çalıştırılmasını engellememesi dışında, geçerli bir kapatma işleminin planlanan kapanma süresini nasıl kontrol edeceğimi anlayamıyorum.

Sadece ps aux | grep shutdownplanlanan kapanma zamanını görmek için koşardım.

Şimdi systemd ile böyle bir şey gösteriyor:

root      5863  0.0  0.0  13300  1988 ?        Ss   09:04   0:00 /lib/systemd/systemd-shutdownd

Böyle bir işlemin planlanan kapanma süresini nasıl kontrol edebilirim?

Denedim shutdown -k, ancak sadece bir duvar mesajı yazmak yerine, planlanan kapanma süresini şimdi + 1 dakikaya değiştiriyor gibi görünüyor.

Yanıtlar:


12

adam kapatma (8) diyor ki:

İlk argüman bir zaman dizesi (genellikle "şimdi") olabilir.

Zaman dizesi, saatin / dakikaların "ss: dd" biçiminde olabilir ve kapatmanın yürütüleceği zamanı 24 saat biçiminde belirtir. Alternatif olarak "m" sözdiziminde olabilir. "now", "+0" için bir diğer addır; yani, anında kapatmayı tetiklemek için. Hiçbir zaman argümanı belirtilmezse, "+1" ima edilir.

Deneyin:

# shutdown +5
# systemctl status systemd-shutdownd.service

Bunun gibi bir şey görmelisin:

● systemd-shutdownd.service - Delayed Shutdown Service
Loaded: loaded (/lib/systemd/system/systemd-shutdownd.service; static; vendor preset: enabled)
Active: active (running) since Tue 2015-09-15 09:13:11 UTC; 12s ago
Docs: man:systemd-shutdownd.service(8)
Main PID: 965 (systemd-shutdow)
Status: "Shutting down at Tue 2015-09-15 09:18:11 UTC (poweroff)..."
CGroup: /system.slice/systemd-shutdownd.service
       └─965 /lib/systemd/systemd-shutdownd

Status dır-dir Shutting down at Tue 2015-09-15 09:18:11 UTC (poweroff)...


Teşekkürler. Kolaydı. Daha önce başarılı olmadan "hizmet durumu" denedim. Sanırım henüz yeterince sistemli değilim.
KIAaze

4
systemd-shutdownd- Mayıs 2015'te
sistemd'den

Bu doğru. Bu konuya işaret ettiğiniz için teşekkür ederiz. Systemd daha yeni bir sürümü kullanılırsa, aşağıdaki gibi sonra bir şey yeterli olacaktır: USECS=$(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d ' ' -f 3); SECS=$((USECS / 1000000)); date --date=@$SECS.
Evgeny Vereshchagin

9
# cat /run/systemd/shutdown/scheduled
USEC=1537242600000000
WARN_WALL=1
MODE=poweroff

USEC, mikrosaniye hassasiyetine sahip bir unix dönem zaman damgasıdır, bu nedenle:

if [ -f /run/systemd/shutdown/scheduled ]; then
  perl -wne 'm/^USEC=(\d+)\d{6}$/ and printf("Shutting down at: %s\n", scalar localtime $1)' < /run/systemd/shutdown/scheduled
fi

şuna benzer bir şey görüntüler:

Shutting down at: Tue Sep 18 03:50:00 2018

Systemd sürümü, Debian Stretch üzerinde çalışan 232-25 + deb9u4'tür .


5

Daha yeni linux dağıtım sürümleri için yapmanız gerekenler:

busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown

Kapanmanın çalışma yöntemi değişti

Denendi: - Debian Stretch 9.6 - Ubuntu 18.04.1 LTS

Referanslar


2
Çıktı, kapanma süresini Unix döneminden bu yana mikrosaniye olarak belirtir. Okunabilir bir zaman elde etmek için:date -d @$(( $(busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown | cut -d' ' -f3) / 1000000 ))
200_success

4

Aynı soru ile karşılaştım ve kapatma planını kontrol etmenin başka bir yolunu buldum.

Bir kapatma planı belirlediğinizde, duvar mesg iznini evet olarak ayarlayarak giriş yapan herkese bir mesaj gönderir. Duvarın her çağrılması için sistem günlüğüne bir bildirim yazılacaktır . Sistem günlüğünü aramak için komutu çalıştırabilirsiniz journalctl -u systemd-shutdownd, -useçenek günlüğü birime göre filtreleyebilir.

Çalıştırdığınızda journalctl -u systemd-shutdownd, aşağıdaki gibi kapatma ayrıntılarını gösterecektir:

[root@dev log]# journalctl -u systemd-shutdownd
-- Logs begin at Mon 2017-06-12 09:39:34 CST, end at Mon 2017-06-12 14:05:04 CST. --
Jun 12 09:39:50 dev.local systemd[1]: Started Delayed Shutdown Service.
Jun 12 09:39:50 dev.local systemd[1]: Starting Delayed Shutdown Service...
Jun 12 09:39:50 dev.local systemd-shutdownd[1249]: Shutting down at Mon 2017-06-12 21:00:00 CST (poweroff)...
Jun 12 09:55:59 dev.local systemd-shutdownd[1249]: Shutdown canceled.
Jun 12 09:56:07 dev.local systemd[1]: Started Delayed Shutdown Service.
Jun 12 09:56:07 dev.local systemd[1]: Starting Delayed Shutdown Service...
Jun 12 09:56:07 dev.local systemd-shutdownd[2885]: Shutdown canceled.
Jun 12 11:54:15 dev.local systemd[1]: Started Delayed Shutdown Service.
Jun 12 11:54:15 dev.local systemd[1]: Starting Delayed Shutdown Service...
Jun 12 11:54:15 dev.local systemd-shutdownd[3178]: Shutting down at Mon 2017-06-12 20:00:00 CST (poweroff)...

1

Bir Ubuntu 18.04'te makine kapanması tarafından yönetilir systemd. Makinemde katılımsız yükseltmelerle otomatik yeniden başlatmaları etkinleştirdim:

$ grep Automatic-Reboot /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

Programlanan otomatik yeniden başlatma süresi içinde saklanır /run/systemd/shutdown/scheduled.

$ cat /run/systemd/shutdown/scheduled
USEC=1563976800000000 
WARN_WALL=1
MODE=reboot

Aşağıdaki komutu kullanarak bunu okunabilir bir süreye dönüştürebilirsiniz:

$ date -d "@$( awk -F '=' '/USEC/{ $2=substr($2,1,10); print $2 }' /run/systemd/shutdown/scheduled )"
Thu Jul 25 02:00:00 NZST 2019
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.