【发布时间】:2017-01-25 14:28:58
【问题描述】:
我有以下 shell 脚本:
#!/bin/bash
top -n 1 -p $(pgrep -d',' -f R) | grep R | awk '{if ($2 != "PID" && int($10) > 50)
{
kill_cmd = "echo kill " $1 " | bash -";
system(kill_cmd);
}}'
如果我将系统调用更改为 print 语句,则结果输出看起来与我预期的一样:echo kill <some_pid> | bash - 我还能够运行 print 语句的输出而不会出错。
系统调用错误提示:语法错误靠近意外标记`('
该脚本的目的是使用 top 查看正在运行的 R 进程,并在它们使用超过 50% 的系统内存时终止它们。
【问题讨论】:
-
如果调试打印语句如您所说的那样产生预期的输出,那么您的脚本中没有任何内容会产生您所说的错误消息,因此您在诊断/描述的某个地方犯了错误问题。在 system() 调用之前添加
print "<" kill_cmd ">"然后运行 cat -v script; ./script并将结果复制/粘贴到您的问题中,这样我们就可以准确地看到您正在运行的命令以及它产生的输出和错误消息。
标签: awk