如何在gbase命令行工具中调用linux系统命令

gbase命令行工具中支持通过system关键字的方式调用操作系统命令,用于更改当前路径、查看系统变量、查看文本内容。
命令格式为:system linux_os_cmd

例如:

gbase> system gcadmin

  CLUSTER STATE:  ACTIVED
  CLUSTER MODE:   NORMAL

+==========================================================================================================================+
|                                                   GCLUSTER INFORMATION                                                   |
+==========================================================================================================================+
+-------+----------+-----------------+--------+--------+---------+---------+----------+------------+-----------+-----------+
| rowid | nodename |    IpAddress    | sgname | dpname | gcware  |  gnode  | gcluster | syncserver | datastate | nodestate |
+-------+----------+-----------------+--------+--------+---------+---------+----------+------------+-----------+-----------+
|   1   |   node1  | 192.168.105.210 |  sg01  |   n1   | Online  |  OPEN   |   OPEN   |    OPEN    |  [0]      |  [0]      |
+-------+----------+-----------------+--------+--------+---------+---------+----------+------------+-----------+-----------+
|   2   |   node2  | 192.168.105.211 |  sg01  |   n2   | Online  |  OPEN   |   OPEN   |    OPEN    |  [0]      |  [0]      |
+-------+----------+-----------------+--------+--------+---------+---------+----------+------------+-----------+-----------+
|   3   |   node3  | 192.168.105.212 |  sg02  |   n3   | Online  |  OPEN   |   OPEN   |    OPEN    |  [1]      |  [0]      |
+-------+----------+-----------------+--------+--------+---------+---------+----------+------------+-----------+-----------+
|   4   |   node4  | 192.168.105.213 |  sg02  |   n4   | Online  |  OPEN   |   OPEN   |    OPEN    |  [0]      |  [0]      |
+-------+----------+-----------------+--------+--------+---------+---------+----------+------------+-----------+-----------+

gbase> system pwd
/home/gbase
gbase> system cat tab1.txt1
1,,2015-03-19 17:51:31
2,abc,2015-03-19 17:51:43

如何防止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 分界符。