相信大家,初始在使用linux
作業系統時,查詢歷史命令,第一時間會想到history命令
:將顯示出之前操作過的命令,其無法顯示操作過的命令所輸出的過程及結果。
但往往有時候,我們卻想知道在這台伺服器上操作了什麼?執行的過程是什麼樣的?輸出的結果又是怎麼樣的?那history命令
就已經無法滿足我們的需求了,那究竟該怎麼辦呢?
是時候,教大家一招了。那就是這個神奇的命令——script
和scriptreplay
script命令
:可以將 linux 終端下的會話過程進行錄製下來。
作用:在終端下的所有操作、執行過的命令以及輸出過的結果都可以在本地進行錄製。
script
和scriptreplay
在 linux 發行版中預設都有安裝的,在本篇文章中,script
是可以直接在作業系統下執行的,而scriptreplay
需要額外安裝。
開始錄影
執行如下命令,將在終端下執行任何操作都將會被進行記錄;
# script -t 2>test.timefile -a test.txt
script started, file is test.txt
檢視當前目錄是否有如下兩個檔案
# ll
-rw-r--r--. 1 root root 1025 6月 4 07:32 test
.timefile
-rw-r--r--. 1 root root 5772 6月 4 07:32 test
.txt
test.timefile
和test.txt
兩個檔名可自定義命名。
常用引數選項
執行如下命令,可以靜默模式進行執行,且不會將以script
和exit
進行顯示啟動和退出;
# script -q -t 2>test.timefile -a test.txt
執行命令exit
或使用快捷鍵ctrl+d
即可退出結束錄製;
# exit
exit
script done on 2023年06月04日 星期六 07時32分42秒
錄製某個目錄下指令碼執行過程的案例
先編寫乙個簡單的名為***.sh
# vi helloworld.sh
#!/bin/bash
echo hello world!
echo welcome to beijing!
echo let's go to tian 'anmen square!
使用引數選項:-c
可直接執行命令,而非是互動式的 shell,即可檢視該指令碼所執行的時間點。
# script -qa "file.out" -c "/root/helloworld.sh"
hello world!
welcome to beijing!
lets go to tian anmen square!
[root@localhost ~]# cat file.out
script started on 2023年06月04日 星期六 13時21分45秒
hello world!
welcome to beijing!
lets go to tian anmen square!
執行相關命令操作並進行錄製演示
scriptreplay命令
:可以將 linux 終端下錄製的結果進行回放。
常用引數選項
安裝 scriptreplay
# tar zxvf util-linux-ng-2.17.2.tar.gz
# cd util-linux-ng-2.17.2
# ./configure && make
# cp misc-utils/scriptreplay /usr/bin/
cp:是否覆蓋"/usr/bin/scriptreplay"?y
# cd ..
# scriptreplay test.timefile test.txt
執行完上述命令scriptreplay test.timefile test.txt
後,將對之前的操作進行回放;
同步使用
使用-f
引數選項,部分版本沒有該引數,同時也可以使用tail -f
命令來進行操作;
如下圖所示,需開啟兩個 xshell 終端,連線至同一臺裝置,做相關同步使用操作,左螢幕
為:操作端,右螢幕
為:演示端,
在左螢幕
終端下執行命令script -f jacktian
在右螢幕
終端下執行命令tail -f jacktian
隨後,你只需在左螢幕
終端下執行相關命令,右螢幕
將進行顯示出左螢幕
的相關輸出結果等;
開機自啟動
除上述操作以外,還可以採用設定在登入時自動執行script
命令,並新增至 shell 環境配置檔案中。
遞迴建立目錄/var/log/user_record
# mkdir -p /var/log/user_record
編輯檔案/etc/profile
新增如下自啟動配置項
# vi /etc/profile
script -t -f -q 2>/var/log/user_record/$user-$uid-`date +%y%m%d%h%m%s`.time -a /var/log/user_record/$user-$uid-`date +%y%m%d%h%m%s`.who
if [ "$shlvl" = 1 ]; then
exit
fi
如何在Linux終端下關閉指定的GPU程序
本人再用terminal終端進行操作時候,發現自己平時使用的gpu被占用了,teamviewer用因為商業化而被禁用,參考別人的程式來 終止使用gpu的程式,如下 首先,我們在終端輸入nvidia smi nvidia smi 在下面的processes框框裡,我們可以看到正常進行的程序,最左邊一列...
在linux終端下執行X Window程式
在 linux 終端下執行 x window程式 作為linux 程式設計師,在大多數情況,在終端下幹活 程式設計 可能更方便一點。伺服器在機房裡,大家都連線到同一臺伺服器上,而本機在 windows 下執行乙個終端 如 securecrt 這是典型的配置。如果開發的軟體是不帶 gui介面的,一點問...
關於在linux終端下使用mysql Client
登陸mysql client 在linux終端直接輸 mysql u root p 回車 之後就可以輸入密碼 登陸了 建立新的mysql使用者 出現如下問題 解釋如下 原因是我是使用了新設的使用者,所以會出現這樣的情況。首先mysql的安裝目錄 usr local mariadb,對應可執行檔案是 ...