GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Menulis Script Startup Untuk Systemd?

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:

  1. skrip:/usr/bin/vgaoff
  2. 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


Linux
  1. Linux – Lokasi Skrip Fsck?

  2. Bagaimana Cara Mengubah Pengguna Untuk Banyak File Layanan Systemd?

  3. Bagaimana Mengkonfigurasi Systemd Untuk Menghidupkan Script Sederhana Dengan Standardio Dalam Layanan Jaringan?

  1. Bagaimana Cara Mengemas Layanan Systemd?

  2. Cara menjalankan skrip shell saat startup

  3. Bagaimana cara menjalankan skrip sebelum yang lainnya dimatikan dengan systemd?

  1. Kelola startup menggunakan systemd

  2. Cara membuat layanan Systemd di Linux

  3. Bagaimana cara mengirim email jika layanan systemd di-restart?