Hierfür gibt es hauptsächlich zwei Ansätze:
- Wenn Sie ein Skript ausführen müssen, konvertieren Sie es nicht, sondern führen das Skript über einen
systemd
Dienst aus.
Dazu benötigen Sie zwei Dateien: das Skript und die .service
Datei (Gerätekonfigurationsdatei).
Stellen Sie sicher, dass Ihr Skript ausführbar ist und die erste Zeile (der Shebang ) ist #!/bin/sh
. Dann erstellen Sie die .service
Datei in /etc/systemd/system
(eine reine Textdatei, nennen wir es vgaoff.service
).
Zum Beispiel:
- das Drehbuch:
/usr/bin/vgaoff
- die Unit-Datei:
/etc/systemd/system/vgaoff.service
Bearbeiten Sie nun die Unit-Datei. Der Inhalt hängt davon ab, wie Ihr Skript funktioniert:
Wenn Sie vgaoff
nur die GPU ausschalten, zB:
exec blah-blah pwrOFF etc
dann sollte der Inhalt von vgaoff.service
sein:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff
[Install]
WantedBy=multi-user.target
Wird vgaoff
verwendet, um die GPU auszuschalten und auch wieder einzuschalten, z. B .:
start() {
exec blah-blah pwrOFF etc
}
stop() {
exec blah-blah pwrON etc
}
case $1 in
start|stop) "$1" ;;
esac
dann sollte der Inhalt von vgaoff.service
sein:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff start
ExecStop=/usr/bin/vgaoff stop
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
- In den einfachsten Fällen können Sie auf das Skript verzichten und einen bestimmten Befehl direkt ausführen:
Ausschalten:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
[Install]
WantedBy=multi-user.target
So schalten Sie das Gerät aus und wieder ein:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
ExecStop=/bin/sh -c "echo ON > /whatever/vga_pwr_gadget/switch"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Sobald Sie mit den Dateien fertig sind, aktivieren Sie den Dienst:
systemctl enable vgaoff.service
Beim nächsten Start wird es automatisch gestartet. Sie können den Dienst sogar auf einmal aktivieren und starten
systemctl enable --now vgaoff.service
ab systemd v.220
(bei älteren Setups müssen Sie es manuell starten).
Weitere Details finden Sie auf der systemd.service
Manpage.
Fehlerbehebung .
Beginnen Sie hier:
Wie wird das vollständige Protokoll eines systemd
Dienstes angezeigt?
systemd
Service-Exit-Codes und Erklärung der Statusinformationen
echo SOMETHING > /some/file
sie tun (oder überhaupt keinen anderen Befehl), sollten sich mit den Grundlagen von CLI vertraut machen, bevor Sie versuchen, Inhalte auf ihren Systemen auszuführen. Abgesehen davon lesen Sie, wie Sie dGPU auf mehreren Laptop-Modellen ausschalten, ob die dort verwendeten Befehle durch etwas ersetzt werden könnten, wie Sie es vorschlagen. Um die ursprüngliche Datei wiederherzustellen, installieren Sie in der Regel das zugehörige Paket neu.