Saya masih mendapatkan pegangan dengan systemd dan telah mengalami sesuatu. Ini bukan masalah, tapi saya ingin belajar lebih banyak tentang cara ini. Saya tidak dapat menemukan referensi untuk ini di tempat lain.
Pertama, saya mengerti bahwa file unit kustom untuk layanan harus masuk /etc/systemd/system
. Namun, akan lebih baik untuk manajemen server kami jika file unit dapat ditemukan di tempat lain.
Dalam dokumentasi, saya melihat bahwa Anda dapat 'menautkan' file unit seperti:
systemctl link /path/to/servicename.service
Ini akan membuat tautan ke atas di /etc/systemd/system
. Anda sekarang dapat memulai / menghentikan layanan ini. Di permukaan, ini sepertinya cara yang baik bagi kami untuk mengelola layanan kami.
Namun, mencoba mengaktifkan file unit 'tertaut' tersebut menyebabkan kegagalan:
root@test1:/etc/systemd/system# systemctl link /root/myservice.service
Created symlink from /etc/systemd/system/myservice.service to /root/myservice.service.
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/root/myservice.service; linked; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Failed to execute operation: No such file or directory
Dengan menggunakan file unit yang sama persis, tetapi disalin ke dalam /etc/systemd/system
bukannya ditautkan, Anda mendapatkan:
root@test1:/etc/systemd/system# cp -p /root/myservice.service .
root@test1:/etc/systemd/system# systemctl daemon-reload
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/etc/systemd/system/myservice.service; disabled; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myservice.service to /etc/systemd/system/myservice.service.
Dari ini, tampaknya tidak mungkin untuk mengaktifkan file unit yang ditautkan untuk dipanggil saat startup sistem.
Jika ini masalahnya, apa gunanya fungsi 'tautan'? Dari dokumen, dikatakan:
tautan FILENAME
Tautkan file unit yang tidak ada di jalur pencarian file unit ke jalur pencarian file unit. Ini membutuhkan jalur absolut ke file unit. Efek dari ini dapat dibatalkan dengan menonaktifkan. Efek dari perintah ini adalah bahwa file unit tersedia untuk memulai dan perintah lain meskipun tidak diinstal secara langsung di jalur pencarian unit.
systemctl enable
juga akan dilakukansystemctl link
, jadi tidak perlu mengetik 2 perintah ;-)Saat mengaktifkan layanan dari jalur lain selain jalur default, Anda harus menggunakan jalur lengkap. Aktifkan juga akan membuat tautan untuk Anda:
Setelah diaktifkan, Anda dapat memulai / menghentikan / status dengan nama layanan
Beberapa peringatan di sini:
sumber