GNU/Linux >> Belajar Linux >  >> Linux

Systemd dengan banyak execStart

jika Type=simple dalam file unit Anda, Anda hanya dapat menentukan satu ExecStart, tetapi Anda dapat menambahkan sebanyak ExecStartPre , ExecStartPost , tetapi tidak satu pun dari ini cocok untuk perintah yang berjalan lama, karena dijalankan secara berurutan dan semua yang dimulai pertama dimatikan sebelum memulai yang berikutnya.

Jika Type=oneshot Anda dapat menentukan beberapa ExecStart, mereka berjalan secara serial bukan secara paralel.

Jika yang Anda inginkan adalah menjalankan beberapa unit secara paralel, ada beberapa hal yang dapat Anda lakukan:

Jika berbeda pada 1 parameter

Anda dapat menggunakan unit template, jadi Anda membuat /etc/systemd/system/[email protected] . CATATAN: (@ penting).

[Unit]
Description=script description %I

[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure

[Install]
WantedBy=multi-user.target

Dan kemudian Anda mengeksekusi:

$ systemctl start [email protected] [email protected]

atau...

Ketergantungan target

Anda dapat membuat beberapa unit yang tertaut ke satu target:

#/etc/systemd/system/bar.target
[Unit]
Description=bar target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes

Dan kemudian Anda tinggal memodifikasi unit .service Anda menjadi WantedBy=bar.target seperti:

#/etc/systemd/system/[email protected]
[Unit]
Description=script description %I

[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure

[Install]
WantedBy=bar.target

Kemudian Anda cukup mengaktifkan layanan foo yang Anda inginkan secara paralel, dan mulai bilah target seperti ini:

$ systemctl daemon-reload
$ systemctl enable [email protected]
$ systemctl enable [email protected]
$ systemctl start bar.target

CATATAN: bahwa ini bekerja dengan semua jenis unit tidak hanya unit template.


Anda dapat menggunakan ExecStartPre atau ExecStartPost untuk salah satu skrip

[Unit]
Description=script description

[Service]
Type=simple
ExecStartPre=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure

[Install]
WantedBy=multi-user.target

Linux
  1. Menggunakan beberapa pola sekaligus dengan perintah Sed

  2. Apakah Systemd Masih Tahu Tentang Runlevel?

  3. Kesalahan Ini Tentang Pemula/systemd Dengan Runit?

  1. Letakkan File Unit Systemd?

  2. Boot Non-grafis Dengan Systemd?

  3. Menyortir banyak kunci dengan pengurutan Unix

  1. Penanganan sinyal dengan banyak utas di Linux

  2. Menyortir angka dengan banyak desimal di bash

  3. Automount USB drive dengan systemd