Linux 查找进程与结束进程

本文介绍Linux系统下如何使用top、ps、lsof等命令查找进程,以及如何利用kill和killall命令结束进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

本文导读

查找进程

 top 命令

ps 命令

lsof 命令

结束进程

 kill 命令

killall 命令


本文导读

  • windows上可以直接在任务管理器中查看和结束进程,Linux上则可以使用如下方式进行

查找进程

  • 杀进程的第一步就是查找进程

 top 命令

  • top 命令 比较综合的动态显示系统进程运行情况。因为是实时显示运行情况,所以可以按"ctrl+c"退出。
  • 如下所示可以看到 Mysql 的 进程PID为 1658
[root@localhost ~]# top
top - 17:08:51 up 2 min,  2 users,  load average: 0.19, 0.15, 0.06
Tasks: 354 total,   2 running, 352 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.7 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1001332 total,   297624 free,   492484 used,   211224 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   345408 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                              
   297 root      20   0       0      0      0 S  0.7  0.0   0:00.98 kworker/0:2                                          
  1658 mysql     20   0 1362156 373548  13208 S  0.7 37.3   0:02.90 mysqld                                               
  2708 root      20   0  148396   2312   1460 R  0.7  0.2   0:00.07 top                                                  
     1 root      20   0   44188   6648   3948 S  0.0  0.7   0:01.72 systemd                                              
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.02 kthreadd                                             
     3 root      20   0       0      0      0 S  0.0  0.0   0:00.03 ksoftirqd/0                                          
     4 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0                                          
     5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                         
     6 root      20   0       0      0      0 S  0.0  0.0   0:00.02 kworker/u256:0                                       
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0  

ps 命令

  • ps 命令是相当强大地进程查看命令,运用该命令可以确定有哪些进程正在运行和运行地状态、进程是否结束、进程有没有僵死、哪些进程占用了过多地资源等等。 

  • ps 是显示瞬间进程的状态,并不动态连续,如果想对进程进行实时监控应该用top命令。

  • 该命令语法格式:ps [选项]

参数:
    -A :所有的进程均显示出来,与 -e 具有同样的效用;
    -a : 显示现行终端机下的所有进程,包括其他用户的进程;
    -u :以用户为主的进程状态 ;
    x :通常与 a 这个参数一起使用,可列出较完整信息。
  • 1、查看当前运行的所有进程:
[root@localhost ~]# ps -A
   PID TTY          TIME CMD
     1 ?        00:00:01 systemd
     2 ?        00:00:00 kthreadd
     3 ?        00:00:00 ksoftirqd/0
     6 ?        00:00:00 kworker/u256:0
     7 ?        00:00:00 migration/0
   946 ?        00:00:00 NetworkManager
  1081 ?        00:00:00 wpa_supplicant
  1082 ?        00:00:00 polkitd
  1276 ?        00:00:00 dhclient
  1467 ?        00:00:00 sshd
  1468 ?        00:00:00 tuned
  1658 ?        00:00:07 mysqld
  2619 ?        00:00:00 master
  2621 ?        00:00:00 pickup
.................
  • 2、查看当前运行的所有进程同时显示详细信息,实际中通常使用 "-aux" 组合:
[root@localhost ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.1  0.6  44188  6652 ?        Ss   17:06   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    17:06   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    17:06   0:00 [ksoftirqd/0]
root          6  0.0  0.0      0     0 ?        S    17:06   0:00 [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    17:06   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    17:06   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        S    17:06   0:00 [rcuob/0]
root       1467  0.0  0.3  80916  3636 ?        Ss   17:06   0:00 /usr/sbin/sshd -D
root       1468  0.0  1.8 555712 18444 ?        Ssl  17:06   0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P
mysql      1658  0.7 38.1 1362156 382236 ?      Ssl  17:06   0:08 /usr/sbin/mysqld
root       2619  0.0  0.2  90380  2176 ?        Ss   17:06   0:00 /usr/libexec/postfix/master -w
postfix    2621  0.0  0.4  90484  4128 ?        S    17:06   0:00 pickup -l -t unix -u
postfix    2622  0.0  0.4  90552  4152 ?        S    17:06   0:00 qmgr -l -t unix -u
  • 3、查看指定进程,结合 grep 可以快速查找进程信息:
[root@localhost ~]# ps -aux|grep mysql
mysql      1658  0.6 38.1 1362156 382236 ?      Ssl  17:06   0:09 /usr/sbin/mysqld
root       2743  0.0  0.0 112724   964 pts/0    R+   17:28   0:00 grep --color=auto mysql
[root@localhost ~]# ps -aux|grep redis
root       2745  0.0  0.0 112724   960 pts/0    R+   17:28   0:00 grep --color=auto redis
[root@localhost ~]# ps -aux|grep java
root       2747  0.0  0.0 112724   960 pts/0    R+   17:28   0:00 grep --color=auto java
[root@localhost ~]# ps -A|grep java
[root@localhost ~]# 
USER 进程的属主;
PID   进程的ID;
PPID    父进程;
%CPU   进程占用的CPU百分比;
%MEM  占用内存的百分比;
NI      进程的NICE值,数值大,表示较少占用CPU时间;
VSZ     該进程使用的虚拟內存量(KB);
RSS     該進程占用的固定內存量(KB)(驻留中页的数量);
TTY     該進程在那個終端上運行(登陸者的終端位置),若與終端無關,則顯示(?)。若為pts/0等,則表示由網絡連接主機進程
WCHAN  當前進程是否正在進行,若為-表示正在進行;
START   該進程被觸發启动时间;
TIME    該进程實際使用CPU運行的时间;
COMMAND   命令的名称和参数;

lsof 命令

  • 可以用 lsof 命令 查看是哪个进程打开了某个端口。比如Tomcat默认是8080,redis默认是6379、mysql默认是3306、Oracle默认是1521 等。
  • 语法:lsof -i :端口号
  • 当Linux没有安装 lsof 时,可以先用 "yum list lsof"查找能用的安装包,在使用 "yum install xxxx"进行安装
[root@localhost ~]# yum list lsof
已加载插件:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.zju.edu.cn
 * updates: mirrors.tuna.tsinghua.edu.cn
可安装的软件包
lsof.x86_64                                                                4.87-5.el7 
.....
[root@localhost ~]# yum install lsof.x86_64
已加载插件:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
.....
Running transaction
  正在安装    : lsof-4.87-5.el7.x86_64                                                                                                               1/1 
  验证中      : lsof-4.87-5.el7.x86_64                                                                                                               1/1 

已安装:
  lsof.x86_64 0:4.87-5.el7                                                                                                                               

完毕!
  • 然后使用 “lsof -i :端口号”查看占用端口的进程
[root@localhost ~]# lsof -i :3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  1658 mysql   20u  IPv6  20161      0t0  TCP *:mysql (LISTEN)
[root@localhost ~]# lsof -i :6379
[root@localhost ~]# lsof -i :3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  1658 mysql   20u  IPv6  20161      0t0  TCP *:mysql (LISTEN)

结束进程

 kill 命令

  • kill 命令经常被使用,它通过发送指定信号给进程或进程组,可以用 kill -l 查看都有哪些信号。
[root@localhost ~]# kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	
  • 1、根据进程 pid 强制结束进程,使用上面的 -9 即可。先查询进程PID值,然后结束它
[root@localhost ~]# ps -aux|grep redis
root       3021  0.0  0.0 112724   964 pts/0    S+   18:01   0:00 grep --color=auto redis
[root@localhost ~]# kill -9 3021

killall 命令

  • killall 命令根据进程名来结束进程
[root@localhost ~]# killall redis
redis: no process found
[root@localhost ~]# killall mysql
mysql: no process found
[root@localhost ~]# killall mysqld

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚩尤后裔-汪茂雄

芝兰生于深林,不以无人而不芳。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值