我有ps aux | grep -v 'grep' | grep "java" | awk '{print $2}'
可以过滤所有 java 进程的命令,但我遇到的问题是我只想选择名称包含core
或nimbus
. 还有其他 java 进程,如 eclipse 和邮件服务器,它们同时运行,我不希望它们在那里。
我已经从Kill Java processes 中检查过它。
我是脚本新手,所以如果问题很愚蠢,请原谅我。谢谢!
pkill -f 'java.*(core|nimbus)'
我没有像您这样的 Java 设置,但我确实在我的服务器上运行了大量 Django 应用程序。类似的情况是它们都看起来像 UWSGI 进程。这是一大块ps aux | grep uwsgi
:
oli 7201 0.0 1.0 70324 20936 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/asvsforms/uwsgi.ini oli 7202 0.0 1.0 70336 20956 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/bnc/uwsgi.ini oli 7203 0.0 1.0 70456 21016 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/cleanup/uwsgi.ini oli 7204 0.0 1.0 70272 21068 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/emwill/uwsgi.ini oli 7205 0.0 1.3 88336 28124 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/qi/uwsgi.ini oli 7206 0.0 1.0 70256 20996 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/sbaccuracy/uwsgi.ini
你可以把awk
它放下(你不需要grep
和 awk
),但是看看pgrep
!
$ pgrep -af 'uwsgi.*cleanup' 7203 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/cleanup/uwsgi.ini 7217 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/cleanup/uwsgi.ini
这-f
是这里真正需要的。这将模式搜索扩展到用于运行某些东西的整个命令行。没有它,它只会搜索第一部分。该-a
只是这里输出的全线。
无论如何,要杀死它,我们只需切换到pkill
几乎相同的命令。它没有相同的输出功能,但这不是它的设计目的。这使我们回到了答案的顶部。
如果您要坚持过滤ps
,请不要使用ps|grep|grep|awk|egrep|awk|xargs kill
或现在建议的任何内容。它只是看起来很傻。一个awk
就可以做所有的过滤。
ps aux | awk '/java.*(core|nimbus)/ {print $2}'
ps aux | awk '/java.*(core|nimbus)/ {print $2 | kill}'
我还是挑选pgrep
和pkill
虽然。
联系客服