Kulağa aynı gelen ama farklı işler yapan iki komut. "Yeniden başlatana kadar çalışıyordu" cümlelerinin neredeyse hepsi budur.
- start - onu şimdi çalıştır. Bir dahaki sefer hakkında hiçbir şey söylemez.
- enable - onu açılışta çalıştır. Şimdi başlatmaz.
- enable --now - ikisi birden; neredeyse her zaman kastettiğiniz de budur.
systemctl enable --now nginx
systemctl is-enabled nginx
systemctl is-active nginx
Durumu okumak
systemctl status php8.3-fpm
- active (running) - beklendiği gibi.
- active (exited) - çalıştı ve bitti. Tek seferlik bir iş için doğru, bir art süreç için yanlış.
- failed - durdu ve geri gelmedi. Sebebi günlüktedir.
- activating (auto-restart) - çökme döngüsündedir. Onu bir kez daha başlatmak işe yaramaz.
Neden başarısız oldu
journalctl -u php8.3-fpm --since "1 hour ago" --no-pager | tail -40
restart değil, reload
restart, süregelen her bağlantıyı düşürür. reload ise yapılandırmayı yeniden okur ve onları korur. Bir web sunucusu ya da veritabanı için, değişiklik gerçekten yeniden başlatma istemiyorsa reload yapın - ve önce yapılandırmayı sınayın:
nginx -t.Kendinize ait bir birim
# /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
Herhangi bir birim dosyasını düzenledikten sonra daemon-reload yapın. O olmadan systemd hâlâ eski tanımı çalıştırıyordur ve değişikliğiniz hiçbir şey yapmamış gibi görünür.