Artikel ini menerangkan SystemD, sistem Linux Init, yang memberi tumpuan kepada pengurusan perkhidmatan menggunakan SystemCTL. Ia meliputi permulaan, berhenti, membolehkan, melumpuhkan, dan perkhidmatan penyelesaian masalah, termasuk analisis log melalui JournalCtl. Artikel ini juga memperincikan c
SystemD adalah sistem init yang digunakan oleh kebanyakan pengagihan Linux moden. Ia menguruskan kitaran sistem permulaan, berhenti, dan keseluruhan perkhidmatan sistem. Tidak seperti sistem init lama seperti Sysvinit, SystemD menawarkan pendekatan yang lebih canggih dan mantap, memanfaatkan ciri -ciri seperti pengurusan ketergantungan dan permulaan perkhidmatan selari. Menguruskan Perkhidmatan dengan SystemD melibatkan menggunakan alat baris arahannya, terutamanya systemctl
. Memahami struktur unit sistem (fail yang menerangkan perkhidmatan, sasaran, dan komponen sistem lain) adalah penting untuk pengurusan yang berkesan. Unit -unit ini biasanya terletak di /etc/systemd/system/
dan direktori lain yang berkaitan. Unit -unit itu sendiri biasanya ditulis dalam bahasa konfigurasi yang mudah, menjadikannya mudah difahami dan diubah suai. Akhirnya, SystemD menyediakan mekanisme pembalakan yang mantap, membuat penyelesaian masalah lebih mudah daripada dengan sistem init yang lebih tua.
Perintah utama untuk berinteraksi dengan SystemD adalah systemctl
. Berikut adalah beberapa arahan biasa untuk mengurus perkhidmatan:
systemctl start <service_name></service_name>
. Sebagai contoh, untuk memulakan perkhidmatan SSH, anda akan menggunakan systemctl start ssh
. Perintah ini memulakan perkhidmatan jika ia belum berjalan.systemctl stop <service_name></service_name>
. Perintah ini dengan anggun menghentikan perkhidmatan yang ditentukan.systemctl restart <service_name></service_name>
. Perintah ini berhenti dan kemudian memulakan perkhidmatan. Berguna untuk menggunakan perubahan konfigurasi atau pulih daripada isu -isu kecil.systemctl enable <service_name></service_name>
. Perintah ini memastikan perkhidmatan bermula secara automatik pada masa boot. SystemD mencipta pautan simbolik untuk meletakkan unit perkhidmatan dalam direktori runlevel yang sesuai.systemctl disable <service_name></service_name>
. Perintah ini menghilangkan pautan simbolik, menghalang perkhidmatan dari bermula secara automatik pada boot.systemctl status <service_name></service_name>
. Perintah ini memaparkan status semasa Perkhidmatan, termasuk PID (ID Proses), keadaan aktif, dan mana -mana log baru -baru ini. Ia memberikan maklumat terperinci mengenai kesihatan perkhidmatan.systemctl list-units --type=service
. Perintah ini menyenaraikan semua perkhidmatan yang sedang berjalan. Anda boleh menambah --state=running
to Filter untuk hanya perkhidmatan berjalan.Apabila perkhidmatan SystemD gagal, beberapa alat membantu dalam menyelesaikan masalah:
systemctl status <service_name></service_name>
: Seperti yang dinyatakan sebelum ini, perintah ini sangat penting. Ia memberikan maklumat mengenai keadaan perkhidmatan, termasuk mesej ralat jika ada yang berlaku semasa permulaan atau runtime. Perhatikan status "gagal" atau "tidak aktif (mati)" dan mesej ralat berikutnya. JournalCTL: Perintah journalctl
adalah alat utama untuk melihat log sistem. Ia membolehkan anda menapis log berdasarkan nama perkhidmatan, masa, dan kriteria lain. Contohnya:
journalctl -u <service_name></service_name>
: Menunjukkan log khusus untuk perkhidmatan yang ditentukan.journalctl -u <service_name> -xe</service_name>
: Menunjukkan mesej ralat terkini untuk perkhidmatan tersebut.journalctl -u <service_name> -f</service_name>
: Mengikuti output log dalam masa nyata. Berguna untuk memerhatikan tingkah laku perkhidmatan semasa penyelesaian masalah./etc/systemd/system/
) untuk sebarang kesilapan sintaks atau konfigurasi yang salah. Mewujudkan perkhidmatan SystemD tersuai melibatkan membuat fail unit yang menerangkan perkhidmatan. Fail -fail ini biasanya mempunyai lanjutan .service
. Berikut adalah contoh asas fail perkhidmatan:
<code class="ini">[Unit] Description=My Custom Service After=network.target [Service] Type=simple User=myuser Group=mygroup ExecStart=/path/to/my/script.sh Restart=always RestartSec=5 [Install] WantedBy=multi-user.target</code>
[Unit]
Seksyen: Mengandungi metadata mengenai perkhidmatan, termasuk keterangan dan kebergantungannya.[Service]
Seksyen: Menentukan bagaimana perkhidmatan dijalankan, termasuk arahan untuk melaksanakan ( ExecStart
), pengguna dan kumpulan untuk menjalankannya sebagai, dan memulakan semula dasar.[Install]
Bahagian: Menentukan di mana perkhidmatan harus diletakkan dalam hierarki sistem. Selepas membuat fail ini (misalnya, /etc/systemd/system/mycustomservice.service
), anda perlu:
systemctl daemon-reload
systemctl enable mycustomservice
systemctl start mycustomservice
systemctl status mycustomservice
Ingatlah untuk menggantikan ruang letak seperti /path/to/my/script.sh
, myuser
, dan mygroup
dengan nilai sebenar anda. Menetapkan dengan betul pengguna dan kumpulan adalah penting untuk keselamatan. Restart=always
dan RestartSec=5
Pilihan Pastikan perkhidmatan dimulakan semula secara automatik jika ia terhempas, menunggu 5 saat sebelum cuba memulakan semula. Sentiasa menguji perkhidmatan tersuai anda dengan teliti sebelum menggunakannya ke persekitaran pengeluaran.
Atas ialah kandungan terperinci Bagaimanakah saya menguruskan perkhidmatan sistem dengan Systemd di Linux?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!