Dua perintah yang kedengarannya sama tetapi mengerjakan hal berbeda. Hampir setiap "tadinya jalan sampai kami menyalakan ulang" adalah ini.
- start - jalankan sekarang. Tak berkata apa-apa tentang lain kali.
- enable - jalankan saat mesin menyala. Tidak menyalakannya sekarang.
- enable --now - keduanya sekaligus, dan hampir selalu itulah yang Anda maksud.
systemctl enable --now nginx
systemctl is-enabled nginx
systemctl is-active nginx
Membaca keadaannya
systemctl status php8.3-fpm
- active (running) - seperti yang diharapkan.
- active (exited) - ia berjalan lalu selesai. Benar untuk tugas sekali jalan, salah untuk sebuah daemon.
- failed - ia berhenti dan tak kembali. Sebabnya ada di jurnal.
- activating (auto-restart) - ia terjebak gelung kejatuhan. Menyalakannya ulang sekali lagi tak akan menolong.
Mengapa ia gagal
journalctl -u php8.3-fpm --since "1 hour ago" --no-pager | tail -40
reload, bukan restart
restart menjatuhkan setiap sambungan yang sedang berjalan. reload membaca ulang konfigurasinya dan mempertahankan sambungan itu. Untuk server web atau basis data, pakai reload kecuali perubahannya memang benar-benar butuh restart - dan periksa dulu konfigurasinya:
nginx -t.Sebuah unit milik Anda sendiri
# /etc/systemd/system/queue-worker.service
[Unit]
Description=Queue worker
After=network.target mariadb.service
[Service]
User=www-data
ExecStart=/usr/bin/php8.3 /var/www/site/worker.php
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now queue-worker
Jalankan daemon-reload sesudah menyunting berkas unit mana pun. Tanpa itu, systemd masih menjalankan definisi yang lama dan perubahan Anda tampak tak berbuat apa-apa.