Làm cách nào để ghi nhật ký tất cả đầu vào và đầu ra trong phiên cuối?


46

Làm cách nào để giữ nhật ký của tất cả các công việc được thực hiện qua thiết bị đầu cuối? Ví dụ, tôi muốn một bản ghi tất cả các công việc được thực hiện trên cơ sở dữ liệu thông qua thiết bị đầu cuối.


Điều này cũng được xây dựng thành sudo.
Wilhelm Erasmus

Tôi đã thêm câu trả lời của mình mà bạn có thể xem lại
Mansur Ali

Câu trả lời:


66

Khi bạn đã sẵn sàng bắt đầu ghi tệp nhật ký, hãy nhập:

script screen.log

Bây giờ, cho đến khi bạn dừng tập lệnh, tất cả đầu vào và đầu ra trong Terminal sẽ được lưu trữ trong screen.log. Khi bạn đã hoàn tất, chỉ cần gõ:

exit

Tập tin screen.log của bạn sẽ được lưu trong thư mục cục bộ. Nếu bạn muốn chuyển hướng nó, hãy sử dụng một tên đường dẫn tuyệt đối như ~/screen.log. Điều này sẽ làm chính xác những gì bạn đang tìm kiếm.

Nguồn: Hướng dẫn Ubuntu - Cách đăng nhập các lệnh thiết bị đầu cuối


Hi, cảm ơn bạn đã trả lời. Nhưng nó sẽ hoạt động nếu tôi đăng nhập vào cơ sở dữ liệu mysql từ trình bao bằng cách sử dụng trình tự sau: - 1) script screen.log 2) mysql -u <user> -p <cơ sở dữ liệu> 3) một số hoạt động trên cơ sở dữ liệu 4) thoát; Tôi thấy rằng tệp screen.log được tạo nhưng nó không chứa nhật ký cho cơ sở dữ liệu. Tôi sẽ chia sẻ tập tin càng sớm càng tốt. Cảm ơn Ankt
Ankit

2
nó nên hoạt động với mọi thứ đang chạy trong bảng điều khiển đọc từ "đầu vào tiêu chuẩn" (thường là bàn phím của bạn) và ghi vào đầu ra tiêu chuẩn (thường là cửa sổ đầu cuối của bạn). Vì vậy, nó nên bao gồm máy khách dòng lệnh mysql. Trang man ( man script) thậm chí có đề cập vi(biên tập viên) ...
Izzy

10

Bạn có thể muốn thử Asciinema . Ngoài việc chỉ tạo một bản ghi, bạn có khả năng chia sẻ và nhúng trình phát trên blog, bài viết của bạn hoặc trong một cuộc hội thảo.


6

Tôi có một cách tốt hơn để sử dụng syslog để ghi nhật ký mọi lệnh shell, điều này có thể thay đổi tùy theo phân phối linux nhưng phương thức sẽ giữ nguyên

Bạn cần làm theo một số bước:

Bước # 1 (Tạo dịch vụ Syslog)

# vim /etc/rsyslog.d/bash.conf

local6.*    /var/log/commands.log

Bước # 2 (Mở bashrc và nhập lệnh bên dưới)

# 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 (Khởi động lại dịch vụ nhật ký hệ thống)

# /etc/init.d/rsyslog

Đây là một mẫu nhật ký:

Ngày 7 tháng 12, 13:00:00
Ngày 7 tháng 12 22:13:09 validationdb2 mahasan: root @ export [13291]: ls -lh [0]
Ngày 7 tháng 12 22:13:27 validationdb2 mahasan: root @ export [13291]: lệnh kiểm tra chạm [0]

chiến thuật táo tợn !!!
Tom H

Xin chào Mansur, bạn có thể vui lòng giải thích những gì bạn đang làm với những lệnh đó không, rất khó hiểu, ít nhất với tôi.
Jasser

Ở Bước 1 tôi đang đặt tên một dịch vụ để ghi nhật ký lệnh sẽ được sử dụng theo quy trình để gửi nhật ký đến "local6" sẽ là điểm cuối cho dịch vụ đăng nhập Ở Bước 2 tôi đang đặt những thứ thực sự tôi muốn "PROMPT_COMMAND = 'RETRN_VAL = $? " phần này sẽ ghi lại đầu vào của người dùng và "logger -p local6.debug", phần này sẽ gửi tệp nhật ký tới dịch vụ ghi lại dữ liệu nhật ký với quy trình nhật ký trợ giúp
Mansur Ali
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.