일시 중단 중 시스템 종료 시간 초과

일시 중단 중 시스템 종료 시간 초과

현재 GNOME 전원 관리에서 시간 제한을 설정했는데 그 후에는 시스템이 정지됩니다.

일시 중지 중에 일정 기간 동안 활동이 없으면 시스템이 종료되도록 추가 시간 제한을 추가하고 싶습니다.

따라서 다음과 같습니다.

  1. 15분 동안 활동이 없으면 일시 중지합니다.
  2. 12시간 동안 활동이 없으면 종료됩니다.

답변1

최대 절전 모드가 정상이면 systemd를 사용하세요. 그러면 suspend-then-hibernate시간 초과 후 정지된 시스템이 최대 절전 모드로 전환됩니다. 원하는 값 sleep.conf으로 설정하세요 .HibernateDelaySec=

원천공식 시스템 매뉴얼.


편집하다:

최대 절전 모드 기능을 사용하려면 Fedora를 재구성하여 활성화해야 합니다.

  1. 먼저 스왑 파티션이 필요합니다적어도RAM 크기 - 최대 절전 모드는 RAM의 내용을 스왑 파티션에 저장하는 것을 의미하므로 크기는 설명이 필요하지 않습니다. 일반적으로 이는 현재 파티션을 축소하고 새 스왑 파티션을 생성하는 것을 의미합니다.

이에 대한 가이드는 다음과 같습니다.

스왑 파티션을 추가 /etc/fstab하고 활성화를 통해 사용하는 것을 잊지 마십시오 swapon -a. fstab 항목 예:

# swap:
UUID=abc123-this-is-a-uuid none swap sw 0 0
  1. initramfs에 복구 옵션을 추가합니다. 이 목적을 위해 Fedora를 dracut따르겠습니다.이 가이드.
  • /etc/dracut.conf.d/resume.conf이 줄을 사용하여 파일을 만듭니다 add_dracutmodules+=" resume "(공백을 잊지 마세요).
  • 달리기dracut -f
  1. grub에 스왑 파티션을 추가하여 복원할 위치를 알 수 있습니다.
  • /etc/default/grub경로 찾기GRUB_CMDLINE_LINUX=
  • 추가 resume=UUID=abc123-this-is-a-uuid(예: UUID 교환)
  • 그럽 업데이트: grub2-mkconfig -o /boot/grub2/grub.cfg또는grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
  1. 꼭 필요하다고는 생각하지 않지만, 아프지는 않을 것 같아요. 최대 절전 모드 활성화 /etc/systemd/sleep.conf:

    [Sleep]
    AllowHibernation=yes
    HibernateMode=shutdown
    
  2. 재부팅 및 최대 절전 모드 테스트: 일부 창을 열고 실행합니다 systemctl hibernate. 재부팅하면 창이 닫히고 다시 시작됩니다.

답변2

Fedora는 systemd시스템의 전체 관리자 역할을 하며 Gnome은 절전/대기/일시 중지 작업을 systemd.

"일시 중지"는 "RAM 일시 중지"("디스크 일시 중지"와 반대)를 의미하고 "종료"는 문자 그대로 "머신 전원 끄기"를 의미하며 머신에 시스템 깨우기 및 따라서 허용 가능한 깨우기 장치로 BIOS/EFI에서 하드웨어 시계를 활성화하는 것은 지정된 시간 이후에 "일시 중지" 상태에서 자체 전원 차단을 달성하기 위해 세 systemd심하게 설계된 일부 "장치"(말하자면)를 통해 구성될 수 있습니다. systemd시간이 경과했습니다. 또한 변환 중에 최대 절전 모드가 전혀 포함되지 않습니다(전용 스왑/파티션도 포함).

이러한 맞춤형 systemd장치는 기본적으로 "일시 중지" 상태로 들어가기 직전에 깨어나며 [Timer], 알람이 트리거되면 시스템도 깨어나서 동일한 작업을 수행합니다 [Service]. 기기가 다른 방법으로 깨어나 타이머가 만료되지 않은 경우 자동 종료가 수행되지 않고 완전히 취소됩니다.[Timer][Service]

systemd이런 종류의 로직을 구현하기 위해 제가 생각해낸 유닛이 꽤 많으므로 여기에 모두 설치하는 쉘 스크립트가 있습니다. 스크립트는 " sudo루트 "로 한 번만 실행하면 됩니다(전체 시스템(사용자 범위 아님) 구성 systemd:

#!/bin/sh --

sysd=/etc/systemd/system

set -e

mkdir -p "$sysd/systemd-suspend.service.d"

cat > "$sysd/systemd-suspend.service.d/99-trigger-system-back-after-suspend.conf" <<'EOF'
[Service]
ExecStopPost=-/bin/systemctl --no-block start system-is-back-after-suspend.target
EOF

cat > "$sysd/cancel-self-poweroff.service" <<'EOF'
[Unit]
Description=Cancel self-poweroff after suspend
After=system-is-back-after-suspend.target
Conflicts=self-poweroff.timer

[Service]
Type=oneshot
ExecStart=/bin/rm -f /run/systemd/system/self-poweroff.timer

[Install]
WantedBy=system-is-back-after-suspend.target
EOF

cat > "$sysd/self-poweroff.service" <<'EOF'
[Unit]
Description=Actual self-poweroff after suspend
After=suspend.target 
Before=system-is-back-after-suspend.target
RefuseManualStart=true

[Service]
Type=oneshot
ExecStart=/bin/systemctl --no-block poweroff
# Uncomment the following line while commenting out the above line for testing.
#ExecStart=/bin/echo poweroff
# Note the echoed string goes to systemd journal log.
# Do a `systemctl daemon-reload` after modifying this file.
EOF

cat > "$sysd/schedule-self-poweroff.service" <<'EOF'
[Unit]
Description=Schedulation of self-poweroff after some time spent in suspend state
Before=systemd-suspend.service
Requisite=suspend.target

[Service]
Type=oneshot
EnvironmentFile=/etc/self-poweroff.conf
ExecStartPre=/bin/sh -c 'printf -- %%s\\\\n "[Timer]" "Persistent=yes" "OnCalendar=$(date -d "now + ${MY_SUSPEND_TIMEOUT}" "+%%Y-%%m-%%d %%H:%%M:%%S")" "AccuracySec=1s" "WakeSystem=yes" >| /run/systemd/system/self-poweroff.timer'
ExecStart=/bin/systemctl start self-poweroff.timer
# On systemd 237 onwards (Fedora 28 onwards) you may uncomment the line below while commenting out the above ExecStart and ExecStartPre lines
#ExecStart=/bin/sh -c 'systemd-run --on-calendar="$(date -d "now + ${MY_SUSPEND_TIMEOUT}" "+%%Y-%%m-%%d %%H:%%M:%%S")" --timer-property=AccuracySec=1s --timer-property=WakeSystem=yes --timer-property=Persistent=yes --unit=self-poweroff.service'
# Do a `systemctl daemon-reload` after modifying this file.

[Install]
WantedBy=suspend.target
EOF

cat > "$sysd/system-is-back-after-suspend.target" <<'EOF'
[Unit]
Description=Synchronization point for self-poweroff after suspend
DefaultDependencies=no
After=suspend.target
StopWhenUnneeded=yes
EOF

cat > /etc/self-poweroff.conf <<'EOF'
MY_SUSPEND_TIMEOUT=12 hours
EOF

systemctl enable schedule-self-poweroff.service cancel-self-poweroff.service
systemctl daemon-reload

장치를 설치하기 위해 스크립트를 실행한 후 /etc/self-poweroff.conf스크립트에 의해 생성되는 특수 파일에서 시간 초과를 변경할 수 있습니다. 여기에서 MY_SUSPEND_TIMEOUT변수를 원하는 시간으로 설정할 수 있으며 명령의 날짜 구문 분석 기능에 따라 시간을 hours분( ) 및/또는 초( ) 단위로 표시할 수 있습니다.minssecsdate -d

답변3

전체 답변을 알지 못하더라도 /etc/systemd/logind.conf다음 줄을 편집하고 추가하면 검색에 도움이 될 수 있습니다.

IdleAction=poweroff
IdleActionSec=720min

이렇게 하면 12시간의 "유휴" 시간이 지나면 시스템 전원이 꺼집니다. 하지만 세션이 일시 중단되면 유휴 상태로 보고될지 확실하지 않습니다.

관련 정보