GNU/Linux >> Belajar Linux >  >> Linux

Daemontools Multilog Kehilangan Informasi Waktu Baris Log. Bagaimana memperbaikinya?

Saya menggunakan daemontools untuk memantau proses dan log outputnya. Saya menggunakan multilog untuk menulis log ke disk.

Skrip run untuk log adalah:

#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
cd /usr/local/script_dir
exec multilog t s16777215 n50 '!tai64nlocal' '!/bin/gzip' /var/log/script_log

Proses yang dipantau, juga menulis output ke stderr. Jadi di skrip run untuk proses ada baris berikut untuk mengarahkan stderr ke stdout:

exec 2>&1
exec ./my_process

Namun, saat mengekor file log, saya melihat ratusan baris keluaran datang secara beruntun (proses yang dipantau menulis keluaran setiap beberapa detik), dan stempel waktu pada baris log berbeda dalam level sub-mikrodetik. Saya tahu dari sifat prosesnya bahwa perbedaan waktu antara garis-garis log tidak terlalu kecil. Jelas multilog adalah buffering output dan kemudian menambahkan cap waktu ketika siap untuk menulis ke file. Saya ingin stempel waktu untuk lebih mencerminkan waktu di mana garis itu dikeluarkan. Bagaimana ini bisa diperbaiki?

Jawaban yang Diterima:

Skrip yang dipantau adalah skrip Python. Untuk membuat semua aliran standar tidak dibuffer, saya menemukan bahwa seseorang dapat melewati -u pilihan untuk penerjemah. Ini memecahkan masalah dalam kasus saya.


Linux
  1. Crontab Log:Cara Mencatat Keluaran Skrip Cron Saya

  2. Cara mengarahkan output dari proses yang sudah berjalan

  3. Bagaimana cara mendaftar satu nama file per baris keluaran di Linux?

  1. Bagaimana cara mengekstrak waktu durasi dari keluaran ffmpeg?

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

  3. Bagaimana cara mencetak keluaran perintah Linux ke file?

  1. Bagaimana cara mendapatkan semua id proses yang sedang berjalan saja?

  2. Bagaimana suatu proses tampaknya memiliki nama yang berbeda dalam keluaran ps?

  3. Bagaimana cara mengurutkan keluaran ps berdasarkan waktu mulai proses?