ฉันจะเก็บบันทึกการทำงานทั้งหมดที่ทำผ่านเทอร์มินัลได้อย่างไร ตัวอย่างเช่นฉันต้องการบันทึกงานทั้งหมดที่ทำบนฐานข้อมูลผ่านทางเทอร์มินัล
ฉันจะเก็บบันทึกการทำงานทั้งหมดที่ทำผ่านเทอร์มินัลได้อย่างไร ตัวอย่างเช่นฉันต้องการบันทึกงานทั้งหมดที่ทำบนฐานข้อมูลผ่านทางเทอร์มินัล
คำตอบ:
เมื่อคุณพร้อมที่จะเริ่มบันทึกไฟล์บันทึกให้พิมพ์:
script screen.log
ตอนนี้จนกว่าคุณจะหยุดสคริปต์อินพุตและเอาต์พุตทั้งหมดในเทอร์มินัลจะถูกเก็บไว้ใน screen.log เมื่อเสร็จแล้วให้พิมพ์:
exit
ไฟล์ screen.log ของคุณจะถูกเก็บไว้ในไดเรกทอรีท้องถิ่น หากคุณต้องการที่จะเปลี่ยนเส้นทางไปใช้ชื่อพา ธ ~/screen.log
สัมบูรณ์เช่น สิ่งนี้จะทำสิ่งที่คุณต้องการอย่างแน่นอน
แหล่งที่มา: คู่มือ Ubuntu - วิธีการสั่งคำสั่งเทอร์มินัล
man script
) แม้จะกล่าวถึงvi
(บรรณาธิการ) ...
ฉันมีวิธีที่ดีกว่าในการใช้ syslog สำหรับบันทึกคำสั่งเชลล์ทุกคำสั่งนี้อาจแตกต่างกันไปตามการกระจาย linux แต่วิธีการจะยังคงเหมือนเดิม
คุณต้องทำตามขั้นตอนบางอย่าง:
ขั้นตอนที่ 1 (สร้างบริการ Syslog)
# vim /etc/rsyslog.d/bash.conf
local6.* /var/log/commands.log
ขั้นตอนที่ 2 (เปิด bashrc และป้อนคำสั่งด้านล่าง)
# vim /root/.bashrc
# Enable CLI Logging by Mansur 08-12-2016
whoami="$(whoami)@$(echo $SSH_CONNECTION | awk '{print $1}')"export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$whoami [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
Ste # 3 (เริ่มบริการ Syslog ใหม่)
# /etc/init.d/rsyslog
นี่คือตัวอย่างบันทึก:
Dec 7 22:13:00 validationdb2 mahasan: root @ export [13291]: tail -f /var/log/mysql/mysql.log [0] 7 ธ.ค. 22:13:09 น. validationdb2 mahasan: root @ export [13291]: ls -lh [0] Dec 7 22:13:27 validationdb2 mahasan: root @ export [13291]: คำสั่งสัมผัส test [0]