nohup.out
File saya berkembang cepat.
Saya menjalankan aplikasi di latar belakang, menulis nohup.out
file,
sekarang saya perlu memutar nohup.out
file tanpa mematikan aplikasi saya. Bisakah ini dilakukan?
nohup.out
File saya berkembang cepat.
Saya menjalankan aplikasi di latar belakang, menulis nohup.out
file,
sekarang saya perlu memutar nohup.out
file tanpa mematikan aplikasi saya. Bisakah ini dilakukan?
Jawaban:
Anda harus melihat belasan dalam kombinasi dengan logrotate
. Jika Anda menyalurkan output aplikasi Anda melalui ini, maka Anda dapat SIGHUP
memproses belasan tanpa harus mematikan aplikasi Anda yang sedang berjalan.
flog (file logger) adalah program yang membaca input dari STDIN dan menulis ke file.
Jika SIGHUP diterima, file akan dibuka kembali, memungkinkan rotasi log [lihat logrotate (8) di RH.]
File log hanya akan dibuka kembali jika belasan mendeteksi bahwa rotasi telah terjadi (yaitu, file lama hilang atau inode berubah). belasan sangat kecil (jejak memori kurang dari 500 byte.)
To save output to FILE, use 'nohup COMMAND > FILE'
Anda tidak dapat memutarnya. Anda dapat memotongnya dengan perintah >nohup.out
, yang akan menghapus semua konten dalam file.
Anda dapat menyalin file pertama dan kemudian memotongnya, jika Anda perlu menyimpan hasilnya. Tetapi ada jendela kecil untuk balapan, di mana output dapat ditulis setelah Anda menyalin file tetapi sebelum Anda memotongnya. Output apa pun yang ditulis selama jendela itu akan hilang selamanya.
copytruncate
di logrotate
. Tetapi nohup.out
jarang jenis file yang akan Anda konfigurasikan untuk tugas cron diputar.
Kamu tidak bisa
Anda dapat memutuskan tautan file (rm) tetapi data masih memiliki jejak pada disk dan akan terus ditulis selama ada pegangan file yang terbuka.
Anda dapat mengganti nama file - tetapi sekali lagi ini tidak menghentikannya ditulis (tetapi jika Anda memulai pekerjaan latar belakang secara teratur, yang lebih baru akan menulis ke file yang sama).
Benar-benar Anda harus secara eksplisit mengarahkan output pekerjaan ke sesuatu yang dirancang untuk menangani ini (mis. Apache rotatelogs ).
Tidak yakin apakah saya terlambat dalam hal ini. Tetapi untuk orang lain yang menemukan forum ini sekarang, saya tidak perlu mencoba apa pun dengan belasan atau apa pun.
Pekerjaan saya dimulai seperti ini:
nohup <my process> &
Ini memulai pekerjaan saya dan mulai menambahkan ke nohup.out di direktori itu.
Yang harus saya lakukan adalah mengatur logrotate yang biasanya datang dengan distro dan mengkonfigurasi sesuatu seperti ini di /etc/logrotate.conf
~/my abosolute path/nohup.out {
size 1024k
copytruncate
rotate 100
maxage 100
}
Dan itu berhasil !! nohup.out terpotong saat mendapatkan tambahan baru pada file yang sama. Prosesnya juga tidak mati. Dan nohup.out baru seperti nohup.out-20190528
ini telah dibuat.
Semoga ini membantu.
Logrotate memiliki opsi copytruncate yang tersedia, yang akan memotong (kosong) file yang Anda tentukan setelah disalin ke skema rotasi normal (dan kompresi, jika disetel).
copytruncate
Truncate the original log file in place after creating a copy,
instead of moving the old log file and optionally creating a new
one, It can be used when some program can not be told to close
its logfile and thus might continue writing (appending) to the
previous log file forever. Note that there is a very small time
slice between copying the file and truncating it, so some log-
ging data might be lost. When this option is used, the create
option will have no effect, as the old log file stays in place.
Dari halaman logrotate .
Anda dapat melakukan sesuatu seperti ini:
cp nohup.out nohup.out.save # save it somewhere
echo "" > nohup.out
Anda tidak perlu membunuh aplikasi Anda.