Apakah ada cara mudah untuk mencatat semua aktivitas yang terjadi dari skrip shell ke file?
Saya punya skrip. Ini output hal-hal seperti "instruksi" gema, serta output program lainnya. Saya tahu perintahnya:
command | tee -a "$log_file"
dan
command >> logifle.log
Yang saya tanyakan adalah apakah ada parameter shell untuk logging, atau perintah set yang bisa saya gunakan atau sesuatu seperti itu. Saya tidak perlu ingin menambahkan puluhan arahan ulang atau tee ke file jika saya tidak perlu. Saya masih ingin mendapatkan output std - Saya hanya juga ingin login .:wq
Jawaban:
jika Anda biasanya menjalankan skrip Anda
foo.sh
, coba jalankan (anggap itu skrip bash)bash -x foo.sh
. Jika Anda ingin semuanya diarahkan ke file, cobabash -x foo.sh > file.log 2>&1
(perhatikan saya juga mengarahkan stderr, hapus2>&1
jika Anda tidak menginginkan ini). Jika Anda juga ingin melihat apa yang terjadibash -x foo.sh 2>&1 | tee log.file
,.sumber
Ada cara yang sangat mudah dan praktis:
Menggunakan
script
untuk membuat naskah sesi terminalMulai perintah
script
Jika argumen
file
diberikan, misalnyascript ~/tmp/output
,script
simpan dialog di file ini. Jika tidak ada nama file yang diberikan, dialog disimpan dalam filetypescript
Mulai skrip Anda atau apa pun yang ingin Anda mulai
Jika skrip Anda selesai, berhenti
script
melalui Ctrl-DPeriksa output di file output default
typescript
Untuk memulai perintah Anda dalam satu langkah
script
, gunakan parameter-c
Penggunaan
script
di dalam skrip Anda tidak masuk akal karenascript
memecah shell atau memulai shell baru.sumber
script logfilename
, jadi saya bisa mengambilnya.script
bermanfaat juga pemantauan melalui fifo. Dariman script
: "-f, --flush
Keluarkan output setelah setiap penulisan. Ini bagus untuk operasi telecenter: satu orang melakukannyamkfifo foo; script -f foo
, dan yang lain dapat mengawasi secara real-time apa yang sedang dilakukan menggunakancat foo
". Hal ini juga dapat digunakan untuk memantau ketika suatu program sedang menunggu input atau dilakukan misalnya dengan memantau stempel waktu fifo.