如何優雅的在 Linux 終端下進行錄影?

2021-09-28 20:33:08 字數 3204 閱讀 8631

相信大家,初始在使用linux作業系統時,查詢歷史命令,第一時間會想到history命令:將顯示出之前操作過的命令,其無法顯示操作過的命令所輸出的過程及結果。

但往往有時候,我們卻想知道在這台伺服器上操作了什麼?執行的過程是什麼樣的?輸出的結果又是怎麼樣的?那history命令就已經無法滿足我們的需求了,那究竟該怎麼辦呢?

是時候,教大家一招了。那就是這個神奇的命令——scriptscriptreplay

script命令:可以將 linux 終端下的會話過程進行錄製下來。

作用:在終端下的所有操作、執行過的命令以及輸出過的結果都可以在本地進行錄製。

scriptscriptreplay在 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.timefiletest.txt兩個檔名可自定義命名。

常用引數選項

執行如下命令,可以靜默模式進行執行,且不會將以scriptexit進行顯示啟動和退出;

# 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,對應可執行檔案是 ...