Ich habe eine dieser Festplatten, die ein sehr aggressives Power-Management haben. Um zu verhindern, dass Lastzyklen auf kritische Zahlen ansteigen, habe ich eine udev-Regel geschrieben:
SUBSYSTEM=="block", SUBSYSTEMS=="scsi", ATTRS{model}=="TOSHIBA MK2555GS", RUN+="/usr/bin/hdparm -B 200 /dev/%k"
Das Problem ist, dass diese Regel nicht ausgelöst wird, nachdem ich mein Notebook aus dem Ruhezustand geweckt habe. Daher habe ich den folgenden systemd Service:
[Unit]
Description=root resume actions
After=suspend.target
[Service]
Type=simple
ExecStart=/bin/hdparm -B 200 /dev/sda
[Install]
WantedBy=suspend.target
Ich würde es vorziehen ExecStart
, wenn der Befehl so etwas wie wäre /bin/udevadm trigger --subsystem-match="block"
. Ich muss den Kernelnamen also nicht explizit angeben. Wenn ich diesen Befehl manuell ausführe, wird das Energiemanagement korrekt angepasst, funktioniert jedoch nicht über den systemd-Dienst. Gibt es eine Möglichkeit, dies zu tun? Übrigens benutze ich Arch-Linux
quelle
ExecStart= /bin/bash -c "/bin/udevadm trigger --subsystem-match='block'"
Ich befand mich in fast derselben Situation und möchte dieser Frage aufgrund ihrer Bedeutung bei Google für
systemd udevadm trigger
und als allgemeine Zusammenfassung, wie die absurden Standardeinstellungen in diesen Laufwerken gezähmt werden können , weitere Informationen hinzufügen .Sobald ich meine Western Digital Blue Laufwerk erkannt hat gönnerhaft, kontraproduktiv , anti-SMART-Gesundheit, kraftraub aktiviert Unsinn standardmäßig folgte ich fast den gleichen Prozess wie der OP. Ich habe die Firmware-Funktion deaktiviert, musste aber zusätzlich APM und Standby mit deaktivieren
hdparm
. ohne alle 3 lief der zügellose Lastzyklus weiter Amok.Der erste Unterschied besteht darin, dass, da ich
hdparm.rules
so eingestellt war, dass nur auf dem Gerät Add (Boot) aufgerufen wird,udevadm trigger
dies für mich nicht funktioniert, wenn ich nicht durch Hinzufügen angegeben habe, welcher Trigger angewendet werden soll--action=add
. Dies simuliert effektiv das Ent- / Wiedereinstecken der Festplatte bei Wiederaufnahme - genau das, was ich brauche.Aber ich hatte eine ähnliche Verwirrung wie das OP und konnte nicht herausfinden, warum ich
udevadm trigger
meinehdparm rule
Arbeit im Terminal neu laden sollte, aber nicht von einemsystemd service
. Es scheint, dass ich verschiedene Gründe hatte, die waren:service
Fall müssen wir den Speicherort der ausführbaren Datei explizit angeben,ExecStart /bin/udevadm
da die Einheitendateien nicht bekannt sind$path
.systemd/user
, das möglicherweise als ich ausgeführt wurde und daher nicht dieroot
erforderlichen Berechtigungen erhalten hat/sbin/hdparm
.(Ich verwende Debian 8, aber ich glaube nicht, dass dies distro-spezifisch ist.)
quelle
udev
dies zu verwenden, und bin zu einemsystemd
Dienst übergegangen, der durch Booten und nach allen Aktionen vom Typ Suspend ausgelöst wurde, diehdparm
für mich aufgerufen werden . Auf diese Weise kann ich alles an einem Ort verwalten -systemd
anstatt eineudev
Startregel und einensystemd
Wiederaufnahme-Service zu benötigen .