您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Linux中script命令有什么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
script 用于在終端會話中,記錄用戶的所有操作和命令的輸出信息。
記錄終端會話的所有操作
簡而言之,記錄終端會話發生的一切信息,如同一臺終端錄像機。例如,用戶在輸入某條命令時,字符的鍵入和刪除也都會被記錄。用戶在終端的所有操作、終端的回顯等信息會被以 raw 格式存儲在日志文件,稱為終端數據文件。命令的時間信息會被單獨以另一種結構儲存為日志文件,稱為時間日志文件。使用命令exit或者快捷鍵Ctrl + D停止記錄。
script(選項)(參數)
-a, --append # 對終端會話的操作信息,以追加方式寫入文件(保留原文件內容) -c, --command command # 只運行 command 命令而不打開交互終端。相當于開啟 script ,執行 command ,再退出 script # command 可以是任意能夠在終端會話執行的命令 -e, --return # 返回子進程的退出狀態碼 -f, --flush # 每次終端的內容發生變動,立馬寫入日志文件 --force # 允許默認輸出終端數據文件為符號鏈接 -o, --output-limit size # 限制終端數據文件和時間日志文件的大小,當文件大小達到此限制就會退出子進程 # size 的單位可以設置為:KiB(=1024)、KB(=1000)、MiB(1024*1024)、MB(=1000*1000) # 同理還支持 GiB TiB PiB EiB ZiB YiB GB TB PB EB ZB YB -q, --quiet # 安靜模式。啟動和退出script命令不顯示任何提示 -t[file], --timing[=file] # 輸出時間日志信息到標準錯誤(stderr)或者文件 -V, --version # 顯示版本信息并退出 -h, --help # 顯示幫助文本并退出
終端數據文件:設置存儲終端數據信息的文件名稱
script # 開啟記錄,默認會在當前目錄創建名稱為 typescript 的文件來保存終端數據文件 script command.log # 開啟記錄,在當前目錄創建名稱為 command.log 的文件來保存終端數據文件 script -t 2>time.file command.log # 開啟記錄,在當前目錄創建名稱為 command.log 的文件來保存終端數據文件 # 在當前目錄創建名稱為 time.file 的文件來保存時間日志文件
以追加模式記錄終端信息
zfb@localhost:~$ script -t 2>time.file -a -f command.log Script started, file is command.log zfb@localhost:~$ echo "hello, world" hello, world zfb@localhost:~$ echo $(date "+%Y-%m-%d %H:%M:%S") 2020-12-23 20:48:46 zfb@localhost:~$ echo "Bye" Bye zfb@localhost:~$ ls -al total 20 drwxr-xr-x 2 zfb zfb 4096 Dec 23 20:48 . drwxr-xr-x 37 zfb zfb 4096 Dec 23 20:49 .. -rw-r--r-- 1 zfb zfb 0 Dec 23 19:03 a.txt -rw-r--r-- 1 zfb zfb 12 Dec 23 19:04 b.txt -rw-r--r-- 1 zfb zfb 2744 Dec 23 20:49 command.log -rw-r--r-- 1 zfb zfb 790 Dec 23 20:49 time.file zfb@localhost:~$ exit Script done, file is command.log zfb@localhost:~$
然后,用戶可以查看終端數據文件,使用方法如下
zfb@localhost:~$ cat command.log Script started on 2020-12-23 20:48:25+08:00 [TERM="xterm-256color" TTY="/dev/pts/0" COLUMNS="75" LINES="30"] zfb@localhost:~$ echo "hello, world" hello, world zfb@localhost:~$ echo $(date "+%Y-%m-%d %H:%M:%S") 2020-12-23 20:48:46 zfb@localhost:~$ echo "Bye" Bye zfb@localhost:~$ ls -al total 20 drwxr-xr-x 2 zfb zfb 4096 Dec 23 20:48 . drwxr-xr-x 37 zfb zfb 4096 Dec 23 20:49 .. -rw-r--r-- 1 zfb zfb 0 Dec 23 19:03 a.txt -rw-r--r-- 1 zfb zfb 12 Dec 23 19:04 b.txt -rw-r--r-- 1 zfb zfb 2744 Dec 23 20:49 command.log -rw-r--r-- 1 zfb zfb 790 Dec 23 20:49 time.file zfb@localhost:~$ exit Script done on 2020-12-23 20:49:04+08:00 [COMMAND_EXIT_CODE="0"] zfb@localhost:~$
其中,只有命令cat command.log是用戶輸入,其他均為自動呈現。通過查看上面輸出的時間2020-12-23 20:48:46,可以證明,這是重現的記錄,而非重新執行一遍命令。也就是說,可以把time.file和command.log文件移動到任意一臺機器上,都可以重現命令輸入與終端回顯。
記錄服務器用戶會話操作
以root身份編輯文件/etc/profile,在文件末尾追加以下內容
if [ $UID -ge 0 ] then exec /usr/bin/script -t 2>/var/log/script-records/$USER-$UID-`date +%Y%m%d`.time -a -f -q /var/log/script-records/$USER-$UID-`date +%Y%m%d`.log fi
然后再以root身份創建文件夾用于存儲服務器上的各個用戶在終端的所有操作信息
sudo mkdir -p /var/log/script-records/ sudo chmod 733 /var/log/script-records/
最后,執行命令source /etc/profile即可。任意用戶(UID ≥ 0)在終端執行的所有操作都會被安靜地記錄下來,以天為單位存儲。
關于“Linux中script命令有什么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。