Miałem ten sam problem, żadne z rozwiązań tutaj nie odpowiadało moim potrzebom. Używanie crona jest naprawdę obejściem, a nie rozwiązaniem, reguły udev są uruchamiane, gdy zasilanie jest podłączone / odłączone, ale nie po zawieszeniu / wznowieniu i pm-utils
nie są już domyślnie używane w Fedorze 19, gdy na przykład zamykasz pokrywę laptopa.
Ponieważ systemd
jest teraz odpowiedzialny za zawieszanie / hibernację, myślę, że jedynym właściwym sposobem radzenia sobie z tą sytuacją jest stworzenie systemd
jednostki, która będzie działała zarówno po rozruchu, jak i po wznowieniu z zawieszenia.
Uwagi:
- Używając
/dev/disk/by-id/...
zamiast /dev/sda
, zawsze masz pewność, że otrzymujesz właściwy dysk (sda, b, c zależy od kolejności, w jakiej są wykrywane przez jądro)
- Możesz mieć wiele
ExecStart
linii, dzięki czemu możesz skonfigurować wiele dysków
Oto jednostka, którą napisałem:
[Unit]
Description=Silence HD
After=suspend.target
[Service]
Type=oneshot
# Disable automatic head parking for the main disk
ExecStart=/sbin/hdparm -B 254 /dev/disk/by-id/ata-ST3250824AS_4N127FD1
# Enable automatic spin down after 30 seconds for the second, infrequently used disk
ExecStart=/sbin/hdparm -S 6 /dev/disk/by-id/ata-ST31000528AS_BVP5H5X1
[Install]
WantedBy=suspend.target basic.target
Zapisz ten plik jako, /etc/systemd/system/hdsilence.service
a następnie włącz go, używając:
systemctl enable hdsilence.service
systemctl daemon-reload
Możesz uruchomić system podczas uruchamiania polecenia, tworząc własną usługę systemd lub dodając polecenie do /etc/rc.d/rc.local.
Jeśli chcesz, aby polecenie było uruchamiane za każdym razem, gdy budzisz system po uśpieniu / hibernacji, możesz dodać skrypt, który zaczyna się od 2 cyfr do /etc/pm/sleep.d/, spójrz na inne skrypty w / usr / lib64 / pm-utils / sleep.d (przy założeniu x86_64) po więcej szczegółów. Zasadniczo wymaga parametru w zależności od tego, do jakiego stanu wchodzi. Być może trzeba będzie dodać login do power.d / w tym samym katalogu nadrzędnym, jeśli chcesz działać inaczej na zasilaniu bateryjnym niż w przypadku podłączenia.
źródło
creating your own systemd service
czy mógłbyś to sprecyzować? Nie mam pliku /etc/rc.d/rc.local./etc/rc.d/rc.local
Pliku jest tylko skrypt powłoki, utwórz go i upewnij się jej wykonywalny.W przypadku różnych ustawień w przypadku zasilania sieciowego / bateryjnego zrobiłbym to według prostej
udev
zasady, np ./etc/udev/rules.d/98-apmsettings.rules
:Ustawiałoby się
apm
to254
wtedy, gdy laptop jest podłączony i odpowiednio128
po odłączeniu. Ponadto powinien on zawsze działać, nawet po wznowieniu pracy w trybie zawieszenia.źródło
hdparm
w/usr/sbin
tak wyregulować ścieżki.Mam ten sam dysk (i ten sam problem). Moje głupie, ale działające rozwiązanie: umieściłem to w
/etc/crontab
:źródło
Reguły udev działają dobrze na zdarzeniach wtyczki, ale aby uzyskać prawidłowe zachowanie po wznowieniu zawieszenia, potrzebuję czegoś takiego
/etc/pm/sleep.d
:źródło