我正在使用 ps 和用户定义的格式,如下所示:
$ ps ax -o pid,args,psr,pcpu | grep python
2236 /usr/bin/python2.7 -u /home 2 0.0
2452 /usr/bin/python /usr/lib/un 2 0.0
2480 /usr/bin/python /usr/lib/ub 0 0.7
2501 /usr/bin/python /usr/lib/un 2 0.0
4129 /usr/bin/python /usr/bin/up 0 0.1
4792 grep --color=auto python 0 0.0
20665 /usr/bin/python /usr/lib/sy 0 0.0
27022 python 0 0.0
Run Code Online (Sandbox Code Playgroud)
我特别希望 args 具有无限的宽度。我知道我可以提供这样的设置宽度:
$ ps axww -o pid,args:100,psr,pcpu | grep python
2236 /usr/bin/python2.7 -u /home/joshua/Applications/eclipse-classic-4.2/plugins/org.python.pydev_2.7.3.2 2 0.0
2452 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video 2 0.0
2480 /usr/bin/python /usr/lib/ubuntuone-client/ubuntuone-syncdaemon 3 0.7
2501 …Run Code Online (Sandbox Code Playgroud) 有没有办法查看已完成运行或在给定时间前被杀死的处理?
例如,ps -ef将显示所有正在运行的进程,但如果进程完成,则此命令不再返回它。因此,例如,如果我想查看一小时前正在运行的进程(及其命令),是否有任何命令可以执行此操作?或者不再使用的进程日志?
试图调查一个小时前的一个小插曲,并希望获得尽可能多的信息!
干杯
有谁知道的区别ps -awx vs. ps -awwx?
我正在跟踪一些进程,当我添加一个额外的“w”时,我看到了更多的信息。当您发出多个“v”时,这是否像在其他情况下(例如 SSH 调试)一样工作,输出越“详细”?我在手册页中没有看到任何关于此的内容。
有没有办法让apache显示它在top和ps中处理的url?这将帮助我们更快地确定性能问题。
谢谢。
我可以执行netstat -atulpn | grep java查找所有 Java 进程及其附带端口,这很棒,但我还希望还显示进程的完整执行参数。我不相信netstat到目前为止我所探索的一切都是可能的,所以我想我必须编写一个脚本来处理输出netstat,然后将 pid 传递进去ps,然后美化输出以显示ip+端口和完整的命令行。
有没有更好的方法来做到这一点,或者这是唯一的选择?
考虑"ps auxwww"输出中的以下几行:
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 4262 0.0 0,1 76592 1104 s005 Ss 10:02am 0:00.03 login -pf yo
yo 4263 0.0 0,0 75964 956 s005 S 10:02am 0:00.03 -bash
Run Code Online (Sandbox Code Playgroud)
如何强制ps将 COMMAND 列中的所有命令扩展为其完全限定的路径名?我希望将登录解析为 /usr/bin/login 并将 Bash 解析为 /bin/bash。
是否有与Mac OS X 中的procfs等效的东西?也就是说 - 是否有基于文件的机制来轻松获取进程信息?
我遇到了一个问题,我的一些 Ubuntu/Debian 服务器没有显示在 top 或 ps 中传递给 rake 的参数。我已经将这个问题追溯到 /proc/[pid]/cmdline 给出的输出变化。这个文件似乎控制了 ps 和 top 显示的内容。在正确显示参数的服务器上,cmdline 文件的内容类似于:
ruby^@/home/user/.rvm/gems/ree-1.8.7-2011.03/bin/rake^@log_file_tailer:run^@
Run Code Online (Sandbox Code Playgroud)
但是,在不显示 rake 参数的服务器上,cmdline 的输出看起来像
/home/user/.rvm/gems/ree-1.8.7-2011.03/bin/rake^@ ^@^@^@^@^@
Run Code Online (Sandbox Code Playgroud)
也就是说,文件的内容有两行长,但不包含任何有关传递给 rake 的参数的信息。
FWIW,我拥有的两台服务器以不太有用的格式(缺少参数的格式)输出 cmdline 正在运行
Linux 版本 2.6.32-5-amd64(Debian 2.6.32-46)(dannf@debian.org)(gcc 版本 4.3.5(Debian 4.3.5-4))#1 SMP Sun Sep 23 10:07:46 UTC 2012
和
Linux 版本 3.2.0-23-generic(buildd@crested)(gcc 版本 4.6.3(Ubuntu/Linaro 4.6.3-1ubuntu4))#36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012
有趣的是,对于我看到的除 rake 之外的大多数命令,这些服务器似乎确实正确显示了完整的命令行,包括参数。
有谁知道如何获得完整的命令行(包括参数)以输出到这些服务器上的 cmdline?我非常希望这不需要对内核进行完整的重新编译(我对此几乎没有经验)。
-- 编辑 -- 据推测是 soley rake 负责设置 /proc/[pid]/cmdline 的内容,但这与我们运行相同版本的 rake 的事实不符( 0.8.7) 在提供和不提供由 rake 调用的命令行参数的服务器上。
我已经通过 ssh 登录到运行 Centos 7 的服务器并执行以下命令:
[me@server ~]$ ps -ef --forest | grep ssh
root 476 1 0 Dec02 ? 00:00:00 /usr/sbin/sshd -D
root 12366 476 0 23:26 ? 00:00:00 \_ sshd: me[priv]
me 12368 12366 0 23:27 ? 00:00:00 | \_ sshd: me@pts/0
me 12405 12369 0 23:27 pts/0 00:00:00 | \_ grep --color=auto ssh
root 12401 476 0 23:27 ? 00:00:00 \_ sshd: root [priv]
sshd 12402 12401 0 23:27 ? 00:00:00 \_ sshd: root [net]
me 12399 …Run Code Online (Sandbox Code Playgroud) 我意识到在 Docker 容器内运行的进程出现在主机的进程列表中:
# ps aux | grep mariadb
root 12486 0.0 0.0 112812 976 pts/0 S+ 14:47 0:00 grep --color=auto mariadb
Run Code Online (Sandbox Code Playgroud)
有没有办法识别进程是在主机上运行还是在 Docker 容器上运行,或者有办法过滤掉 Docker 进程?