【发布时间】:2023-04-05 17:48:01
【问题描述】:
我有以下命令:
ps -ef | awk '{if( $8~"java" || $8~"ruby" || $8~"god"){printf("Killing : %s \n",$2);{system("kill -9 "$2)};}};'
我如何从 rakeFile 执行这个 linux 命令。
我试过了:
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
【问题讨论】:
-
这个命令是直接在命令行运行的吗?它似乎包含一些 ruby 方法调用。
-
这可以直接在命令行上正常工作。
-
你可以试试ruby-doc.org/core-2.7.1/Kernel.html#method-i-system task :kill_process do system %q(ps -ef | awk '{if( $8~"java" || $8~"ruby" || $8~"god" ){printf("Killing : %s \n",$2);}}') end * 我删除了 kill 命令以在本地测试它)
-
@YuriiVerbytskyi 谢谢,它正在工作。你能告诉我这里的 %q 是什么吗
-
simpleror.wordpress.com/2009/03/15/q-q-w-w-x-r-s 这是另一种单引号语法。刚刚使用它,因为您的命令字符串中存在不同的引号
标签: ruby linux rake-task rakefile