Как избавиться от лишних символов в идентификаторе процесса Linux с помощью сценария оболочки - PullRequest
0 голосов
/ 12 апреля 2011

Я пытаюсь убить процесс его pid, и это сценарий, который я нашел в сети.

PID=`ps -ef | grep myProcess | grep -v grep | awk '{print $2}'`  
echo -e Killing myProcess with pid: $PID..  

Вывод: Killing myProcesswith pid: 13275 ^ M ..

Кто-нибудь знает, почему существует ^ M, как мне избавиться от этого, потому что команда kill не запустилась:

**arguments must be process or job IDs**

Я искал в Интернете, но все еще не знал, как преодолеть это .. Любая помощь приветствуется !!Спасибо!

Ответы [ 4 ]

1 голос
/ 12 апреля 2011

Во-первых, ваш синтаксис неправильный.Используйте $() для вызова команды и сохранения ее выходных данных в переменной

PID=$(ps -ef | grep myProcess | grep -v grep | awk '{print $2}')

секунды, все это можно сделать одним оператором awk без необходимости дополнительных grep процессов.

ps -eo pid,args | awk '/myProces[s]/{cmd="kill  "$1;print cmd; }'
0 голосов
/ 12 апреля 2011

Вы можете просто использовать:

PID=`pidof myProcess`
0 голосов
/ 12 апреля 2011

Из того, что я вижу, вы не хотите убивать процесс по PID, по его имени.И вы делаете это, получая PID процесса, а затем пытаетесь уничтожить его с помощью PID.Если вы хотите убить по имени, используйте killall processname.

0 голосов
/ 12 апреля 2011

Из быстрого чтения в режиме онлайн , команда печати в awk всегда добавляет новую строку (которая иногда может быть представлена ​​Control-M или ^ M).

Похоже, что printf будет подходящей альтернативой. Может быть:

PID=ps -ef | grep myProcess | grep -v grep | awk '{printf "%i",$2}'
...