Как выполнить команду linux из rakefile? - PullRequest
1 голос
/ 19 июня 2020

У меня есть следующая команда:

ps -ef | awk '{if( $8~"java" || $8~"ruby" || $8~"god"){printf("Killing : %s \n",$2);{system("kill -9 "$2)};}};'

Как мне выполнить эту linux команду из rakeFile.

Я пробовал:

task :kill_process do
  `ps -ef | awk '{if( $8~"java" || $8~"ruby" || $8~"god"){printf("Killing : %s \n",$2);{system("kill -9 "$2)};}};'`
end

Но при выполнении выдает ошибку:

awk: cmd. line:1: {if( $8~"java" || $8~"glassfish" || $8~"ruby" || $8~"god" || $8~"couch"){printf("Killing : %s 
awk: cmd. line:1:                                                                                 ^ unterminated string
awk: cmd. line:1: {if( $8~"java" || $8~"glassfish" || $8~"ruby" || $8~"god" || $8~"couch"){printf("Killing : %s 
awk: cmd. line:1:                                                                                 ^ syntax error

Я нашел решение своей проблемы: Благодаря @Yurii Verbytskyi

task :kill_process do
   system %q(ps -ef | awk '{if( $8~"java" || $8~"ruby" || $8~"god"){printf("Killing : %s \n",$2);{system("kill -9 "$2)};}}') 
end

1 Ответ

2 голосов
/ 19 июня 2020

Попробуйте вот это.

task :kill_process do
   system("ps -ef | awk '{if( $8~\"java\" || $8~\"ruby\" || $8~\"god\"){printf(\"Killing : %s \\n\",$2);{system(\"kill -9 \"$2)};}};'")
end

Нам нужно избегать специальных символов, таких как \n

...