2017-02-10 33 views
-1
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 
[[email protected]xerp scripts]$ 

Я хочу получить имя dataserver с самого уровня ОС без подключения к базе данных.Я хочу получить имя сервера через Process from os level самостоятельно, не подключаясь к DB

ps -ef | grep dataserver 

получит запустить сервер или не

Я пытался сохранить вывод в файл и использовать grep -v на файл

Поскольку имя сервера не было в точно положение, то трудно для получения имени сервера.

+0

ps -ef будет получать только запущенные серверы. Если вы хотите, чтобы серверы не запускались, вам нужно будет проверить $ SYBASE/interfaces или файлы RUN_servername, как правило, в $ SYBASE/$ SYBASE_ASE/install –

ответ

0

Существует несколько способов получить эту информацию. Можно было бы перенаправить вывод Grep и использовать регулярное выражение:

ps -ef | grep dataserver | grep -oh '\-s[[:alnum:]]*' который должен вывести что-то вроде этого:

-saashish1 
-schaitu 
-sasdfg 
-sparbat 
-sab123 

Еще бы использовать утилиту showservers, которая приходит installed with ASE, который выводит очень похож на ps -ef но с CPU & информации памяти, а также в том числе других серверов баз данных, таких как сервер резервного копирования, хр сервер и т.д.

%> 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 спереди, чтобы просто получить имя самого сервера, тогда вы можете передать его в tr или cut.

Использование tr вы можете сказать ему, чтобы удалить -s из каждой строки:

| tr -d '\-s' 

Использование cut вы можете сказать ему, чтобы напечатать все, от 3-го символа до конца слова:

| cut -c3- 

Оба этих файла будут выводить ваши имена серверов следующим образом:

aashish1 
chaitu 
asdfg 
parbat 
ab123 

Check this Question для получения информации об использовании grep для захвата отдельных слов.

Смежные вопросы