Saya menggunakan fitur bagus dari systemd: Layanan Instantiated.
Apakah ada cara sederhana untuk memuat ulang semua layanan instantiated dengan satu panggilan?
Contoh: Saya tidak ingin menjalankan semua seperti ini:
systemctl restart autossh@foo
systemctl restart autossh@bar
systemctl restart autossh@blu
Saya mencoba ini, tetapi ini tidak berhasil
systemctl restart autossh@*
Terkait: Mulai proses N dengan satu file layanan systemd
Memperbarui
Pertama saya terpesona oleh Instantiated Services, tetapi kemudian saya menyadari bahwa menjalankan alat manajemen konfigurasi seperti Ansible lebih masuk akal. Saya belajar: Menjaga alat tetap sederhana. Banyak alat mulai menerapkan pemeriksaan kondisi (jika .. lain ...) dan loop. Misalnya konfigurasi webserver atau mailserver. Tetapi ini harus dipecahkan pada level (atas) yang berbeda: manajemen konfigurasi. Lihat: https://github.com/guettli/programming-guidelines#dont-use-systemd-instantiated-units
systemctl status 'autossh@*'
output:autossh@\x2a.service - ... Active: inactive (dead)
Versi:systemd 195
systemctl restart autossh@{1..2}
(dengan N sebagai ganti bukan2
) yang sedikit kurang umum tetapi juga akan memulai proses jika merekainactive (dead)
.Tidak bagus, tetapi ini berfungsi untuk sistem dengan sistem lama:
Tentu saja solusi dari jawaban di atas (
systemctl restart 'autossh@*'
) lebih baik.sumber
cut
dapat menguraikan bidang yang salah jika ada layanan gagal dalam daftar unit output.@weirdan Jawabannya benar, tetapi tidak ada sesuatu untuk distribusi tertentu.
Untuk Centos 7 dan yang serupa , Anda dapat melakukan:
TETAPI, (mulai) akan HANYA berfungsi, jika Anda menentukan tanda "--all":
Kalau tidak, itu tidak akan menemukan layanan, karena mereka tidak ada. Ini adalah fitur yang dimaksudkan systemd.
Untuk sistem berbasis Ubuntu , ia bekerja dengan cara yang hampir sama, tetapi perbedaannya adalah bahwa flag "--all" harus ditentukan untuk semua argumen systemctl, jika tidak, ia tidak akan melakukan apa-apa.
sumber
Saya tidak tahu apakah ada opsi untuk wildcard di terminal untuk systemd. Yang dapat Anda lakukan adalah menambahkan satu di skrip systemd Anda.
% Saya akan melakukan trik yang saya pikir tetapi terkait dengan cara Anda membuat skrip layanan instantiated.
Anda dapat menemukan penjelasan di sini yang disebut sebagai penentu
yang menunjukkan bahwa:
Saya tidak langsung menjawab pertanyaan Anda, tetapi untuk apa yang saya kira Anda coba capai. Jika menurut Anda solusi Anda dapat ditemukan mengikuti ide ini, silakan bagikan skrip systemd Anda, sehingga kami akhirnya dapat mengilustrasikan dengan contoh dan bahkan mungkin memberikan Anda skrip akhir.
Jika Anda merasa percaya diri dalam mengedit skrip Anda sendiri untuk mencapai solusi seperti itu, di sini Anda memiliki contoh (saya tidak akan mengutipnya karena saya tidak tahu apakah itu relevan untuk solusi, dan terlalu spesifik untuk apa yang saya ' m melamar)
sumber