Apakah file unit systemd harus dimuat ulang saat dimodifikasi?

138

Katakanlah saya menulis mine.servicefile. Lalu saya gunakan systemctl enable mine.service.

Jika nanti saya memutuskan untuk mengedit mine.service, apakah saya harus mengatakan systemditu mine.servicesudah diubah? Jika demikian, bagaimana saya melakukannya?

425nesp
sumber

Jawaban:

169

Setelah Anda membuat perubahan pada file unit Anda, Anda harus menjalankan systemctl daemon-reload, sebagaimana diuraikan di sini .

daemon-reload
Reload konfigurasi sistemd manajer. Ini akan menjalankan kembali semua generator (lihat systemd.generator (7) ), memuat ulang semua file unit, dan membuat ulang seluruh pohon dependensi. Ketika daemon sedang dimuat ulang, semua soket systemd mendengarkan atas nama konfigurasi pengguna akan tetap dapat diakses.

Anda kemudian dapat memulai kembali (atau memuat kembali) layanan sesuai keinginan Anda

systemctl restart your-service-name

(daemon-reload tidak akan memuat ulang / me-restart layanan itu sendiri, hanya membuat systemd menyadari konfigurasi baru)

GregL
sumber
2
Saya menemukan saya juga perlu menjalankan systemctl restartuntuk benar-benar me-restart layanan itu sendiri ...
hwjp
3
Hanya dalam kasus, daemon-reloadtidak universal, sudah mendapat untuk menjalankan systemctl --user daemon-reloadlayanan pengguna.
Olegs Jeremejevs
Sebagai catatan itu juga "menghapus konfigurasi sebelumnya yang dibuat oleh generator" sebelum menjalankannya kembali: freedesktop.org/software/systemd/man/systemd.generator.html
rogerdpack
8

Sebagai tambahan untuk jawaban di atas: Jika Anda mengubah sesuatu dalam [Install]arahan, Anda mungkin perlu menjalankan sudo systemctl reenable YOURUNITFILEuntuk membuat ulang symlink di direktori .target.

HomelessGamer
sumber
Ini berhasil bagi saya! Tidak mengerti mengapa systemctl tidak memuat ulang file layanan.
antonagestam