Lệnh script là một công cụ đơn giản nhưng mạnh mẽ, cho phép bạn ghi lại toàn bộ phiên làm việc trong terminal, bao gồm cả dòng lệnh nhập vào lẫn kết quả đầu ra và lưu vào một file dạng văn bản. Trong bài viết này, mình sẽ hướng dẫn bạn cách dùng script để ghi lại hoạt động trên terminal đơn giản, nhanh chóng.
Những điểm chính
- Khái niệm: Hiểu rõ
scriptlà công cụ dùng để ghi lại toàn bộ phiên làm việc trên terminal, bao gồm cả lệnh nhập và kết quả đầu ra. - Chức năng của lệnh script: Nắm được các ứng dụng thực tế của lệnh
script, từ việc ghi log cài đặt, tạo tài liệu hướng dẫn đến lưu vết lỗi để báo cáo. - Các ví dụ sử dụng phổ biến: Thành thạo các lệnh cơ bản để bắt đầu và kết thúc một phiên ghi log vào tệp mặc định hoặc tệp chỉ định.
- Các tùy chọn phổ biến: Nắm vững các tùy chọn nâng cao để tùy chỉnh việc ghi log, như ghi tiếp vào tệp đã có, chỉ ghi log một lệnh cụ thể, hoặc ghi kèm thông tin thời gian để phát lại.
- Lưu ý khi sử dụng: Nắm được các lưu ý quan trọng để sử dụng
scriptmột cách an toàn và hiệu quả, từ việc kết thúc đúng quy trình đến các vấn đề bảo mật. - Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan trực tiếp đến lệnh script trong Linux.
Lệnh script là gì?
Lệnh script trong Linux là một công cụ quan trọng giúp ghi lại toàn bộ phiên làm việc trên terminal, bao gồm mọi lệnh bạn nhập và kết quả hiển thị ra màn hình và lưu vào một file văn bản để phục vụ việc kiểm tra, hướng dẫn, lưu vết hoặc xử lý sự cố. Cụ thể, khi khởi động lệnh script, toàn bộ hoạt động trên terminal sẽ được ghi lại. Cú pháp lệnh script như sau:
$ script [tùy chọn] [tên_file]Trong đó:
[tùy chọn]: Là các tham số dạng-a,-q,-t,-f,… dùng để điều chỉnh và mở rộng cách lệnh hoạt động.[tên_file]: Là tên file sẽ lưu nội dung phiên terminal.
Nếu không chỉ định tên file, mặc định kết quả sẽ được lưu vào một file có tên là typescript.

Chức năng của lệnh script
Bạn có thể sử dụng lệnh này trong các trường hợp như:
- Ghi lại quá trình cài đặt phần mềm, biên dịch mã nguồn để tái hiện hoặc báo cáo cho bộ phận hỗ trợ.
- Tạo các tài liệu hướng dẫn thao tác thực tế cho học viên hoặc đồng nghiệp.
- Lưu lại lỗi và kết quả đầu ra để gửi cho bộ phận hỗ trợ.
- Theo dõi các hoạt động hệ thống để phục vụ kiểm toán hoặc điều tra sau này.

Các ví dụ sử dụng lệnh script phổ biến
Ví dụ 1: Khởi động ghi log phiên làm việc đơn giản
Giả sử, bạn muốn mọi thao tác trên terminal, bao gồm lệnh nhập và kết quả hiển thị, đều được hệ thống ghi lại vào tệp typescript. Bạn nhập lệnh sau:
$ script
Để kết thúc quá trình ghi log, bạn nhập lệnh dưới đây:
$ exitKết quả sẽ hiển thị như sau:

Ví dụ 2: Ghi log vào một file chỉ định theo yêu cầu
Bạn thực thi lệnh sau trên terminal:
$ script Vietnix.txtSau đó, bạn có thể nhập bất kỳ lệnh nào mong muốn. Khi hoàn tất, bạn hãy dùng lệnh exit để kết thúc phiên ghi. Toàn bộ hoạt động vừa thực hiện sẽ được lưu lại trong file Vietnix.txt.

Để kiểm tra nội dung file đã ghi, bạn sử dụng lệnh sau:
cat Vietnix.txtKết quả trả về là nội dung toàn bộ hoạt động mà bạn đã thực hiện trong phiên ghi log trước đó, được lưu giữ lại đầy đủ trong file Vietnix.txt.

Các tùy chọn phổ biến của lệnh script
- -a hoặc –append: Ghi tiếp vào file đã có
- -c hoặc –command: Ghi log của một lệnh cụ thể
- -e hoặc –return: Trả về mã thoát của quá trình
- -f hoặc –flush: Ghi log theo thời gian thực
- –force: Cho phép ghi vào symbolic link hoặc hard link
- -q hoặc –quiet: Tắt thông báo khởi động/kết thúc
- -t hoặc –timing[=file]: Ghi kèm thời gian từng dòng lệnh
- -V hoặc –version: Xem phiên bản
- -h hoặc –help: Xem hướng dẫn nhanh
1. -a hoặc –append: Ghi tiếp vào file đã có
Để ghi tiếp vào file đã có, bạn thực thi lệnh sau:
$ script -a history_log.txtHệ thống sẽ ghi tiếp dữ liệu vào file history_log.txt thay vì tạo file mới hoặc ghi đè lên nội dung cũ. Mỗi phiên ghi log mới sẽ được phân tách rõ ràng bằng một dòng chứa thông tin ngày giờ bắt đầu ghi, giúp người quản trị dễ dàng theo dõi các phiên làm việc khác nhau trong cùng một file.

2. -c hoặc –command: Ghi log của một lệnh cụ thể
Khi bạn sử dụng lệnh:
$ script -c "ls -la" cal_output.txtHệ thống sẽ thực thi duy nhất lệnh “ls -la” và ghi lại toàn bộ quá trình thực thi, cùng với kết quả trả về vào file cal_output.txt thay vì ghi log cho cả một phiên terminal như thông thường.

3. -e hoặc –return: Trả về mã thoát của quá trình
Khi sử dụng tùy chọn -e hoặc --return trong lệnh script, hệ thống sẽ trả về mã thoát (exit code) của quá trình hoặc của lệnh đã được ghi log. Tùy chọn này rất hữu ích khi bạn tích hợp script vào các tập lệnh tự động để kiểm tra xem lệnh thực thi thành công hay gặp lỗi. Nhờ đó, bạn có thể dễ dàng xác định trạng thái thành công hay thất bại của quá trình vừa thực hiện để xử lý tiếp các bước phù hợp.
4. -f hoặc –flush: Ghi log theo thời gian thực
Để hệ thống ghi dữ liệu vào file log ngay sau mỗi lần có đầu ra và đảm bảo thông tin được ghi ngay lập tức, giảm nguy cơ mất mát nếu phiên làm việc gặp sự cố hoặc bị gián đoạn, bạn sử dụng lệnh:
script -f real_time_log.txt
5. –force: Cho phép ghi vào symbolic link hoặc hard link
Lệnh sau đây cho phép bạn ghi log vào cả symbolic link hoặc hard link trên hệ thống:
script --force /home/sc/gfg2Tùy chọn này hữu ích khi bạn muốn lưu file log vào vị trí được liên kết tới nhiều nơi hoặc được dùng như một shortcut hệ thống.
6. -q hoặc –quiet: Tắt thông báo khởi động/kết thúc
Tùy chọn này hữu ích khi bạn muốn lưu file log vào vị trí được liên kết tới nhiều nơi hoặc được dùng như một shortcut hệ thống:
$ script -q silent_log.txtKhi đó, lệnh script sẽ ghi log một cách im lặng, không hiển thị các dòng tin như “Script started…” trên terminal.

7. -t hoặc –timing[=file]: Ghi kèm thời gian từng dòng lệnh
Để ghi log kèm file thời gian và có thể phát lại từng bước thao tác như video, bạn dùng:
$ script --timing=session.time session.log
Sau đó, để phát lại chi tiết từng thao tác với cùng tốc độ và thời điểm như đã thực hiện, bạn sử dụng:
$ scriptreplay --timing=session.time session.log
Tùy chọn này hữu ích khi bạn muốn quay lại quy trình thao tác đã thực hiện trước đó, phục vụ cho việc kiểm tra, hướng dẫn hay đào tạo kỹ năng sử dụng hệ thống.
8. -V hoặc –version: Xem phiên bản
Bạn có thể xem nhanh phiên bản hiện tại của lệnh script đang dùng bằng cách nhập:
$ script -VKết quả trả về là thông tin phiên bản, giúp bạn xác định tính năng và mức độ tương thích với hệ thống Linux đang sử dụng.

9. -h hoặc –help: Xem hướng dẫn nhanh
Để hiển thị bảng hướng dẫn nhanh về các tùy chọn, cú pháp của lệnh script, bạn sử dụng:
$ script -hHệ thống sẽ trả về danh sách đầy đủ các tùy chọn và phần giải thích ngắn gọn cho từng tùy chọn, giúp bạn dễ dàng tra cứu và sử dụng lệnh script một cách hiệu quả nhất.

Một số tùy chọn khác của script:
| Tùy chọn | Giải thích |
| -I <file>, –log-in <file> | Ghi lại stdin (những gì bạn gõ vào) vào file <file>. |
| -O <file>, –log-out <file> | Ghi lại stdout (những gì hiện ra trên màn hình) vào file <file> (mặc định). |
| -B <file>, –log-io <file> | Ghi lại stdin và stdout vào cùng 1 file. |
| -T <file>, –log-timing <file> | Ghi thông tin về thời gian giữa các hành động vào file <file>. File này dùng để phát lại phiên làm việc với scriptreplay. |
| -t[<file>], –timing[=<file>] | Đây là tùy chọn đã lỗi thời, tương đương với -T. Nếu không chỉ định file, dữ liệu sẽ được ghi vào stderr. |
| -m <name>, –logging-format <name> | Cho phép bạn chọn định dạng file log, với hai kiểu là classic hoặc advanced. |
| -a, –append | Ghi tiếp vào file log cũ, thay vì ghi đè nội dung trước đó. |
| -c <command>, –command <command> | Chỉ ghi log cho một lệnh cụ thể mà bạn chọn, thay vì ghi lại toàn bộ phiên shell tương tác. |
| -e, –return | Trả về mã exit của tiến trình con. |
| -f, –flush | Ghi dữ liệu vào file ngay sau mỗi lần output. |
| –force | Ghi file output ngay cả khi đó là symbolic link. |
| -E <when>, –echo <when> | Ghi lại cả những gì bạn gõ vào với các tùy chọn: auto, always, never. |
| -o <size>, –output-limit <size> | Tự dừng khi file log đạt tới kích thước <size> byte. |
| -q, –quiet | Tắt các thông báo của script |
Lưu ý khi sử dụng lệnh script trong Linux
Khi dùng lệnh script để ghi lại phiên làm việc trên terminal, bạn nên chú ý một số điểm quan trọng dưới đây để tránh lỗi log và lộ thông tin quan trọng:
- Kết thúc đúng quy trình: Bạn bắt buộc phải dùng lệnh
exithoặc nhấnCtrl + Dđể đóng Shell con, nếu tắt ngang Terminal, file ghi có thể bị lỗi hoặc mất dữ liệu cuối. - Xử lý ký tự đặc biệt: File kết quả sẽ chứa cả mã màu và ký tự điều khiển như phím xóa Backspace, bạn nên xem bằng lệnh
cat/morehoặc làm sạch bằng lệnhcoltrước khi đọc trên editor thường. - Kiểm soát bảo mật: Script sẽ ghi lại mọi thứ xuất hiện trên màn hình, bao gồm mật khẩu gõ nhầm hoặc API Key nên bạn cần rà soát kỹ nội dung file log trước khi chia sẻ cho người khác.
- Lưu ý về dung lượng: Tránh chạy các lệnh xuất ra màn hình quá nhiều dữ liệu (như đọc file log hàng GB) khi đang ghi, vì file kết quả sẽ tăng kích thước rất nhanh và gây hao tốn tài nguyên hệ thống.
- Cấu hình để phát lại: Nếu muốn xem lại thao tác như một video, bạn cần thêm tùy chọn
--timing=time.logngay lúc bắt đầu lệnhscript.

Câu hỏi thường gặp
Vì sao việc sử dụng lệnh script lại đặc biệt hữu ích đối với việc xử lý sự cố trong môi trường kiểm toán hệ thống?
Vì script giúp ghi lại toàn bộ lịch sử thao tác, nhờ đó có thể truy xuất lại chính xác chuỗi sự kiện và kết quả, phục vụ cho quá trình phân tích nguyên nhân lỗi và đánh giá truy vết hoạt động hệ thống.
Tại sao cần kiểm soát dung lượng file log khi sử dụng script?
Nếu không giới hạn dung lượng hoặc kiểm soát dữ liệu đầu ra, file log có thể tăng kích thước rất nhanh khi ghi lại lệnh tạo ra dữ liệu lớn, làm tiêu tốn tài nguyên hệ thống và ảnh hưởng đến hiệu năng hoạt động máy chủ.
Trong môi trường nhiều người dùng cùng truy cập hệ thống, sử dụng lệnh script mang lại lợi ích gì trong công tác quản lý?
Script hỗ trợ lưu lại hoạt động từng cá nhân trên hệ thống, giúp quản trị viên dễ dàng kiểm soát, phân tích trách nhiệm và giám sát quy trình làm việc của từng người dùng.
Lệnh script là một giải pháp ghi log mạnh mẽ và dễ sử dụng, phục vụ linh hoạt cho nhiều mục đích như kiểm tra, hướng dẫn thao tác, xử lý sự cố hay kiểm toán hệ thống trong môi trường Linux. Việc vận dụng script không chỉ giúp nâng cao mức độ minh bạch, khách quan cho các hoạt động trên terminal mà còn hỗ trợ lưu trữ, tái hiện, kiểm tra lại các bước đã thực hiện một cách chuyên nghiệp. Cảm ơn bạn đã theo dõi bài viết!




