我希望通过Process从os级别获取服务器名称,而无需连接到DB

时间:2017-02-10 09:49:42

标签: sybase sybase-ase

sybase    1215 30224  0 20:44 pts/3    00:00:00 grep dataserver
sybase    6138  6137  0 Feb04 ?        00:28:10 /u01/sybase/ASE15_0/ASE-15_0/bin/dataserver -d/u01/sybase/ASE15_0/data/aashish1_master.dat -e/u01/sybase/ASE15_0/ASE-15_0/install/aashish1.log -c/u01/sybase/ASE15_0/ASE-15_0/aashish1.cfg -M/u01/sybase/ASE15_0/ASE-15_0 -s**aashish1**
sybase    7671     1  0 Jan27 ?        00:55:50 /u01/sybase/ASE15_0/ASE-15_0/bin/dataserver -s**chaitu** -d/u01/sybase/ASE15_0/data/chaitu_master.dat -e/u01/sybase/ASE15_0/ASE-15_0/install/chaitu.log -c/u01/sybase/ASE15_0/ASE-15_0/chaitu.cfg -M/u01/sybase/ASE15_0/ASE-15_0
sybase   29479 29478  0 17:28 ?        00:00:33 /u01/sybase/ASE15_0/ASE-15_0/bin/dataserver -d/u01/sybase/ASE15_0/data/asdfg_master.dat -e/u01/sybase/ASE15_0/ASE-15_0/install/asdfg.log -c/u01/sybase/ASE15_0/ASE-15_0/asdfg.cfg -M/u01/sybase/ASE15_0/ASE-15_0 -s**asdfg** -psa
sybase   29617 29616  0 17:48 ?        00:00:33 /u01/sybase/ASE15_0/ASE-15_0/bin/dataserver -d/u01/sybase/ASE15_0/data/parbat.dat -e/u01/sybase/ASE15_0/ASE-15_0/install/parbat.log -c/u01/sybase/ASE15_0/ASE-15_0/parbat.cfg -M/u01/sybase/ASE15_0/ASE-15_0 -s**parbat**
sybase   29789 29788  0 17:57 ?        00:00:28 /u01/sybase/ASE15_0/ASE-15_0/bin/dataserver -d/u01/sybase/ASE15_0/data/ab123_master.dat -e/u01/sybase/ASE15_0/ASE-15_0/install/ab123.log -c/u01/sybase/ASE15_0/ASE-15_0/ab123.cfg -M/u01/sybase/ASE15_0/ASE-15_0 -s**ab123** -psa
[sybase@linuxerp scripts]$

我希望从操作系统级别获取dataserver名称,而无需连接到数据库。

ps -ef | grep dataserver

将使服务器运行

我尝试将输出保存在文件中,并在文件

上使用grep -v

由于服务器名称不在准确位置,因此很难获得服务器名称。

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式获取该信息。一种方法是管道grep输出并使用正则表达式:

ps -ef | grep dataserver | grep -oh '\-s[[:alnum:]]*'应输出如下内容:

-saashish1
-schaitu
-sasdfg
-sparbat
-sab123

另一种方法是使用来自installed with ASEshowservers实用程序,其输出与ps -ef非常相似,但CPU和&内存信息以及其他数据库服务器,如备份服务器,xp服务器等。

%> showserver

USER        PID %CPU %MEM   SZ  RSS TT STAT START  TIME COMMAND
user114276  0.0  1.7  712 1000 ?  S    Apr  5514:05 dataserver -d greensrv.dat -sgreensrv -einstall/greensrv+_errorlog 
sybase    1071  0.0  1.4  408  820 ?  S    Mar 28895:38 /usr/local/sybase/bin/dataserver -d/dev/rsd1f -e/install/errorlog
user128493  0.0  0.0 3692    0 ?  IW   Apr  1  0:10 backupserver -SSYB_BACKUP -e/install/backup.log -Iinterfaces -Mbin/sybmultbuf -Lus_english -Jiso_1

然后将其输入相同的grep以获取您要查找的信息。

如果你想从前面剪切-s,只想获取服务器名称,那么你可以将其传递到trcut

使用tr,您可以告诉它从每行删除-s

| tr -d '\-s'

使用cut,您可以告诉它打印从第3个字符到字尾的所有内容:

| cut -c3-

这两个都会输出你的服务器名称:

aashish1
chaitu
asdfg
parbat
ab123

Check this Question有关使用grep抓取单个单词的信息。