J'ai 2 maps charts sur mon ordinateur portable. L'un est IGP et un autre discret.
J'ai écrit un script shell pour désactiver la carte graphique discrète.
Comment puis-je le convertir en script systemd pour l'exécuter au démarrage?
Il y a principalement deux approches pour le faire:
systemd
. Par conséquent, vous avez besoin de deux files: le script et le file .service
(file de configuration de l'unité).
Assurez-vous que votre script est exécutable et que la première ligne (le shebang ) est #!/bin/sh
. Ensuite, créez le file .service
dans /etc/systemd/system
(un file text brut, appelons-le vgaoff.service
).
Par exemple:
/usr/bin/vgaoff
/etc/systemd/system/vgaoff.service
Maintenant, éditez le file d'unité. Son contenu dépend du fonctionnement de votre script:
Si vgaoff
simplement le GPU, par exemple:
exec blah-blah pwrOFF etc
alors le contenu de vgaoff.service
devrait être:
[Unit] Description=Power-off gpu [Service] Type=oneshot ExecStart=/usr/bin/vgaoff [Install] WantedBy=multi-user.target
Si vgaoff
est utilisé pour éteindre le GPU et pour le rallumer, par exemple:
start() { exec blah-blah pwrOFF etc } stop() { exec blah-blah pwrON etc } case $1 in start|stop) "$1" ;; esac
alors le contenu de vgaoff.service
devrait être:
[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
Pour éteindre:
[Unit] Description=Power-off gpu [Service] Type=oneshot ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch" [Install] WantedBy=multi-user.target
Pour éteindre et allumer:
[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
Une fois que vous avez terminé avec les files, activez le service:
systemctl enable vgaoff.service
Il devrait démarrer automatiquement après le redémarrage de la machine.
Pour plus de détails, voir la page de manuel systemd.service
.