我很难理解ps命令中出现的内容.为了测试我的理解,我创建了以下虚拟脚本
#!/bin/bash
for i in {1..100000}
do
date -u
date -u
date -u
done
Run Code Online (Sandbox Code Playgroud)
在运行此脚本时,我打开了一个新终端并重复执行
ps -eaf | grep date | grep -v grep
Run Code Online (Sandbox Code Playgroud)
我能够在输出中约会过程.
后来我用替换date -u来改变了虚拟脚本echo "what is going on"
#!/bin/bash
for i in {1..100000}
do
echo "What is going on"
echo "What is going on"
echo "What is going on"
done
Run Code Online (Sandbox Code Playgroud)
在运行更新的虚拟脚本时,我打开了一个新终端并重复执行
ps -eaf | grep echo | grep -v grep
Run Code Online (Sandbox Code Playgroud)
和回声从未在输出中显示.为什么是这样?我怀疑原因是脚本是一个bash脚本,可能是它使用内置echo,因此它没有显示在ps输出中.我对么?我在这里错过了什么?
我使用ps aux来输出我的计算机上按内存排序的前10个进程.这是我的命令:
ps aux --sort %mem --cols 100 |tail -10
Run Code Online (Sandbox Code Playgroud)
这输出类似的东西
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
dmak1112 3564 0.0 1.2 831788 104588 ? Sl 12:59 0:01 /opt/google/chrome/chrome --type=re
dmak1112 9227 7.6 1.4 843500 117664 ? Sl 14:33 0:07 /opt/google/chrome/chrome --type=re
dmak1112 2656 1.7 1.5 1513096 122136 ? Ssl 12:58 1:41 compiz
dmak1112 4425 0.1 1.5 852336 126496 ? Sl 13:04 0:08 /opt/google/chrome/chrome --type=re
dmak1112 3420 0.9 2.3 932820 191284 ? Sl 12:59 0:53 /opt/google/chrome/chrome …Run Code Online (Sandbox Code Playgroud) 基本上我想要所有已经休眠超过一小时的进程。
我知道 ps 中有 etime,但遗憾的是它显示了整体生命周期。
在linux下如何做到这一点(最好用ps)?
我正在尝试实现我自己的ps命令,称为psmod.我可以使用linux系统调用和/proc目录的所有实用程序.
我发现目录中的所有目录都/proc以数字作为名称,是系统中的进程.我的问题是:如何只选择那些在psmod被调用时处于活动状态的进程?我知道/proc/<pid>/stat有一封信代表了这个过程的现状; 无论如何,对于每一个进程来说/proc,这封信就是S在睡觉.
我还试图向每个进程发送一个信号0,从0到maximumnumberofprocesses(在我的例子中,32768),但是这样它发现的进程远远多于进程中的进程/proc.
所以,我的问题是,ps工作怎么样?源码对我来说有点复杂,所以如果有人能解释我,我将不胜感激.
我正在 Ubuntu 14.04 上运行测试。当我使用“ps aux|grep service”检查 CPU 使用情况时,进程的 CPU 使用率为 0.1,而在 htop 中,同一进程的 CPU% 为 12.3。
谁能告诉我原因吗?或者我应该考虑哪个值是正确的?
谢谢
我有两个 Tomcat 进程,一个叫做event-ws,另一个叫做app-event-ws. 我有时需要event-ws从 shell 脚本中杀死:
ps -ef | grep -w event-ws | grep -v grep
Run Code Online (Sandbox Code Playgroud)
以上将找到并杀死他们;我怎样才能找到确切地找到其中之一?
我有一个使用 pid 运行的服务器进程24257,想知道它使用了多少内存(以便估计为 Kubernetes 中的同一进程分配多少资源)。根据ps(https://man7.org/linux/man-pages/man1/ps.1.html)的手册页,这可以通过输出格式说明符获得%mem:
%mem %MEM ratio of the process's resident set size
to the physical memory on the machine,
expressed as a percentage. (alias pmem).
Run Code Online (Sandbox Code Playgroud)
如果我运行这个,我会得到
> ps -p 24257 -o %mem
%MEM
0.3
Run Code Online (Sandbox Code Playgroud)
我不确定我是否理解这个输出,因为我在具有 64 GB 内存的 MacBook Pro 上运行该进程,因此我希望(终端)进程在活动监视器中显示为使用约 19 GB 内存。然而,运行的终端进程远没有达到这个数字(最多约 900 Mb)。
有没有办法获得内存使用量的绝对数字(以 Mb 为单位)?或者,如何确定用于此计算的“机器上的物理内存”?
关于pri的注释来自ps手册页:
"pri PRI优先处理流程.数字越大意味着优先级越低"
在这里考虑PID 26073
$ renice +15 26073
26073: old priority 5, new priority 15 # I am making this process more nice
$ ps -t 1 -o pid,ppid,%cpu,stat,cmd,bsdstart,time,pri
PID PPID %CPU STAT CMD START TIME PRI
9115 18136 0.0 Ss bash 17:10 00:00:01 19
26073 9115 12.0 RN+ p4 sync 19:06 00:02:56 4
Run Code Online (Sandbox Code Playgroud)
STAT = RN +表示:正在运行,低prio(对其他人好),前景.PRI = 4(1)
$ sudo renice -10 26073
26073: old priority 15, new priority -10 # I am making this process less …Run Code Online (Sandbox Code Playgroud) 我有一个在ps输出中包含多个字符串的 java 进程。我只想要一个特定的字符串。
例如,我有
root 5565 7687 0 Nov20 ? 00:00:54 /bin/java -Xms256m -Xmx512m -XX:MaxPermSize=128m -XX:PermSize=256m -XX:MaxPermSize=256m -Dstdout.file=/tmp/std.out -da -Dext.dir.class=profiles/ -Dprocess.name=java1 -Djava.security.policy=security.policy
Run Code Online (Sandbox Code Playgroud)
我只想要process.name=java1并且不需要ps输出中的任何其他内容。我无法使用 awk 或 sed 找到一种切实可行的方法。
我试图使用:
ps -ef | grep java1 | grep -v grep | awk '/process.name/ {print $0}'
Run Code Online (Sandbox Code Playgroud)
我得到的输出是ps -ef输出。
有没有更简单的方法?
我正在使用ps查找创建为执行命令“ sleep 1234&”的进程的pid,我将结果复制为仅匹配“ sleeping 1234”。
ps -A -f | grep "sleep 1234"
Run Code Online (Sandbox Code Playgroud)
但是,它本身也与命令“ grep sleep 1234”匹配,返回两行而不是一行。如何为grep编写模式以排除单词“ grep”本身?
谢谢