【发布时间】:2015-02-06 15:10:09
【问题描述】:
我正在尝试完成一个维护脚本,但我正在赶上以下行:
PUID=$(ps aux | grep $PID | grep -v $USER| cut -d' ' -f1)
我正在尝试从ps aux 命令中提取特定的进程 ID ($PID),(同时忽略用户刚刚使用相同 PID 创建的进程),然后删除除用户名之外的所有进程进程所有者。
目前,该命令在命令行中运行时运行良好,但是我在将其分配给变量$PUID 时遇到问题,甚至只是将其作为命令执行。有什么建议吗?
编辑:
我正在尝试解决这个问题,我相信在传递变量 $PID 时仍然存在问题,现在它正在使用此行从文件中提取(它正确执行)
PID=$(cat /nfs/pdx/home/komcconx/PID/current/pid)
如果我添加一个 echo $PID,它会返回正确的 pid。
当我运行命令 PUID=$(ps -p $PID -o uname=) 时,我收到一条错误消息“错误:进程 ID 列表语法错误”。如果我用“1”代替 $PID 运行命令,它会正确返回“root”
有什么想法吗?'
最终编辑:
发现问题是 PID 是从 DOS 文件中提取的,我尝试使用 DOS 换行符运行命令,此问题已解决!
【问题讨论】:
-
哦,糟糕,当我试图专注于至少让第一个 grep 工作时,我把它放在里面了。