GNU/Linux >> Belajar Linux >  >> Linux

Cara mengarahkan output dari layanan systemd ke file

Jika Anda memiliki distro yang lebih baru dengan systemd yang lebih baru (systemd versi 236 atau lebih baru), Anda dapat menyetel nilai StandardOutput atau StandardError ke file:YOUR_ABSPATH_FILENAME .

Cerita panjang:

Di versi systemd yang lebih baru ada opsi yang relatif baru (permintaan github berasal dari 2016 ish dan peningkatannya digabungkan/ditutup 2017 ish) di mana Anda dapat mengatur nilai StandardOutput atau StandardError ke file:YOUR_ABSPATH_FILENAME . file:path opsi didokumentasikan dalam systemd.exec terbaru halaman manual.

Fitur baru ini relatif baru sehingga tidak tersedia untuk distro lama seperti centos-7 (atau centos apa pun sebelumnya).


Saya pikir ada cara yang lebih elegan untuk menyelesaikan masalah:kirim stdout/stderr ke syslog dengan pengenal dan perintahkan manajer syslog Anda untuk membagi keluarannya dengan nama program.

Gunakan properti berikut di file unit layanan systemd Anda:

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<your program identifier> # without any quote

Kemudian, dengan asumsi distribusi Anda menggunakan rsyslog untuk mengelola syslog, buat file di /etc/rsyslog.d/<new_file>.conf dengan konten berikut:

if $programname == '<your program identifier>' then /path/to/log/file.log
& stop

Sekarang buat file log dapat ditulis oleh syslog:

# ls -alth /var/log/syslog 
-rw-r----- 1 syslog adm 439K Mar  5 19:35 /var/log/syslog
# chown syslog:adm /path/to/log/file.log

Mulai ulang rsyslog (sudo systemctl restart rsyslog ) dan nikmati! Stdout/stderr program Anda akan tetap tersedia melalui journalctl (sudo journalctl -u <your program identifier> ) tetapi juga akan tersedia di file pilihan Anda.

Sumber melalui archive.org


Linux
  1. Cara Mengarahkan Output ke File dan Stdout di Linux

  2. Cara membuat layanan Systemd di Linux

  3. Cara mengarahkan output dari proses yang sudah berjalan

  1. Bagaimana cara mengarahkan output dari system() ke file?

  2. Bagaimana cara mengarahkan output dari perintah waktu ke file di Linux?

  3. Cara mengarahkan seluruh output dari spark-submit ke file

  1. Kelola startup menggunakan systemd

  2. Cara mengarahkan output program sebagai inputnya

  3. redirect log layanan systemd ke file