У меня есть задача грабли:
task :kill_process do
current_process_id = Process.pid
puts current_process_id
ruby_process_command = "ps -ef | awk '{if( $8~" + "ruby && $2!=" + current_process_id.to_s + "){printf(" + "Killing ruby process: %s " + "\\n " + ",$2);{system(" + "kill -9 " + "$2)};}};'"
puts ruby_process_command
system (ruby_process_command)
end
Я получаю :
awk: cmd. line:1: {if( $8~ruby && $2!=23699){printf(Killing ruby process: %s \n ,$2);{system(kill -9 $2)};}};
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: {if( $8~ruby && $2!=23699){printf(Killing ruby process: %s \n ,$2);{system(kill -9 $2)};}};
awk: cmd. line:1: ^ backslash not last character on line
Любое решение, чтобы решить эту проблему?
Я попробовал это:
ruby_process_command = "ps -ef | awk '{if( $8~" + '"' + "ruby" + '"' + "&& $2!=" + current_process_id.to_s + "){printf(" + '"' + "Killing ruby process: %s " + "\\n" + '"' + ",$2);{system(" + '"' + "kill -9 " + '"' + "$2)};}};'"
С этим он работает нормально, есть ли другой хороший способ сделать это