如何防止sh脚本执行进程丢失

为了防止sh脚本执行进程丢失,可以编写sh脚本判断进程是否还存在。

#!/bin/sh
StartLoader(){
processnum=`ps -ef|grep Loader.sh|grep -v 'grep'|wc -l`
#echo "processnum=" $processnum
if [ $processnum -eq 0 ]
then
sh /home/gbase/gbloader/Loader.sh 
fi
}

main(){
StartLoader
}

processnum=`ps -ef|grep gbased|grep -v 'grep'|wc -l`
if [ $processnum -eq 1 ]
then
main
fi

执行sql脚本文件结果其实是记录到 query_join.err中,而不是query_join.result中

gccli -ugbase -pgbase20110531 -h127.0.0.1 -P5258 -Dtest -vvv -f <query_join.sql >>query_join.result 2>query_join.err

执行sql脚本文件结果其实是记录到 query_join.err中,而不是query_join.result中。

cmd > file 把 stdout 重定向到 file 文件中;
cmd >> file 把 stdout 重定向到 file 文件中(追加);
cmd 1> file 把 stdout 重定向到 file 文件中;
cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;
cmd 2> file 把 stderr 重定向到 file 文件中;
cmd 2>> file 把 stderr 重定向到 file 文件中(追加);
cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中(追加);
cmd < file >file2 cmd 命令以 file 文件作为 stdin,以 file2 文件作为 stdout;
cat <>file 以读写的方式打开 file;
cmd < file cmd 命令以 file 文件作为 stdin;
cmd << delimiter Here document 从 stdin 中读入,直至遇到 delimiter 分界符。