Apakah mungkin untuk memberikan layanan systemd saya lebih dari satu argumen?
Saya ingin menjalankan program dengan banyak argumen yang harus diputuskan oleh pengguna akhir.
Misalnya: ./program arg1 arg2
Untuk memulainya aplikasi argumen tunggal saya perlu sesuatu seperti systemctl start arg1@program
, di mana dalam definisi layanan yang saya miliki ExecStart = /usr/bin/program ℅i
.
Terima kasih!
Jawaban:
Ya kamu bisa! Tentukan mereka dalam file di suatu tempat dan tambahkan ke
EnvironmentFile
dalam Layanan systemd Anda. Sebagai contoh, katakanlah isi /etc/.progconf adalah:Dan file layanan Anda:
Anda dapat menulis ke file itu jika Anda perlu mengubahnya saat bepergian. Suatu layanan seharusnya tidak terlalu sering mengubah opsi, mungkin mempertimbangkan autostarting atau cron jika Anda perlu mencapainya.
Untuk contoh lebih lanjut, periksa: https://wiki.archlinux.org/index.php/Systemd/Services
sumber
VAR1=... VAR2=... systemctl start foobar.service
untuk lulus variabel?PassEnvironment
arahan, tetapi dibutuhkan variabel darisystemd
proses (biasanya PID 1), bukan darisystemctl
. Variabel lingkungan darisystemctl
proses tidak disebarkan ke layanan yang dimulai.Saya ingin melakukan hal yang sama, tetapi tanpa file terpisah untuk setiap kombinasi argumen. Saya menemukan bahwa saya bisa melewati satu argumen panjang dengan spasi dan kemudian menggunakan fitur pemisah ruang variabel systemd untuk memisahkan argumen.
Saya membuat layanan dengan nama file
[email protected]
( perhatikan trailing 'at sign' yang diperlukan ketika layanan mengambil argumen ).Saya menjalankan ini dengan
sudo systemctl start argtest@"arg1 arg2 arg3".service
dan melewatiarg1
,arg2
danarg3
sebagai argumen baris perintah terpisah untuk test.py.sumber
Wants=argtest@"arg1 arg2".service
dan hanya argumen pertama disahkan.Paling mudah yang saya temukan adalah:
Menyimpannya tetap lengkap.
Karena itu, saya telah menemukan bahwa setidaknya pada Ubuntu 18.04 LTS, saya bahkan tidak perlu melakukan itu, saya dapat melakukan ini dan berfungsi dengan baik:
$vars
berfungsi sebagai argumen dengan pola ini juga.sumber