Lệnh script: Cách để ghi lại hoạt động dòng lệnh trên Linux

Tác giả: VPS chính hãng 12 tháng 01, 2024

Lệnh script không chỉ ghi lại những lệnh bạn chạy mà còn cho phép bạn lưu kết quả được tạo để bạn có thể kiểm tra sau hoặc dễ dàng biến chuỗi lệnh của mình thành tập lệnh. Điều này rất hữu ích trong việc khắc phục sự cố hoặc xác minh những gì đã được thực hiện bằng cách xem lại các lệnh được chạy cùng với đầu ra của chúng. Ngay cả khi bạn đã sử dụng lệnh script nhiều lần, nó vẫn cung cấp nhiều tùy chọn hơn. Trong bài đăng này, chúng ta sẽ xem xét cách sử dụng lệnh script đơn giản nhất và một số tùy chọn có thể làm cho tập lệnh trở nên hữu ích hơn.

Lệnh scrip trong Linux dùng để làm gì?

Lệnh script trong Linux đã có từ rất lâu đời và cung cấp dịch vụ đơn giản nhưng hữu ích. Nó cho phép bạn ghi lại hoạt động dòng lệnh, cả đầu vào và đầu ra. Cách dễ nhất để sử dụng lệnh script chỉ đơn giản là gõ “script” vào cửa sổ terminal và nhấn ^d khi bạn muốn dừng ghi. Theo mặc định, đầu ra sẽ được lưu trong một tệp có tên là “TypeScript”. Bạn sẽ thấy tên tệp được sử dụng ở dòng đầu ra đầu tiên.

$ script
Script started, output log file is 'typescript'.  
$ who
shs      pts/0        2021-11-16 12:10 (192.168.0.8)
$                                                 
exit
Script done.

Sau khi thực thi lệnh script, nó bắt đầu ghi lại mọi thứ được in trên màn hình bao gồm cả đầu vào và đầu ra cho đến khi thoát. Theo mặc định, tất cả thông tin đầu cuối được lưu trong tệp TypeScript, nếu không có đối số nào được đưa ra. Script rất hữu dụng trong trường hợp khi người dùng mua VPS Linux để sử dụng cho những mục đích test phần mềm hay chạy chương trình mà muốn ghi lại đầu ra của một lệnh hoặc một bộ lệnh trong khi cài đặt chương trình hoặc nhật ký được tạo trên thiết bị đầu cuối trong khi biên dịch mã nguồn mở,… Lệnh script sử dụng hai tệp, tức là một cho đầu ra của thiết bị đầu cuối và tệp khác để biết thông tin về thời gian.

Lệnh script sẽ ghi lại hoạt động của dòng lệnh trên Linux vào file TypeScript

Lệnh script sẽ ghi lại hoạt động của dòng lệnh trên Linux vào file TypeScript

Những cách sử dụng phổ biến của lệnh script trong Linux

Chỉ định tên tập tin

Bạn có thể cung cấp tên có ý nghĩa hơn nếu bạn sử dụng lệnh script hiển thị bên dưới để thêm tên tệp vào lệnh:

$ script updates
Script started, output log file is 'updates'.     
$ echo running commands
running commands
$                                                 
Exit

Script done on 2021-11-16 13:30:19-05:00 [COMMAND_EXIT_CODE="0"]

Nội dung của tệp cập nhật sẽ trông như thế này:

$ cat updates
Script started on 2021-11-16 13:35:08-05:00 [TERM="xterm" TTY="/dev/pts/4" COLUMNS="80" LINES="24"]
$ echo running commands
running commands
$
Exit

Script done on 2021-11-16 13:35:25-05:00 [COMMAND_EXIT_CODE="0"]

Lưu ý rằng tệp được sử dụng để ghi lại hoạt động của phiên không chỉ bao gồm các lệnh đã nhập và đầu ra được tạo, mà còn cả ngày và giờ mà quá trình ghi tệp bắt đầu và kết thúc.

Nối đầu ra vào một tệp hiện có

Nếu bạn muốn thêm bản ghi hoạt động phiên vào một tệp hiện có, bạn có thể sử dụng tùy chọn -a (hoặc –append).

$ script -a updates
Thêm bản ghi vào têp với tùy chọn -a của lệnh script

Thêm bản ghi vào têp với tùy chọn -a của lệnh script

Chạy không tương tác

Khi bạn sử dụng tùy chọn -c (hoặc –command), lệnh script sẽ chạy lệnh đã cho và không tương tác. Để chạy một lệnh duy nhất và ghi lại tương tác, bạn có thể chỉ định lệnh như hiển thị bên dưới và sử dụng tùy chọn -c (hoặc –command). Lưu ý rằng cần có dấu ngoặc kép nếu lệnh yêu cầu nhiều hơn một chuỗi. Thời gian bắt đầu và kết thúc không được bao gồm trong đầu ra khi tùy chọn này được sử dụng.

$ script -c date
Script started, output log file is 'typescript'.
Thu Nov 18 03:50:06 PM EST 2021
Script done.
$
$ script -c "find . -name loop -print"
Script started, output log file is 'typescript'.
./bin/xtra/loop
./bin/loop
./loop
./private/loop
Script done.

Bạn cũng có thể chuyển một dòng lệnh tới tập lệnh như thế này:

$ echo date | script
Script started, output log file is 'typescript'.
date
$ date
Tue Nov 16 02:02:10 PM EST 2021
$
exit
Script done.

Chạy tập lệnh shell

Trong ví dụ tiếp theo này, chúng tôi sử dụng tùy chọn -c để chạy tập lệnh và lưu tương tác trong tệp có tên “vpschinhhang”.

$ script -c bin/loop2 vpschinhhang
Script started, output log file is 'vpschinhhang'.
1
2
3
4
Script done.

Tách đầu vào khỏi đầu ra

Trên một số hệ thống Linux (như Fedora), lệnh scriptcũng cho phép tách đầu vào khỏi đầu ra trong bản ghi phiên của bạn bằng cách sử dụng các tùy chọn -I (hoặc –log-in) và -O (hoặc –log-out). Điều này có thể cho phép bạn chuyển các lệnh đã lưu thành tập lệnh dễ dàng hơn vì chúng sẽ nằm trong một tệp mà không có đầu ra lệnh.

$ script -q -I in -O out
$ echo Hello, World!
Hello, World!
  • -I (viết hoa của “i”) chỉ định tệp cho đầu vào và -O (viết hoa của “o”) cho tệp đầu ra. Kiểm tra trang script man để xem những tùy chọn nào có sẵn cho bạn.
  • Tùy chọn -q (hoặc –quiet) giữ cho thời gian bắt đầu và kết thúc không được hiển thị trên đầu ra tiêu chuẩn (thường là cửa sổ terminal của bạn).

Tệp đầu vào sẽ trông như thế này:

$ cat in
Script started on 2021-11-18 16:01:58-05:00 [TERM="xterm" TTY="/dev/pts/0" COLUMNS="80" LINES="24"]
echo Hello, World!
Script done on 2021-11-18 16:02:06-05:00 [COMMAND_EXIT_CODE="0"]

Tệp đầu ra sẽ trông như thế này:

$ cat out
Script started on 2021-11-18 16:01:58-05:00 [TERM="xterm" TTY="/dev/pts/0" COLUMNS="80" LINES="24"]
$ echo Hello, World!
Hello, World!
$
exit

Script done on 2021-11-18 16:02:06-05:00 [COMMAND_EXIT_CODE="0"]

=>> Lệnh tmux: Cách để quản lý nhiều phiên trong Linux

Kiểm tra phiên bản của script

Bạn có thể hiển thị phiên bản script bạn đang chạy như thế này:

$ script -V
script from util-linux 2.36.2

Tìm sự giúp đỡ

Bạn có thể đọc trang script man hoặc yêu cầu giải thích về cú pháp lệnh script và các tùy chọn bằng lệnh hiển thị bên dưới.

$ script -h

Usage:
 script [options] [file]

Make a typescript of a terminal session.

Options:
 -I, --log-in            log stdin to file
 -O, --log-out           log stdout to file (default)
 -B, --log-io            log stdin and stdout to file

 -T, --log-timing        log timing information to file
 -t[], --timing[=] deprecated alias to -T (default file is stderr)
 -m, --logging-format    force to 'classic' or 'advanced' format

 -a, --append                  append to the log file
 -c, --command        run command rather than interactive shell
 -e, --return                  return exit code of the child process
 -f, --flush                   run flush after each write
     --force                   use output file even when it is a link
 -E, --echo              echo input (auto, always or never)
 -o, --output-limit      terminate if output files exceed size
 -q, --quiet                   be quiet

 -h, --help                    display this help
 -V, --version                 display version

For more details see script(1).

Đó là những cách dùng cơ bản của lệnh script trong Linux. Lệnh script rất tiện dụng khi bạn muốn ghi nhớ, xem lại hoặc chạy lại một chuỗi lệnh và chi tiết đầu ra trên hệ thống Linux. Nó có thể được sử dụng để có được một bản sao của chương trình đang chạy. Mọi câu hỏi vui lòng để lại dưới phần bình luận để được đội ngũ của VPS Chính hãng giải đáp một cách nhanh nhất. Chúc các bạn thành công!