Risposte:
Ci sono principalmente due approcci per farlo:
systemd
servizio.Pertanto sono necessari due file: lo script e il .service
file (file di configurazione dell'unità).
Assicurati che il tuo script sia eseguibile e la prima riga (lo shebang ) lo sia #!/bin/sh
. Quindi crea il .service
file in /etc/systemd/system
(un file di testo semplice, chiamiamolo vgaoff.service
).
Per esempio:
/usr/bin/vgaoff
/etc/systemd/system/vgaoff.service
Ora modifica il file dell'unità. Il suo contenuto dipende da come funziona il tuo script:
Se vgaoff
si spegne semplicemente la GPU, ad esempio:
exec blah-blah pwrOFF etc
quindi il contenuto di vgaoff.service
dovrebbe essere:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff
[Install]
WantedBy=multi-user.target
Se vgaoff
viene utilizzato per spegnere la GPU e anche per riaccenderla, ad esempio:
start() {
exec blah-blah pwrOFF etc
}
stop() {
exec blah-blah pwrON etc
}
case $1 in
start|stop) "$1" ;;
esac
quindi il contenuto di vgaoff.service
dovrebbe essere:
[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
Per spegnere:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
[Install]
WantedBy=multi-user.target
Per spegnere e riaccendere:
[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
Una volta terminati i file, abilita il servizio:
systemctl enable vgaoff.service
Si avvierà automaticamente al prossimo avvio. È anche possibile abilitare e avviare il servizio in una volta sola
systemctl enable --now vgaoff.service
a partire da systemd v.220
(su configurazioni precedenti dovrai avviarlo manualmente).
Per maggiori dettagli consultare systemd.service
la pagina del manuale.
Risoluzione dei problemi .
Inizia qui:
come visualizzare il registro completo di un systemd
servizio?
systemd
codici di uscita del servizio e spiegazione delle informazioni sullo stato
echo SOMETHING > /some/file
fa (o qualsiasi altro comando di fatto) dovrebbero acquisire familiarità con le basi della CLI prima di tentare di eseguire roba sui propri sistemi. A parte questo, FYI, leggere come passare dGPU off su diversi modelli di laptop, vedere se i comandi usati ci potrebbe essere sostituito con qualcosa come lei suggerisce. Inoltre, per ripristinare il file originale di solito reinstalli il pacchetto che lo possiede.