현재 GNOME 전원 관리에서 시간 제한을 설정했는데 그 후에는 시스템이 정지됩니다.
일시 중지 중에 일정 기간 동안 활동이 없으면 시스템이 종료되도록 추가 시간 제한을 추가하고 싶습니다.
따라서 다음과 같습니다.
- 15분 동안 활동이 없으면 일시 중지합니다.
- 12시간 동안 활동이 없으면 종료됩니다.
답변1
최대 절전 모드가 정상이면 systemd를 사용하세요. 그러면 suspend-then-hibernate
시간 초과 후 정지된 시스템이 최대 절전 모드로 전환됩니다. 원하는 값 sleep.conf
으로 설정하세요 .HibernateDelaySec=
원천공식 시스템 매뉴얼.
편집하다:
최대 절전 모드 기능을 사용하려면 Fedora를 재구성하여 활성화해야 합니다.
- 먼저 스왑 파티션이 필요합니다적어도RAM 크기 - 최대 절전 모드는 RAM의 내용을 스왑 파티션에 저장하는 것을 의미하므로 크기는 설명이 필요하지 않습니다. 일반적으로 이는 현재 파티션을 축소하고 새 스왑 파티션을 생성하는 것을 의미합니다.
이에 대한 가이드는 다음과 같습니다.
- 예를 들어실시간으로 shink 파티션을 부팅하여, 예를 들어 cfdisk를 통해 스왑 파티션을 생성합니다.
- 또는이는 LVM을 통해 관리됩니다.
스왑 파티션을 추가 /etc/fstab
하고 활성화를 통해 사용하는 것을 잊지 마십시오 swapon -a
. fstab 항목 예:
# swap:
UUID=abc123-this-is-a-uuid none swap sw 0 0
- initramfs에 복구 옵션을 추가합니다. 이 목적을 위해 Fedora를
dracut
따르겠습니다.이 가이드.
/etc/dracut.conf.d/resume.conf
이 줄을 사용하여 파일을 만듭니다add_dracutmodules+=" resume "
(공백을 잊지 마세요).- 달리기
dracut -f
- 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
꼭 필요하다고는 생각하지 않지만, 아프지는 않을 것 같아요. 최대 절전 모드 활성화
/etc/systemd/sleep.conf
:[Sleep] AllowHibernation=yes HibernateMode=shutdown
재부팅 및 최대 절전 모드 테스트: 일부 창을 열고 실행합니다
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
분( ) 및/또는 초( ) 단위로 표시할 수 있습니다.mins
secs
date -d
답변3
전체 답변을 알지 못하더라도 /etc/systemd/logind.conf
다음 줄을 편집하고 추가하면 검색에 도움이 될 수 있습니다.
IdleAction=poweroff
IdleActionSec=720min
이렇게 하면 12시간의 "유휴" 시간이 지나면 시스템 전원이 꺼집니다. 하지만 세션이 일시 중단되면 유휴 상태로 보고될지 확실하지 않습니다.