Saya memiliki 2 kartu grafis di laptop saya. Salah satunya adalah IGP dan yang lainnya diskrit.
Saya telah menulis skrip shell untuk mematikan kartu grafis diskrit.
Bagaimana saya bisa mengonversinya ke skrip systemd untuk menjalankannya saat start-up?
Jawaban yang Diterima:
Terutama ada dua pendekatan untuk melakukan itu:
- Jika Anda harus menjalankan skrip, Anda tidak mengonversinya melainkan menjalankan skrip melalui
systemd
layanan.
Oleh karena itu Anda memerlukan dua file:skrip dan .service
file (file konfigurasi unit).
Pastikan skrip Anda dapat dieksekusi dan baris pertama (shebang ) adalah #!/bin/sh
. Kemudian buat .service
file di /etc/systemd/system
(file teks biasa, sebut saja vgaoff.service
).
Misalnya:
- skrip:
/usr/bin/vgaoff
- file unit:
/etc/systemd/system/vgaoff.service
Sekarang, edit file unit. Kontennya bergantung pada cara kerja skrip Anda:
Jika vgaoff
matikan saja gpu, mis.:
exec blah-blah pwrOFF etc
lalu isi vgaoff.service
seharusnya:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/usr/bin/vgaoff
[Install]
WantedBy=multi-user.target
Jika vgaoff
digunakan untuk mematikan GPU dan juga untuk menyalakannya kembali, mis.:
start() {
exec blah-blah pwrOFF etc
}
stop() {
exec blah-blah pwrON etc
}
case $1 in
start|stop) "$1" ;;
esac
lalu isi vgaoff.service
seharusnya:
[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
- Untuk kasus yang paling sepele, Anda dapat melakukannya tanpa skrip dan menjalankan perintah tertentu secara langsung:
Untuk mematikan:
[Unit]
Description=Power-off gpu
[Service]
Type=oneshot
ExecStart=/bin/sh -c "echo OFF > /whatever/vga_pwr_gadget/switch"
[Install]
WantedBy=multi-user.target
Untuk mematikan dan menghidupkan:
[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
Setelah Anda selesai dengan file, aktifkan layanan:
systemctl enable vgaoff.service
Ini akan mulai secara otomatis pada boot berikutnya. Anda bahkan dapat mengaktifkan dan memulai layanan sekaligus dengan
systemctl enable --now vgaoff.service
pada systemd v.220
(pada penyiapan lama, Anda harus memulainya secara manual).
Untuk detail selengkapnya, lihat systemd.service
halaman manual.
Pemecahan Masalah .
Mulai di sini:
Cara melihat log lengkap systemd
layanan?systemd
kode keluar layanan dan penjelasan informasi status