Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用';grep';命令保留列名的方式_Linux_Bash - Fatal编程技术网

Linux 使用';grep';命令保留列名的方式

Linux 使用';grep';命令保留列名的方式,linux,bash,Linux,Bash,我注意到'grep'命令删除了列名。 我需要根据以下命令自定义进程的输出: ps -ef | egrep "java|mysql" | awk {'print $1, $2, $8'} 常规的“ps”(甚至带有“awk”)有列名:UID、PID等。。。 但是,当我添加“grep”时,列名就消失了。 理想情况下,我必须有“ps”输出,显示4列-PID、用户名、CMD和内存使用情况。 如何保留列名。grep命令将删除标题,因为它们不匹配。只需使用awk并在搜索模式之外匹配第一行条件 ps -ef

我注意到'grep'命令删除了列名。 我需要根据以下命令自定义进程的输出:

ps -ef | egrep "java|mysql" | awk {'print $1, $2, $8'}
常规的“ps”(甚至带有“awk”)有列名:UID、PID等。。。 但是,当我添加“grep”时,列名就消失了。 理想情况下,我必须有“ps”输出,显示4列-PID、用户名、CMD和内存使用情况。
如何保留列名。

grep命令将删除标题,因为它们不匹配。只需使用
awk
并在搜索模式之外匹配第一行条件

ps -ef |  awk 'NR==1{print $1,$2,$8} /java|mysql/{print $1, $2, $8}'

使用
bash
的强大功能

$ cat pid_top.sh
#!/bin/bash

echo "Enter String:"
read p

top -n 1 -b -p $(ps -e | grep $p | awk '{print $1}') | tail -n 2
别忘了
chmod+x pid\u top.sh

创建别名或按名称运行脚本,输入字符串,例如,对于firefox,只需启动一个您将拥有的,并按如下方式输出:

$ ./p*
Enter String:
fire
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     ZEIT+ BEFEHL
2983 bang      20   0 1605624 600168 108940 S   0,0 15,1  40:28.10 firefox

谢谢你,它能工作,但不幸的是,它不能完全满足我的需要。我试图使用
ps-aux | awk'NR==1{print$1,$2,$8}/java | mysql/{print$1,$2,$8}'
。问题是,我必须只监视从“/opt”目录启动的进程,这里的“grep”会修剪头@merlin2011-除了“grep”之外还有什么过滤方法吗?我不清楚你的问题与使用或不使用grep有什么关系。我的答案不使用grep。是的,它满足了我的需要,但部分满足了我的需要。我只想从某些目录中筛选进程:
ps-aux | awk'NR==1{print$2,$1,$4,$3,$11}/java | mysql/{print$2,$1,$4,$3,$11}
,其中$11是命令本身(header命令)。在其他情况下,我会使用
|grep/opt
对其进行过滤,但在您的解决方案中,它会破坏标题。你知道如何在没有grep的情况下按目录过滤吗?忘了标记-@merlin2011Hi@merlin2011,我对你的解决方案做了一些修改,现在它满足了我100%的需求。它看起来像:
ps-aux | awk'NR==1{print$2,$1,$4,$3}/java | mysql/{print$2,$1,$4,$3,$11}'| sed-e'1b'-e'/opt/!d'
top-p$pid的内容是什么??你好,约翰,谢谢你的评论。不过,您的建议似乎更兼容台式机,而不是加固服务器。无论如何,我用另一个应用程序进行了尝试,得到了以下输出:
top-hv |-bcHiOSs-d secs-n max-u | u user-p pid(s)-o field-w[cols]