2014-01-07 46 views
0

我正在运行耗时数小时的bash脚本。我想知道是否有办法监视它在做什么?比如脚本当前正在运行的部分,运行整个脚本需要多长时间,脚本停止工作的哪一行崩溃等等,我只想从脚本接收反馈。谢谢!!!如何监视bash脚本?

+1

您可以在第一行加上'-x',就像这样:!'#/斌/庆典-ex'。当一个命令退出并出错时,'-e'会立即退出。 – janos

+1

也可以使用-v代替-x来获得较少的混乱输出 – damienfrancois

+0

您的脚本是否包含'echo'或'printf'语句?如果没有,上述评论应该会对你有所帮助。如果是这样,并且因为脚本在后台运行而看不到它们,则解决方案会有所不同。请说清楚你的问题是哪种情况。 – damienfrancois

回答

1

从bash的手册页,

set -x 
After expanding each simple command, for command, case command, select command, or arithmetic for command, display the expanded value of PS4, followed by the command and its expanded arguments or associated word list. 

将这些添加到脚本的开头,

export PS4='+{${BASH_SOURCE}:$LINENO} ' 
set -x 

例,

#!/bin/bash   

export PS4='+{${BASH_SOURCE}:$LINENO} ' 
set -x 

echo Hello World 

结果,

+{helloworld.sh:6} echo Hello World 
Hello World 
1

创建一个状态或日志文件。例如添加这个脚本里面:

echo $(date) - Ok >> script.log 

或者一个真正的监视,你可以在Linux上使用strace瞧系统调用,例如:

$ while true ; do sleep 5 ; done & 
[1] 27190 
$ strace -p 27190