2010-07-29 35 views
1

我希望能够echo一些东西(即微调),只要一个命令(数据库转储是准确的),仍然在运行。直到command_is_finished;做

因为现在,就好像15分钟:“我的剧本还在运行吗?”

在bash中的建议? whileuntil

感谢,

回答

0

while - 并检查正在运行的进程的PID仍在运行。您可以使用$?

+0

假设进程在后台启动,PID在'$!' – 2010-07-29 14:51:51

0

在脚本中得到PID:

#!/bin/bash 
your-prog & 
while jobs %?your-prog > /dev/null 2>&1; do echo -ne '/\r'; sleep 1; echo -ne '\\\r'; sleep 1; done 
1

这里,直到给它的命令做一个显示微调一个小脚本。

#!/bin/bash 

if [[ -z "$*" ]] ; then 
    echo "Usage: $0 command [args] ..." 
    exit 0 
fi 

"[email protected]" & 
echo -n "Running '[email protected]'... " 

BACKSPACE='\010' 
SPINNER='|/-\' 
INDEX=0 
while kill -0 $! 2>/dev/null ; do 
    echo -n -e "${SPINNER:$INDEX:1}" 
    sleep 0.2 
    ((INDEX = ($INDEX + 1) % 4)) 
    echo -n -e "$BACKSPACE" 
done 
echo -e "${BACKSPACE}done." 

用法示例:

$ ./spinner sleep 3 
Running 'sleep 3'... [spinner displayed here] 

过了一会儿:

$ ./spinner sleep 3 
Running 'sleep 3'... done. 
$ 

(我的bash脚本的方式是基于试验和错误的,这样对于提高该脚本的建议是非常欢迎。)