Risposte:
Ci sono principalmente due approcci per farlo:
systemdservizio.Pertanto sono necessari due file: lo script e il .servicefile (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 .servicefile in /etc/systemd/system(un file di testo semplice, chiamiamolo vgaoff.service).
Per esempio:
/usr/bin/vgaoff/etc/systemd/system/vgaoff.serviceOra modifica il file dell'unità. Il suo contenuto dipende da come funziona il tuo script:
Se vgaoffsi spegne semplicemente la GPU, ad esempio:
exec blah-blah pwrOFF etc
quindi il contenuto di vgaoff.servicedovrebbe essere:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff
[Install]
WantedBy=multi-user.target
Se vgaoffviene 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.servicedovrebbe 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.servicela pagina del manuale.
Risoluzione dei problemi .
Inizia qui:
come visualizzare il registro completo di un systemdservizio?
systemdcodici di uscita del servizio e spiegazione delle informazioni sullo stato
echo SOMETHING > /some/filefa (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.