Existem basicamente duas abordagens para fazer isso:
- Se você precisar executar um script, não o converterá, mas execute o script por meio de um
systemd
service.
Portanto, você precisa de dois arquivos: o script e o arquivo .service
(arquivo de configuração da unidade).
Certifique-se de que seu script é executável e a primeira linha (o shebang ) é #!/bin/sh
. Em seguida, crie o arquivo .service
em /etc/systemd/system
(um arquivo de texto simples, vamos chamá-lo de vgaoff.service
).
Por exemplo:
- o script:
/usr/bin/vgaoff
- o arquivo de unidade:
/etc/systemd/system/vgaoff.service
Agora, edite o arquivo da unidade. Seu conteúdo depende de como seu script funciona:
Se vgaoff
apenas desligar a GPU, por exemplo:
exec blah-blah pwrOFF etc
o conteúdo de vgaoff.service
deve ser:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff
[Install]
WantedBy=multi-user.target
Se vgaoff
for usado para desligar a GPU e também para ligá-la novamente, por exemplo:
start() {
exec blah-blah pwrOFF etc
}
stop() {
exec blah-blah pwrON etc
}
case $1 in
start|stop) "$1" ;;
esac
o conteúdo de vgaoff.service
deve ser:
[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
- Para os casos mais triviais, você pode fazer sem o script e executar um determinado comando diretamente:
Para desligar:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
[Install]
WantedBy=multi-user.target
Para desligar e ligar:
[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
Depois de concluir os arquivos, ative o serviço:
systemctl enable vgaoff.service
Ele será iniciado automaticamente na próxima inicialização. Você pode até mesmo ativar e iniciar o serviço de uma só vez com
systemctl enable --now vgaoff.service
a partir de systemd v.220
(em configurações mais antigas, você terá que iniciá-lo manualmente).
Para obter mais detalhes, consulte a systemd.service
página de manual.
Solução de problemas .
Comece aqui:
Como ver o log completo de um serviço systemd
?
systemd
códigos de saída de serviço e explicação de informações de status