Я использую ps
, grep
и sed
, чтобы попытаться идентифицировать некоторые процессы Java, которые однозначно идентифицируются каким-либо конкретным аргументом, например. -DAppService=DDDABC_456
или -DAppService=DDDXYZ_456_cazorla
. Я хочу вернуть список, разделенный запятыми: PID,argument,process
Я работаю на CentOS7. Пока я только на полпути по линии, но запутался.
Я стреляю для этого:
1234,-DAppService=DDDABC_456,/usr/java/jdk1.8.0_112/bin/java
2345,-DAppService=DDDABC_456_cazorla,/usr/java/jdk1.8.0_112/bin/java
3456,-DAppService=DDDXYZ_789,/usr/java/jdk1.8.0_112/bin/java
4567,-DAppService=DDDXYZ_789_cazorla,/usr/java/jdk1.8.0_112/bin/java
Обратите внимание, что аргумент может иметь или не иметь суффикс «_cazorla».
Я пробовал это, но он теряет аргументы (и количество аргументов может варьироваться, поэтому я не думаю, что смогу продолжить с $ 9, $ 10 и т. д.):
ps -ef | grep DAppService=DDD[A-Z]*_[0-9]*(?:_[a-z]*)? | grep -v grep | awk '{OFS=","; print $2,$8}'
Дает мне:
1234,/usr/java/jdk1.8.0_112/bin/java
2345,/usr/java/jdk1.8.0_112/bin/java
3456,/usr/java/jdk1.8.0_112/bin/java
4567,/usr/java/jdk1.8.0_112/bin/java
Также эта запятая разделяет все результаты столбца grep и все аргументы, которые мне не нужны:
ps -aef | grep DAppService=DDD[A-Z]*_[0-9]*(?:_[a-z]*)? | grep -v grep | sed -e "s/\s\+/,/g"
Фактический результат слишком велик, чтобы перечислять его здесь, но, например.
user,1234,1,0,Jul03,pts/0,00:03:21,/usr/java/jdk1.8.0_112/bin/java,arg1,arg2,arg3,argn...
user,2345,1,0,Jul03,pts/0,00:03:21,/usr/java/jdk1.8.0_112/bin/java,arg1,arg2,arg3,argn...
user,3456,1,0,Jul03,pts/0,00:03:21,/usr/java/jdk1.8.0_112/bin/java,arg1,arg2,arg3,argn...
user,4567,1,0,Jul03,pts/0,00:03:21,/usr/java/jdk1.8.0_112/bin/java,arg1,arg2,arg3,argn...
Мои познания в sed довольно скудны (как и в awk, но это тоже вариант). Как только я доволен командами, я хочу поместить их в сценарий bash, который я могу вызывать из любого места.
ps -aef | grep DAppService=DDD[A-Z]*_[0-9]*(?:_[a-z]*)? | grep -v grep
- person jas   schedule 03.07.2019ps
понимает-o spec=name
? - person jhnc   schedule 03.07.2019