我正在尝试完成一个维护脚本,我正赶上以下几行:
PUID=$(ps aux | grep $PID | grep -v $USER| cut -d' ' -f1)
我正在尝试从$PID
命令中提取特定进程ID(ps aux
),(忽略用户刚刚使用相同PID创建的进程),然后消除除了流程所有者的用户名。
目前,该命令在命令行中运行时运行正常,但是我一直遇到将其分配给变量$PUID
的问题,甚至只是将其作为命令执行。有什么建议吗?
编辑:
我正试图解决这个问题,我相信在传递变量$ PID时仍然存在问题,现在它正在使用此行从文件(它正确地执行)中提取
PID = $(cat / nfs / pdx / home / komcconx / PID / current / pid)
如果我添加一个echo $ PID,它将返回正确的pid。
当我运行命令PUID = $(ps -p $ PID -o uname =)时,出现错误“ERROR:进程ID列表语法错误”。如果我在$ PID的位置运行带有“1”的命令,它将正确返回“root”
任何想法?'
最终编辑:
发现问题是从DOS文件中取出PID,我试图用DOS换行符运行命令,这个问题已经关闭了!
答案 0 :(得分:2)
如果您只想要进程的用户名,可以使用-o选项:
PUID=$(ps -p $PID -o uname=);
echo $PUID