Linux进阶之路————进程与服务管理

引言

在Linux 中,每个执行的程序(代码)都成为一个进程,Linux 为每一个进程分配了一个唯一的 id 号 - PID

每个进程都会对应一个父进程,而这个父进程可以复制多个子进程,例如 www 服务器。

每个进程都可能以两种方式存在 - 前台/ 后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常运行在管理员无法感知的后台。

一般系统服务都是以后台进程的形式存在,比如 sshd 服务进程,其中的 d 代表 daemon (守护进程),而且会常驻在系统中,如果不进行特殊操作,一般只有在关机时才会终止。

一、显示系统中的进程列表

基本语法:

ps -aux

一般使用 ps 指令都会带上参数,-a 代表 all 所有进程;-u 代表 user 以用户格式显示;-x 代表显示后台进程运行参数

字段详解:

USER - 进程的用户名

PID - 进程 ID

%CPU - 占用 CPU 百分比

%MEM - 占用物理内存百分比

VSZ - 使用的虚拟内存大小(单位:KB)

RSS - 使用的物理内存大小(单位:KB)

TTY - 终端名称,缩写

STAT - 进程状态,S - 睡眠,s - 表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或被停止。

START - 进程启动时间

TIME - 进程占用 CPU 总时间

COMMAND - 进程执行时的命令行,过长的话可能会截断显示

另外,ps -aux 还可以通过管道符和过滤命令  “| grep 进程名”   来专门查找指定进程的详情信息:

可以看到上面的途中,查看ssh 进程的信息,显示结果中,第一行是 sshd 后台进程,因为它在启动时使用了 /usr/sbin/sshd 命令。而最后一行可以看到使用的是 grep ssh ,也就是我们正在查询时开启的一个进程。第二和第三行是通过外部的 ssh 终端设备连接进来而开启的后台进程,第四行则是一个 sftp 相关的后台进程。

有趣的是,如果我通过 kill -9 杀掉 3362 进程,那么远程终端的文件视图就会连接中断,同时第四行的 sftp 后台进程也会终止:

终端命令行依然可以操作,由此可见进程列表中显示的信息与实际的进程情况完全匹配。

二、查看父进程

还有一种查询进程的方式是:

ps -ef

这句指令的意思是“全格式显示所有进程,包括父进程”。一般也会配合 管道符 “|” 和 筛选指令 grep 、分页指令 more 等一起使用。

PPID 就是父进程的 PID 。

C 代表CPU 用于计算执行优先级的因子。数值越大,表名进程是 CPU 密集型运算,执行优先级会降低;数值越小,表名进程是 IO 密集型运算,执行优先级会提高。

STIME 进程启动的时间

TTY  终端名称

TIME  CPU 占用时间

CMD  启动进程所用的命令和参数

三、终止进程

基本语法:

kill  参数  进程PID

常用参数: -9。

Linux 中的 kill 指令用来终止指定进程的运行。

通常,终止一个前台进程只需要 Ctrl + C ,但是对于一个后台进程就需要使用 kill 指令,并且要先查看我们想要终止进程的 PID。

我们来使用 man kill 来查看一下 kill  的使用手册:

在描述中的第一段话意思是这样的:

指令 kill 发送特定的信号给特定的进程或进程组。如果没有指定信号,那么就会发送 TERM 信号。TERM 信号会杀死那些没有捕获这个信号的进程。对于其他的进程,可能有必要使用 KILL(9) 信号,因为这个信号不会被捕获。

在 kill 说明中有一个参数 是 -l  可以列出所有的可发送信号:

因此,kill -9 的含义就是强制杀死进程。

四、服务管理

服务的本质其实就是进程,但是运行于后台,通常会监听某个端口,等待其他程序的请求,比如mysqld,sshd 防火墙等,因此我们又称为守护进程

4.1 service指令

在CentOS 7之前都是通过 service 指令来管理后台系统服务,CentOS7 之后,采用systemctl 指令来进行管理。这里讲解 service 的用法,后期会针对 CentOS 7 来进程补充。

基本语法:

service  服务名  start | stop | restart | reload | status

案例:查看Linux 防火墙的情况,关闭并重启防火墙:

可以在宿主机终端采用 telnet 指令来检查端口是否可以连接(国庆期间又装了一个 CentOS 6 ,ip 是200):

4.2 查看Linux自启动服务

在命令行输入 setup 指令并回车即可查看系统自启动服务:

服务名称前面的 [ ] 内如果有 * 号,说明此项服务属于开机自启。

除了这种方式,还可以通过/etc/init.d/服务名称 文件来查看:

不过在这里好像只能看到系统都有哪些服务。

4.3 服务的运行级别

在前面的文章中《Linux进阶之路————Linux运行级别》中,总结了关于Linux 系统运行级别的概念和知识,这里服务的运行级别也和之前的运行级别是一脉相承的。

首先我们知道,Linux 的启动流程是如下所示的:

服务的运行级别对应着系统的运行级别,如果系统当前的运行级别是3,那么5 运行级别的服务就不会开机启动,而需要手动操作。

通过 chkconfig 指令可以给每个服务的各个运行级别设置 自启动/ 关闭,设置之后即生效

常用语法:

chkconfig  --list | grep  服务名   # 查看服务的运行级别状态,过滤处理可选

 chkconfig 服务名 --list  # 查看某个服务的运行级别状态

 chkconfig  [--level  运行级别编号]  服务名  on | off      # 在某个运行级别下开启或关闭自启动,若不写运行级别,默认全部

案例:关闭所有运行级别下的防火墙服务的自启动:

五、进程监控

Linux 使用 top 命令来进行进程监控。

top 命令和 ps 命令有些类似,它们都用来显示正在执行的进程,但二者又有不同,top 最大的特点在于可以定期刷新进程列表中的状态。

基本语法:

top [选项]

可选参数:

-d 秒数        指定top 命令刷新频率,默认是 3。

-i                   不显示任何闲置或者僵死进程

-p  PID          指定进程ID 的进程状态

当进入到 top 的交互模式中时,可以通过下面一些参数,来与 top 命令进行交互:

P            以CPU 使用率排序,默认是此项

M            以内存使用率排序

N             以 PID 排序

q              退出 top 命令

输入 top 命令可以显示上图中的信息,默认每 3 秒刷新一次,如果按下交互键,在排序的同时可以立即刷新列表。输入q 可以退出 top 。

上图中,up 代表系统启动了多久,2 users 表示当前用户数,load average 应该是平均负载的意思。其余的选项可以网上搜索或见名猜意 (* ̄︶ ̄)。

六、网络监控

6.1 netstat 

网络监控采用 netstat 命令。

基本语法:

netstat [选项] 

常用参数:

-an   按一定排序输出

-p     显示哪个进程在调用

案例:查看sshd 的服务信息:

可以看到,如果sshd 服务是关闭的状态的话,那么 netstat 也查询不到 sshd 的网络监听状态。

6.2 ping

不论是Windows 还是 Linux ,这个命令都是通用的。它是一种检测网络的工具,可以快速查看远程主机是否可以连通,主机间的介质是否为断,网线是否脱落或网卡故障等。

如果两台主机之间可以正常通信,那么就会显示上图所示,如果通信异常,那么就不会显示时间等信息。

综上,就是关于系统服务相关的知识总结,欢迎文末留言。

发布了191 篇原创文章 · 获赞 280 · 访问量 52万+

猜你喜欢

转载自blog.csdn.net/u014745069/article/details/101643089