Debuggen von BASH Skripten mit bash -x
BASH Skripte können sehr elegant mittels bash -x näher analysiert werden.
Beispiel lvmdump Bash Skript
In diesem Beispiel verwenden wir lvmdump - es handelt sich dabei um ein Bash-Skript:
adminuser@ubuntu-1404:~/tmp$ file /sbin/lvmdump /sbin/lvmdump: Bourne-Again shell script, ASCII text executable
Zuerst rufen wir das lvmdump Bash Skript ohne bash -x auf auf:
adminuser@ubuntu-1404:~/tmp$ sudo lvmdump Creating dump directory: /home/adminuser/lvmdump-tpw-20150818110243 Gathering LVM & device-mapper version info... Gathering dmsetup info... Gathering process info... Gathering console messages... Gathering /etc/lvm info... Gathering /dev listing... Gathering /sys/block listing... Creating report tarball in /home/adminuser/lvmdump-tpw-20150818110243.tgz...
Bei der Ausführung mit bash -x wird gezeigt, welche Bash-Befehle Schritt für Schritt abgearbeitet werden:
adminuser@ubuntu-1404:~/tmp$ sudo bash -x lvmdump + MKDIR=mkdir + TAR=tar + RM=rm + CP=cp + TAIL=tail + LS=ls + PS=ps + SED=sed + DD=dd + CUT=cut + DATE=date + BASENAME=basename + UDEVADM=udevadm + UNAME=uname + TR=tr + SOCAT=socat + NC=nc + LVM=lvm + DMSETUP=dmsetup + LVMETAD_SOCKET=/var/run/lvm/lvmetad.socket + lvm version + dmsetup version + advanced=0 + clustered=0 + metadata=0 + udev=0 + getopts :acd:hmul opt ++ date -u +%G%m%d%k%M%S ++ tr -d ' ' + NOW=20150818110249 + test -n '' + dirbase=lvmdump-ubuntu-1404-20150818110249 + dir=/home/adminuser/lvmdump-ubuntu-1404-20150818110249 + test -e /home/adminuser/lvmdump-ubuntu-1404-20150818110249 + mkdir -p /home/adminuser/lvmdump-ubuntu-1404-20150818110249 + log=/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log + warnings + test 0 '!=' 0 + test dmsetup = : + myecho 'Creating dump directory: /home/adminuser/lvmdump-ubuntu-1404-20150818110249' + echo 'Creating dump directory: /home/adminuser/lvmdump-ubuntu-1404-20150818110249' Creating dump directory: /home/adminuser/lvmdump-ubuntu-1404-20150818110249 + echo 'Creating dump directory: /home/adminuser/lvmdump-ubuntu-1404-20150818110249' + echo ' ' + (( 0 )) + (( 0 )) + myecho 'Gathering LVM & device-mapper version info...' + echo 'Gathering LVM & device-mapper version info...' Gathering LVM & device-mapper version info... + echo 'Gathering LVM & device-mapper version info...' + echo 'LVM VERSION:' + lvm lvs --version + echo 'DEVICE MAPPER VERSION:' + dmsetup --version + echo 'KERNEL VERSION:' + uname -a + echo 'DM TARGETS VERSIONS:' + dmsetup targets + myecho 'Gathering dmsetup info...' + echo 'Gathering dmsetup info...' Gathering dmsetup info... + echo 'Gathering dmsetup info...' + log '"dmsetup" info -c >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_info" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + echo '"dmsetup" info -c >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_info" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + eval '"dmsetup" info -c >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_info" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' ++ dmsetup info -c + log '"dmsetup" table >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_table" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + echo '"dmsetup" table >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_table" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + eval '"dmsetup" table >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_table" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' ++ dmsetup table + log '"dmsetup" status >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_status" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + echo '"dmsetup" status >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_status" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + eval '"dmsetup" status >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_status" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' ++ dmsetup status + log '"dmsetup" ls --tree 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log" | cat >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_ls_tree"' + echo '"dmsetup" ls --tree 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log" | cat >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_ls_tree"' + eval '"dmsetup" ls --tree 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log" | cat >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dmsetup_ls_tree"' ++ dmsetup ls --tree ++ cat + myecho 'Gathering process info...' + echo 'Gathering process info...' Gathering process info... + echo 'Gathering process info...' + log 'ps alx >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/ps_info" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + echo 'ps alx >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/ps_info" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + eval 'ps alx >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/ps_info" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' ++ ps alx + myecho 'Gathering console messages...' + echo 'Gathering console messages...' Gathering console messages... + echo 'Gathering console messages...' + log 'tail -n 75 /var/log/messages >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/messages" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + echo 'tail -n 75 /var/log/messages >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/messages" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + eval 'tail -n 75 /var/log/messages >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/messages" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' ++ tail -n 75 /var/log/messages + myecho 'Gathering /etc/lvm info...' + echo 'Gathering /etc/lvm info...' Gathering /etc/lvm info... + echo 'Gathering /etc/lvm info...' + log 'cp -a /etc/lvm "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvm" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + echo 'cp -a /etc/lvm "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvm" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + eval 'cp -a /etc/lvm "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvm" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' ++ cp -a /etc/lvm /home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvm + myecho 'Gathering /dev listing...' + echo 'Gathering /dev listing...' Gathering /dev listing... + echo 'Gathering /dev listing...' + log 'ls -laR /dev >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dev_listing" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + echo 'ls -laR /dev >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dev_listing" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + eval 'ls -laR /dev >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/dev_listing" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' ++ ls -laR /dev + myecho 'Gathering /sys/block listing...' + echo 'Gathering /sys/block listing...' Gathering /sys/block listing... + echo 'Gathering /sys/block listing...' + log 'ls -laR /sys/block >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/sysblock_listing" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + echo 'ls -laR /sys/block >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/sysblock_listing" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + eval 'ls -laR /sys/block >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/sysblock_listing" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' ++ ls -laR /sys/block + log 'ls -laR /sys/devices/virtual/block >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/sysblock_listing" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + echo 'ls -laR /sys/devices/virtual/block >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/sysblock_listing" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' + eval 'ls -laR /sys/devices/virtual/block >> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/sysblock_listing" 2>> "/home/adminuser/lvmdump-ubuntu-1404-20150818110249/lvmdump.log"' ++ ls -laR /sys/devices/virtual/block + (( 0 )) + (( 0 )) + (( )) + test -z '' + lvm_dump=lvmdump-ubuntu-1404-20150818110249.tgz + myecho 'Creating report tarball in /home/adminuser/lvmdump-ubuntu-1404-20150818110249.tgz...' + echo 'Creating report tarball in /home/adminuser/lvmdump-ubuntu-1404-20150818110249.tgz...' Creating report tarball in /home/adminuser/lvmdump-ubuntu-1404-20150818110249.tgz... + echo 'Creating report tarball in /home/adminuser/lvmdump-ubuntu-1404-20150818110249.tgz...' + warnings + test 0 '!=' 0 + test dmsetup = : + test -z '' + cd /home/adminuser + tar czf lvmdump-ubuntu-1404-20150818110249.tgz lvmdump-ubuntu-1404-20150818110249 + rm -rf /home/adminuser/lvmdump-ubuntu-1404-20150818110249 + exit 0
Autor: Werner Fischer Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.
|