Herhangi bir modern Linux'ta, başlamayan bir hizmet nedenini çoktan tam olarak yazmıştır. O, günlüğün içindedir; insanların kayıtlarda hiçbir şey yok demesinin sebebi ise journalctl'i argümansız çalıştırıp büyüklüğü karşısında pes etmiş olmalarıdır.

İşi gören beş bayrak

journalctl -u nginx -n 50 --no-pager   # the last 50 lines for one unit
journalctl -u nginx -f                # follow it live
journalctl -u nginx --since "10 min ago"
journalctl -p err -b                  # errors only, this boot
journalctl -b -1                      # the boot BEFORE this one
Açıklanamayan bir yeniden başlatmadan sonra uzanacağınız şey -b -1'dir: makinenin düşmeden hemen önce ne söylediğini gösterir; mevcut açılışta bunlar yoktur.

Bir hizmet başlamıyorsa

systemctl status app --no-pager -l
journalctl -u app -n 100 --no-pager

status çıkış kodunu ve son birkaç satırı gösterir; gerisini günlük gösterir. Hemen başarısız olan bir birim neredeyse her zaman bir yol, bir izin ya da kullanımdaki bir kapıdır - üçü de bunu açık sözlerle söyler.

Diskteki günlük

Varsayılan olarak uçucu olabilir - bellekte tutulur ve yeniden başlatmada kaybolur; yani tam da ona ihtiyaç duyduğunuz anda. Onu kalıcı yapın.

sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald
journalctl --disk-usage

Diski doldurmasını önleyin

# /etc/systemd/journald.conf
SystemMaxUse=500M
MaxRetentionSec=1month
Kendi dosyasını yazan bir uygulama - Nginx erişim kayıtları, PHP-FPM yavaş kayıtları - günlükte değildir. Onlar /var/log içindedir ve ayrıca döndürülür; bakınız kayıt döndürme.