这是一台 Ubuntu 9.10 服务器。
另外如何查看每个进程的内存使用情况?
谢谢
首先,是的,我见过这个问题:
那里的答案不正确,不起作用。我已经投票并相应地发表了评论。
当列出时,我想杀死的进程如下所示ps aux | grep page.py:
阿帕奇424 0.0 0.1 6996 4564?S 07:02 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py 阿帕奇2686 0.0 0.1 7000 3460?S Sep10 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py 阿帕奇2926 0.0 0.0 6996 1404?S Sep02 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py 阿帕奇7398 0.0 0.0 6996 1400?S Sep01 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py 阿帕奇9423 0.0 0.1 6996 3824?S Sep10 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py 阿帕奇11022 0.0 0.0 7004 1400?S Sep01 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py 阿帕奇15343 0.0 0.1 7004 3788?S Sep09 0:00 /usr/bin/python2.6 /u/apps/pysnpp/current/bin/page.py 阿帕奇15364 0.0 0.1 7004 3792?S Sep09 0:00 …
通过单个命令杀死 Zombie 进程和 D 状态进程的最佳方法是什么。
我想找出哪个进程(特别是进程 ID)正在使用给定的端口。一个问题是,我不想使用 sudo,也不想以 root 身份登录。我希望它适用的进程由我想查找进程 ID 的同一用户运行 - 所以我会认为这很简单。
双方lsof并netstat不会告诉我的进程ID,除非我使用sudo运行它们-他们会告诉我的端口正在使用虽然。
作为一些额外的上下文 - 我有各种应用程序都通过 SSH 连接到我管理的服务器,并创建反向端口转发。一旦这些设置完成,我的服务器就会使用转发的端口进行一些处理,然后可以终止连接。如果我可以将特定端口(每个应用程序都有自己的端口)映射到进程,这是一个简单的脚本。有什么建议?
顺便说一下,这是在 Ubuntu 机器上——但我猜任何解决方案都将是大多数 Linux 发行版的标准。
我有一个.pid文件,我需要检查进程是否正在运行。到目前为止,我发现了两个选项
kill -0 `cat something.pid`
Run Code Online (Sandbox Code Playgroud)
如果 pid 未运行,则会打印出错误。我知道这可以重定向到/dev/null,但这让我认为这不是最好的解决方案。
第二种解决方案是使用ps,但是它也会在 STDOUT 上打印
ps -ef `cat something.pid`
Run Code Online (Sandbox Code Playgroud)
将输出重定向到/dev/null并仅使用返回的状态代码是否正常,或者这是否表明我做错了什么,我需要一个不同的命令?
我用这样的主管运行 docker 容器:
文件
CMD ["/run.sh"]
Run Code Online (Sandbox Code Playgroud)
运行文件
#!/usr/bin/env bash
exec supervisord -n
Run Code Online (Sandbox Code Playgroud)
主管-serf.conf
[group:job]
programs=serf,producer
[program:serf]
command=/start-serf-agent.sh
numprocs=1
autostart=true
autorestart=unexpected
stopasgroup=true
killasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
Run Code Online (Sandbox Code Playgroud)
start-serf-agent.sh
#!/bin/bash
exec serf agent --join=serf:7946 -tag role=producer
Run Code Online (Sandbox Code Playgroud)
supervisor-service.conf
[program:producer]
command=/start.sh
numprocs=1
stopasgroup=true
killasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
Run Code Online (Sandbox Code Playgroud)
启动文件
#!/bin/bash
exec /producer --project=${NAME}
Run Code Online (Sandbox Code Playgroud)
制作人停止后,我得到了:
producer_1 | 2016/02/29 21:59:50 [INFO] serf: EventMemberLeave: 7c4fbc80af97 172.19.0.2
producer_1 | 2016/02/29 21:59:51 INF 1 stopping
producer_1 | 2016/02/29 21:59:51 INF 1 exiting router
producer_1 | 2016-02-29 21:59:51,281 INFO exited: …Run Code Online (Sandbox Code Playgroud) 我想在新的根进程产生时执行一个脚本。(在 Linux 上)我怎么能简单地做到这一点?
谢谢
有时一个过程来来去去的速度比我快ps aux,我试过,watch -d -n0.1 "ps aux | tail"但又一次,限制在 1/10 秒。我真正想要的是运行一个命令并在所有新进程产生时跟踪它们,每行一个。即使是运行速度很快的进程。我知道strace有与此类似的能力,但我无法让它做我想做的事。
tl;dr : 有没有办法记录所有新进程?
我不想知道太多,不超过一行ps aux会给我,对于目前的情况,我只有一个由另一个产生并消失的进程,我希望能够运行它,但我不知道命令是什么。即使知道新的 PID 就足够了,因为我可以想出一个脚本来获取这些并ps | grep在这些上运行并在进程运行时为我提供更多信息(假设希望进程在运行时仍然存在ps)
是否可以通过它找到正在运行的进程的命令行pid?的输出/proc/pid/cmdline似乎删除了空格字符,很难读取输出。
我需要一些关于如何完全终止 Jenkins 进程的建议。它不断重新启动自己。在 Mac OSX 上。
$ps -eaf
216 1143 1 0 0:01.65 ?? 0:04.03 /usr/bin/java -jar /Applications/Jenkins/jenkins.war
Run Code Online (Sandbox Code Playgroud)
尝试杀死进程...
kill 1143
Run Code Online (Sandbox Code Playgroud)
该进程仍然存在于不同的pid下
$ps -eaf
216 1175 1 0 0:00.16 ?? 0:01.44 /usr/bin/java -jar /Applications/Jenkins/jenkins.war
Run Code Online (Sandbox Code Playgroud)
父进程被启动。我该怎么办?
0 1 0 0 0:06.09 ?? 0:06.19 /sbin/launchd
Run Code Online (Sandbox Code Playgroud)