Linux批量kill具有关键字的进程

    技术2022-07-11  104

    1、Linux批量kill具有关键字的进程 ps -ef | grep /home/edcadmin/03-translator/| grep -v grep | cut -c 9-15 | xargs kill -9

    ps -ef |java为搜索当前服务器所有的Java进程,同样 ps -ef | grep /home/edcadmin/03-translator/| grep -v grep | cut -c 9-15 | xargs kill -9 为搜索|后的进程,其中, grep /home/edcadmin/03-translator/将所有含有关键字“/home/edcadmin/03-translator/”的进程搜索出来。 grep -v grep是在列出的进程中去除含有关键字“grep”的进程。 cut -c 9-15是截取输入行的第9个字符到第15个字符,而这正好是进程号PID,如下截图 xargs kill -s 9中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀掉指定进程。

    2、进程开太多及每个进程打开文件数太多会导致资源获取不到,程序无法执行命令,报错如下: 2020/06/09 17:15:03:904 ERROR - java.io.IOException: Cannot run program “/bin/sh”: error=11, Resource temporarily unavailable at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047) at java.lang.Runtime.exec(Runtime.java:617) at java.lang.Runtime.exec(Runtime.java:485) 另一直观现象为执行命令行会报如下错误: 解决: 1、查看文件流是否关闭 ,文件流未关闭会导致文件打开数累积导致超过限制。 cmd = new String[] { “/bin/sh”, “-c”, command}; Process process = Runtime.getRuntime().exec(cmd); process.waitFor(); process.getOutputStream().close();

    查看进程文件打开数限制设置 ulimit -a

    修改文件打开数限制设置 ulimit -n 4096,也就是限制用户的最大文件打开数为4096个

    查看所有进程的文件打开数 lsof |wc -l 查看某个进程打开的文件数 lsof -p pid |wc -l

    Processed: 0.019, SQL: 12