Saya baru saja memutakhirkan dari server Ubuntu 14 ke versi 15. Saya mengalami kesulitan membuat skrip pemula saya berfungsi setelah peningkatan, dan membaca bahwa systemd adalah default baru. Saya jauh dari ahli linux, jadi tolong mudahkan saya :-)
Berikut ini skrip pemula saya sebelumnya:
description "NZBGet upstart script"
setuid robert
setgid robert
start on runlevel [2345]
stop on runlevel [016]
respawn
expect fork
script
exec nzbget -D
end script
pre-stop script
exec nzbget -Q
end script
Berdasarkan halaman wiki pemula untuk systemd , saya menggunakan tabel yang disediakan di sana untuk memetakan hal-hal sedekat mungkin dalam file layanan systemd baru saya:
[Unit]
Description=NZBGet Service
[Service]
Type=forking
ExecStart=/usr/local/bin/nzbget -D
ExecStop=/usr/local/bin/nzbget -Q
Restart=on-failure
File ini terletak di /home/robert/.config/systemd/user/nzbget.service
. Untuk memulai layanan secara manual, saya telah melakukan:
$ systemctl --user start nzbget
Ini sangat bagus. Namun, ketika saya keluar dari sesi SSH saya, layanan dimatikan. Juga, ini tidak dimulai saat bootup atau login pengguna. Saya ingin berperilaku sama seperti yang dilakukan sebagai layanan pemula: Saya ingin itu mulai saat boot, berjalan terus-menerus, dan sebagai pengguna tertentu.
Apa yang harus saya lakukan untuk mendapatkan konfigurasi ini?
systemctl enable
perintah, ini tidak jelas bagi saya pada awalnya. Juga mengaktifkan memberi saya beberapa peringatan tentang[Install]
bagian yang hilang . Saya mengabaikannya, tapi saya tidak yakin apakah ini akan memengaruhi kemampuannya untuk memulai saat boot.Install
peringatan itu sebenarnya sangat penting. Itu tidak akan mulai saat boot tanpa diWantedBy=multi-user.target
bawah[Install]
bagian. Setelah menambahkan ini ke.service
file, maka Anda bisaenable
melakukannya.[Install]
bagian. Semoga sekarang lebih bermanfaat bagi siapa pun yang mencarinya.[email protected]
kemudianenable
d seperti[email protected]
pengaturan menjadiUser=%i
berarti pengguna tidak memiliki kode keras dan banyak pengguna dapat menggunakan definisi yang sama. Sebuah contoh./etc/systemd/user/
?Anda mungkin tertarik menggunakan fungsionalitas "user lingering" systemd. Ini diaktifkan melalui
loginctl enable-linger USERNAME
.Ini menyebabkan manajer layanan terpisah untuk masing-masing pengguna yang memulai boot, sehingga unit yang ditentukan pengguna
~/.config/systemd/user
akan diambil dan diproses pada waktu boot dan shutdown sesuai dengan konfigurasi layanan Anda.Anda juga dapat menggunakan
systemctl --user
untuk mengelola dan mengkonfigurasi layanan, yang akan beroperasi pada manajer layanan pengguna Anda, bukan yang ada di sistem.sumber
systemctl --user
adalah temuan yang fantastis. Terima kasih!systemctl --user
tampaknya tidak berfungsi untuk sesi SSH.