追蹤指令碼執行過程

2021-08-25 21:55:05 字數 1455 閱讀 7846

1】使用sh –x,使用-x引數能看到指令碼的具體執行過程

2】使用輸出重定向可以將執行過程儲存到另一檔案

3】顯示行號:

在/etc/vimrc檔案中新增行 set nu

然後在要執行的指令碼中新增

trap 'echo "before execute line:$lineno" >/dev/null' debug 【新增位置在#! /bin/sh 之後,真正執行的指令碼之前

eg:[root@gbackup2 zhaoyj]# head -4 test.sh

#!/bin/sh

trap 'echo "before execute line:$lineno" >/dev/null' debug

adir=backup

for i in fmx1 mx1 mx2 mx14

[root@gbackup2 zhaoyj]# tail -3 /etc/vimrc

set t_sf=m

set nu

endif

4】執行命令

命令模式:sh -x scriptname > 輸出結果 2> 執行過程儲存檔案

或:sh -x scriptname > 輸出結果 2>&1

[root@gbackup2 zhaoyj]#sh -xtest.sh > 245.backup.txt2>log.txt

5】展示執行過程

所有以++開頭的都是提示行,所有已+開頭的都是指令碼行

[root@gbackup2 zhaoyj]# more log.txt

+ trap 'echo "before execute line:$lineno" >/dev/null' debug

++ echo 'before execute line:3'

+ adir=backup

+ for i in fmx1 mx1 mx2 mx14

++ echo 'before execute line:4'

+ for j in dir mysql post qmail

++ echo 'before execute line:6'

++ echo 'before execute line:8'

+ '[' dir '!=' post ']'

++ echo 'before execute line:10'

+ cd /backup/fmx1/dir/

++ echo 'before execute line:11'

+ echo -n 'backup.fmx1.dir '

++ echo 'before execute line:12'

++ echo 'before execute line:12'

+ ls -lt

mysql中執行 儲存過程指令碼

delimiter create procedure myproc out s int begin select count into s from students end delimiter 注釋 和delimiter 一定要分兩行來寫!mysql 預設以 為分隔符,如果沒有宣告分割符,則編譯器...

shell 指令碼檔案追蹤與 debug

scripts 在執行之前,最怕的就是出現語法錯誤的問題了!那麼我們如何 debug 呢?有沒有辦法不需要透過直接執行該 scripts 就可以來判斷是否有問題呢?呵呵!當然是有的!我們就直接以 bash 的相關引數來進行判斷吧!sh或bash nvx scripts.sh 選項與引數 n 不要執行...

shell指令碼批量追蹤ip路由走向

shell指令碼批量追蹤ip路由走向 需求 有大量ip位址需要追蹤路由,檢視是否經過 第三跳經過 192.168.23.2,如不經過,需要顯示不能經過的ip 思路 追蹤路由用traceroute m 4指定4跳即結束,由於到192.168.23.2不到4跳。所以追蹤為4足夠.指令碼如下 for ip...