Saya menjalankan server dan log server ini masuk terminal, bukan dalam file apa pun. Saya ingin menggunakan lebih sedikit untuk melihat log ini.
node server.js | less
Ketika saya hanya ingin melihat log, saya menggunakan tekan Shift+ Funtuk sampai ke akhir file dan terus menonton log. Ketika saya ingin menghentikannya, saya menggunakan CTRL+ C.
Sayangnya, ini juga menghentikan server. Saya hanya ingin berhenti menonton akhir log tanpa menghentikan server.
Bagaimana cara melakukannya?
command-line
pipe
less
Ajay Kumar
sumber
sumber
less
dan kembali ke prompt shell Anda dengannode
server berjalan di latar belakang, atau apakah Anda hanya inginless
kembali ke mode non-following normal di mana Anda dapat menggulir log daripada melihat baris terbaru?Jawaban:
Saya tidak dapat menemukan cara untuk keluar dari
F
modeless
, jadi Anda harus menggunakan solusi. Sebagai contoh, simpan output ke file tmp dan kemudian tonton tmpfile itu sebagai gantinya:The
&
membuatnode.js
perintah berjalan di latar belakang. Ini berarti bahwaless tmpfile
akan segera dimulai dan akan melacak tmpfile.Setelah masuk
less
, Anda dapat menekan Funtuk masuk ke mode ikuti tetapi sekarang Ctrl+ Ctidak akan membunuh server, itu hanya akan menghentikan tindak. Anda sekarang dapat menggulir di sekitar seperti yang Anda inginkan dan dapat menekan Funtuk melanjutkan mengikuti.sumber
Tampaknya Anda biasanya tidak seharusnya keluar dari mode "Teruskan selamanya", yaitu cara manual
man less
menyebutkan mode yang Anda masukkan saat menekan Shift+ F.Namun, saya menemukan sedikit trik kotor bagaimana Anda dapat kembali normal. Ini akan membekukan perintah sebentar, jadi saya tidak yakin apakah itu akan cocok untuk server Anda yang mungkin harus berjalan tanpa gangguan.
Bagaimanapun, inilah caranya:
Saya berasumsi bahwa Anda sudah memulai
node server.js | less
dan menekan Shift+ Funtuk masuk ke mode "Maju selamanya". Sekarangless
tidak bereaksi terhadap penekanan tombol lagi.Dalam keadaan ini, Anda bisa menekan Ctrl+ Cuntuk mematikan proses server dan dapat berhenti
less
setelah itu dengan menekan Q(yang bagaimanapun akan meninggalkan perintah sebagai proses yang terhenti dalam daftar pekerjaan Anda - Anda harus menjalankanfg
untuk melanjutkan dan membiarkannya sepenuhnya berakhir setelah itu), tetapi ini bukan yang kita inginkan.Sebagai gantinya, Anda juga dapat menekan Ctrl+ Zuntuk menghentikan ("membekukan") perintah dan kembali ke prompt shell Anda. Sekarang dengan cepat ketik perintah shell
fg
(" f ore g round") untuk membiarkan perintah terus berjalan di latar depan. Perhatikan bahwanode
proses server Anda juga dijeda selama waktu yang singkat ini, Anda harus mempertimbangkan apakah ini dapat diterima atau tidak.Jadi sekarang
less
berjalan di latar depan lagi seperti sebelumnya, kan? Ya, tetapi secara ajaib itu tidak lagi dalam mode "Teruskan selamanya". Anda dapat menggunakan misalnya tombol panah lagi untuk menggulir ke atas dan ke bawah.Sayangnya,
less
tampaknya telah berhenti memperbarui buffer-nya sepenuhnya, Anda hanya dapat menggulir ke bawah di mana Anda membekukan perintah sebelumnya, tidak lebih jauh. Thenode
server masih berjalan dan menghasilkan output meskipun, kita hanya perlu mendapatkanless
untuk menyegarkan lagi.Cara termudah yang saya temukan untuk melakukannya adalah dengan hanya membuka
less
layar bantuan dan menutupnya lagi, dengan menekan tombol Hdan Qsecara berurutan. Sekarang semuanya tampaknya berfungsi dengan baik lagi.Namun solusi terbersih mungkin adalah mengikuti jawaban terdon dan mengarahkan output ke file temp, gunakan
less
untuk memonitor file.sumber
%
daripadafg
; Saya merasa lebih mudah / lebih cepat mengetik. Juga tampaknyaF
(shift-f) masih berfungsi bahkan tanpa melakukanhq
trik. Bagus! Sekarang ketika saya mengikuti log, saya bisactrl-z
%
Enter
, melakukan lebih sedikit, kemudian kembali mengikuti dengan memukulF
!less
ikuti fitur di beberapa terminal secara bersamaan.TSTP
sinyalnya mengganggu panggilan sistem baca yang sedang menunggu data baru tiba;less
menerima 0 byte dan menyimpulkan bahwa output telah berakhir. Untuk menghindari menjeda server, buka jendela terminal baru; melaksanakanps
dan mengidentifikasi id proses dariless
proses tersebut; lalu ketikkill -TSTP <PID>; kill -CONT <PID>
. Dengan cara ini sinyal harus dikirim kembali ke belakang, tanpa penundaan saat Anda mengetik.kill
, Anda bisa mengirim SIGINT saja. Maka Anda tidak perlu mengirimCONT
, danless
hanya menunggu Anda.Seperti kata pertanyaan Anda:
Saya berasumsi bahwa Anda tidak ingin menggunakan file log (temp), mungkin log Anda besar atau untuk alasan apa pun yang Anda miliki.
Named pipe,
fifo
file.Apa yang saya hasilkan adalah menggunakan file yang
named pipe file
juga dikenal sebagaififo
file, file ini hanya akan digunakan untuk mengurangi jumlah log Anda, dan tidak ada yang disimpan di dalamnya.Pertama buat
fifo file
:Jalankan server Anda dan arahkan kembali log ke file ini:
Gunakan lebih sedikit untuk membaca log Anda (-sekarang lebih sedikit untuk membaca file khusus ini):
Sekarang Anda dapat menggunakan shift+ Funtuk mengikuti, dan CTRL+ Cuntuk menghentikan ikuti, tetapi server masih berjalan, Anda dapat mengikuti output lagi dengan shift+ F.
Paket cadangan : Jika itu menghentikan server Anda, cukup masukkan perintah Anda (
node server.js > mylog &
) ke dalam file, misal:,server.sh
maka alih-alih jalankannode server.js > mylog &
jalankan:bash server.sh > mylog &
dan kemudian jalankanless -f mylog
.sumber
logrotate
.