2016-04-26 5 views
1

Я бегу следующий сценарий в командной строке Linux:Получение неожиданной новой строки ошибки при выполнении AWK

ps -ef| grep "java -Droute=full" | awk 'NR!=1{print $2}' | while read output; 
do 
pid=$(echo $output) 
kill $pid 
done 

Я получаю следующее сообщение об ошибке:

awk: cmd. line:1: NR!=1{print 
awk: cmd. line:1:   ^unexpected newline or end of string 

Я считаю, цитаты и пространства соответствуют , но почему я все еще получаю эту ошибку?

Выход ps -ef | grep "java -Droute=full"

root  24441  1 0 Apr22 ?  00:00:00 sudo nohup java -Droute=full -jar abc 
root  24442 24441 7 Apr22 ?  06:41:10 java -Droute=full -jar abc 
user 30804 30771 0 05:27 pts/0 00:00:00 grep --color=auto java -Droute=full 
+0

Вы можете показать свой вывод 'ps -ef | grep "java -Droute = full" '..? – shafeeq

+0

@ user3302647, Добавлено в вопрос сам. –

+0

@ tanmay2507 Почему вам нужно 'NR! = 1', вы используете это, чтобы пропустить заголовок' ps -ef', если да, вам это не нужно, потому что 'grep' уже делает это за вас; просто используйте 'awk '{print $ 2}'' напрямую – ritesht93

ответ

2

Реальная проблема, которую вы пытаетесь решить что-то вроде «Как убить процесс, командная строка которого содержит java -Droute=full.

Гораздо проще, безопаснее путь к просто использовать pkill:

pkill -f 'java -Droute=full' 

Это заменяет весь сценарий

.
+0

Я пробовал это, но я получил эту ошибку: pkill: недопустимая опция -' D ' И странная часть - это когда я попытался запустить команду из задания Jenkins, тогда он показывает ошибку, но когда я непосредственно запускаю команду в CLI удаленного сервера, она работает нормально. –

+0

@ tanmay2507: Звучит как проблема с цитированием в Дженкинсе. Попробуйте использовать двойные кавычки вместо синглов ('' 'вместо' ''). Или, может быть, вам нужно избежать их по какой-либо причине ('\" 'или' \\ "'). –

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