Membaca man 5 systemd.unit
dan man 5 systemd.target
memberi tahu kami bahwa file unit digunakan untuk menentukan target dan juga semua yang lainnya systemd. Tidak ada dokumentasi khusus tentang cara membuat target , sehingga sulit untuk menentukan bagaimana harus dilakukan, tetapi tidak terlalu berbeda dengan membuat layanan.
Saat Anda membuat target, Anda perlu membuat symlink ke target.wants
direktori dari direktori layanan systemd. Kemudian Anda dapat mengatur / boot target Anda. Begini caranya terlihat diberikan contoh Anda.
/etc/systemd/system/foo.target
Ini adalah file unit target. Jika graphical.target diambil sebagai contoh, kita dapat membuat target kita sendiri dengan menggunakannya sebagai basis.
[Unit]
Description=Foobar boot target
Requires=multi-user.target
Wants=foobar.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target
AllowIsolate=yes
Untuk menjelaskan opsi yang diambil dari halaman manual systemd;
Description
- Menjelaskan target. Anda harus mengerti
Requires
- Ketergantungan yang sulit dari target. Anda harus membiarkan sistem dasar dimulai sebelum Anda memulai layanan Anda sendiri
Wants
- Ketergantungan lunak. Target tidak mengharuskan ini untuk memulai.
Conflicts
- Jika suatu unit memiliki pengaturan Konflik pada unit lain, memulai yang pertama akan menghentikan yang terakhir dan sebaliknya.
After
- Boot setelah layanan ini
AllowIsolate
- Benar-benar terserah Anda dan lingkungan Anda. Detail tersedia di halaman manualsystemd.unit(5)
/etc/systemd/system/foo.target.wants/
Ini adalah direktori tempat Anda akan menautkan layanan yang Anda buat / butuhkan untuk target Anda. Ini sama dengan Wants=
opsi dalam file unit. Buat direktori ini dan kemudian buat symlink seperti itu; ln -s /usr/lib/systemd/system/bar.service /etc/systemd/system/foo.target.wants/bar.service
. Ini menciptakan symlink dari bar.service di direktori sistem ke direktori foo.target.wants Anda.
Saya pikir membuat file unit untuk layanan agak di luar cakupan jawaban ini, dan pertanyaan itu jelas lebih didokumentasikan jadi saya akan meninggalkannya untuk saat ini. Saat Anda membuat file unit Anda, cukup sambungkan ke direktori target.wants atau tambahkan ke Wants=
direktif.
foo.target
keRequires
bidang danBefore
bidangmulti-user.target
, dan rasanyaRequires: base.target foo.target
. Setelah itu saya me-reboot Arch Linux vm saya, danfoobar.service
akan berjalan sebagai daemon secara otomatis.