Linux进阶命令-ps&kill

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

经过上一章Linux日志的讲解,我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令,主要从以下几个方面来讲解:一些系统操作,系统查看处理,Linux文本处理,逻辑判断,重定向,网络传输,服务启动,文件句柄等内容。通过这些操作,让你对Linux的操作更加得心应手,具体分成以下章节进行讲解:

Linux进阶命令-echo&date&alias

Linux进阶命令-top

Linux进阶命令-ps&kill(本章节)

Linux进阶命令-sort&wc

Linux进阶命令-sed&split

Linux进阶命令-awk&uniq

Linux进阶命令-逻辑或&逻辑与

Linux进阶命令-重定向

Linux进阶命令-scp

Linux进阶命令-rsync

Linux进阶命令-rsync-daemon

Linux进阶命令-nohup&screen

Linux进阶命令-lsof

Linux进阶命令-小结

上一小节,我们讲了top里面可用看到进程信息,如果服务器是一个正在使用的业务服务器,那么业务进程就可能很多,top只能看到整体情况,如果我要看某些具体的进程应该怎么办呢?

PS

ps命令是用于报告当前系统的进程状态。以下是它的详细介绍:

一、基本功能

它能够提供关于运行在系统中的进程的大量信息,例如进程的 ID、进程所属的用户、进程的 CPU 和内存使用情况等。

二、常用选项

ps -ef
  • e选项代表显示系统内的所有进程信息。

  • f选项用于产生完整的格式输出。

  • 这个组合可以列出非常详细的进程信息,包括进程的 UID(用户 ID)、PID(进程 ID)、PPID(父进程 ID)、C(进程使用的 CPU 时间百分比)、STIME(进程启动时间)、TTY(进程相关的终端设备)、TIME(进程使用的 CPU 时间总和)以及 CMD(启动进程的命令名称)等。例如:

[root@localhost ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Aug14 ?        00:00:32 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2     0  0 Aug14 ?        00:00:00 [kthreadd]
root         4     2  0 Aug14 ?        00:00:00 [kworker/0:0
ps aux
  • a选项表示显示所有与终端相关或无关的进程。

  • u选项用于显示进程的详细用户信息。

  • x选项显示没有控制终端的进程。

  • 此命令会显示更详细的信息,包括 USER(进程所有者的用户名)、PID、%CPU(进程占用的 CPU 百分比)、%MEM(进程占用的内存百分比)、VSZ(进程使用的虚拟内存大小,单位为 KB)、RSS(进程使用的物理内存大小,单位为 KB)、STAT(进程的状态,如 R 表示运行中,S 表示睡眠,D 表示不可中断的睡眠等)、START(进程的启动时间)、TIME(进程累计使用的 CPU 时间)、COMMAND(启动进程的命令)等。

[root@localhost ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2 125460  3976 ?        Ss   Aug14   0:32 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S    Aug14   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   Aug14   0:00 [kworker/0:0H]

三、用途

  1. 监控系统进程:

    • 管理员可以通过ps命令随时了解系统中正在运行的进程情况,以便及时发现异常进程,如占用过多 CPU 或内存的进程。

    • 例如,如果发现某个未知进程占用了大量 CPU 资源,可以进一步调查该进程的来源和用途,判断是否是恶意程序或存在程序错误。

  2. 查找特定进程:

    • 当需要查找某个特定程序的进程 ID 以便进行操作(如终止进程)时,可以使用ps命令。

    • 比如,要查找名为firefox的浏览器进程,可以使用ps aux | grep firefox,它会列出所有包含firefox关键字的进程信息,然后可以根据 PID 进行进一步操作。

  3. 分析系统性能:

    • 通过观察进程的 CPU 和内存使用情况,可以分析系统性能瓶颈。

    • 如果多个进程都出现高 CPU 使用率,可能意味着系统负载过高,需要考虑升级硬件或优化程序。如果某些进程的内存使用不断增长且不释放,可能存在内存泄漏问题,需要对相关程序进行检查和修复。

kill

在上面的命令,其实我们已经看到了关于进程的说明,那么我们怎么可以关掉一个进程呢?

kill 命令用于终止正在运行的进程。在Linux和Unix系统中,每个进程都有一个唯一的进程ID(PID),kill 命令通过指定进程ID来向指定进程发送信号,以达到终止进程的目的。

基本语法

kill [options] PID
  • PID:要终止的进程的进程ID。

  • options:可选参数,用于指定发送的信号类型或控制行为。

常用选项

  • -9 或 --kill:发送强制终止信号(SIGKILL),立即终止目标进程。这是一种强制的终止方式,但可能会导致未保存数据丢失。

kill -9 PID
  • -15 或 --terminate:发送终止信号(SIGTERM),请求目标进程优雅地退出。通常情况下,进程可以捕获这个信号并执行清理操作后自行退出。

kill -15 PID
#默认啥都不加就等于是15
kill PID
  • -l:列出所有可用的信号名称。

kill -l

信号类型

  • SIGTERM(15):默认发送的终止信号,通常用于请求进程正常退出。

  • SIGKILL(9):强制终止信号,立即终止进程,无法被阻塞或忽略。

示例

  1. 终止进程ID为 1234 的进程:

kill 1234
#或者kill -15 1234
  1. 强制终止进程ID为 5678 的进程:

kill -9 5678

使用场景

  • 结束僵尸进程: 僵尸进程是已经终止但其父进程未能正确处理终止状态的进程。可以使用 kill 命令将僵尸父进程终止并清理掉。

  • 关闭异常进程: 当某个进程消耗过多资源或者表现异常时,可以使用 kill 命令终止它,以恢复系统的正常运行。

  • 进程管理: 在系统管理和运维中,kill 命令是管理进程生命周期的重要工具,能够有效地管理和控制进程的行为。

前面提到了进程和父进程,这里甚至还有没有提到的子进程,我们举个例子来说明它。

[root@localhost ~]# ps -ef |grep nginx
root     15027     1  0 13:28 ?        00:00:00 nginx: master process /usr/sbin/nginx
nginx    15028 15027  0 13:28 ?        00:00:00 nginx: worker process
nginx    15029 15027  0 13:28 ?        00:00:00 nginx: worker process

1.15027进程编号是nginx的master进程或者说主进程,它的父进程是1号进程,这个1号进程理解就是操作系统(普通的业务进程的父进程都应该是1号进程)。

2.15028和15029进程编号是就是nginx的work进程,它的父进程就是nginx的master进程,反之他们就是15027的子进程。

总结

1.ps 命令讲到的2个常用参数实际上是两种操作习惯或者风格,99%的的问题使用他们是没有区别的。

2.无论是哪个用法,他们都会显示所有的进程,我们基本上都需要通过我们前面在Linux-搜索命令(二)的grep来进行过滤,过滤的选项可以是进程名字,也可用启动命令等。

3.kill命令主要作用是杀死进程,其实还有个选项,-2 这个需要应用程序支持这个信号才可以支持,它才可以最优雅关闭进程。

4.kill虽然可以一次杀死多个进程(kill pid1 pid2 pid3 ...),但是其实还有一个pkill的命令可以杀死一类进程,可以提高效率。

5.其实还有部分进程是无法通过kill -9 杀死的,在Linux里面叫不可中断睡眠进程,这个有机会后面再讲。

图片

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值