作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
经过上一章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
选项用于产生完整的格式输出。[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
选项显示没有控制终端的进程。[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]
三、用途
ps
命令随时了解系统中正在运行的进程情况,以便及时发现异常进程,如占用过多 CPU 或内存的进程。ps
命令。firefox
的浏览器进程,可以使用ps aux | grep firefox
,它会列出所有包含firefox
关键字的进程信息,然后可以根据 PID 进行进一步操作。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
kill 1234
#或者kill -15 1234
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里面叫不可中断睡眠进程,这个有机会后面再讲。