《Linux基础》06. 进程管理 · 服务管理
阅读原文时间:2023年08月29日阅读:1

@

目录


本文以 CentOS7.6 为例

1:进程管理

在 Linux 中,每个执行的程序都称为一个进程。每一个进程都分配一个 ID(pid,进程号)。

每个进程都可能以两种方式存在:前台后台

前台进程就是用户目前的屏幕上可以进行操作的程序。后台进程则是实际在运行,但在屏幕上看不到的程序。

一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。

1.1.1:ps

功能描述:显示当前进程的状态。(process status)

由于查询到的信息很多,常搭配 grep 使用。

基本语法

ps [选项]

常用选项

参数

说明

-a

显示当前终端下的所有进程信息。

-u

以用户的格式显示进程信息。

-x

显示后台进程运行的参数。

-e

显示系统内的所有进程信息。

-f

以全格式显示,且显示父进程 pid。

查询结果说明:

字段

说明

USER

用户名称

PID

进程号

%CPU

进程占用 CPU 的百分比

%MEM

进程占用物理内存的百分比

VSZ

进程占用的虚拟内存大小(单位:KB)

RSS

进程占用的物理内存大小(单位:KB)

TTY

终端名称

STAT

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

STARTED

进程的启动时间

TIME

进程占用 CPU 的总时间

COMMAND

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

PPID

父进程 pid

UID

用户 ID

C

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

STIME

进程启动的时间

示例:

# 仅查看和 sshd 有关的进程信息
ps -aux | grep sshd

# 查看 sshd 的父进程信息
ps -ef | grep sshd

1.1.2:pstree

功能描述:将所有进程以树状图显示。(display a tree of processes)

基本语法

pstree [选项]

常用选项

参数

说明

-p

显示进程的 PID

-u

显示进程的所属用户

1.1.3:top

功能描述:用于实时监控进程状态。在监控时也可以进行交互操作。

基本语法

top [选项]

常用选项

参数

说明

-d 数字

指定每隔几秒更新。(默认3秒)

-i

不显示闲置或僵死进程。

-p 数字

显示指定进程号的进程信息。

-n 数字

指定更新次数,完成后将会退出 top。

-s

安全模式,取消交互,避免潜在危机。

交互操作

操作

说明

【shift】+【P】

以 CPU 使用率排序。

【shift】+【M】

以内存使用率排序。

【shift】+【N】

以 pid 排序。

按【u】,输入用户名后按【enter】

监视特定用户。

按【k】,输入 pid 后按【enter】,再输入相应数字后按【enter】

终止指定的进程。

【q】

退出 top。

如果某个进程执行中需要停止,或是已消了很大的系统资源,此时可以考虑停止该进程。

1.2.1:kill

功能描述:用于终止执行中的程序或工作。

kill 命令其实是向进程发送信号,可将指定的信息送至程序。预设的信息为 SIGTERM(15),可将指定程序终止。可使用 SIGKILL(9)信息尝试强制删除程序。

基本语法

kill [选项] 进程

进程可用进程号(pid)或进程名称表示。

常用选项

参数

说明

-9 或 -KILL

强制终止进程。

1.2.2:killall

功能描述:终止指定名字的所有进程。

kill 命令通过 pid 终止指定进程需要配合 ps 使用,而 killall 直接通过进程名操作,更加方便。

基本语法

killall 进程名

常用选项

参数

说明

-9

强制终止进程。

-e

进程需要和名字完全相符。

-I(大写i)

忽略大小写。

2:服务管理

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

运行级别(Running Level),也可以称之为运行模式。

Linux系统有7个运行级别,用数字0~6表示:

运行级别

说明

0

系统停机状态。其实就是关机

1

单用户工作状态。为 root 权限,用于系统维护

2

多用户状态,没有 NFS(Network File Syetem)。即没有网络服务的多用户状态

3

完全的多用户状态,有 NFS。即有网络服务的多用户状态

4

被保留的模式。没有被使用的模式

5

X11控制台,完整的图形化界面模式。就是图形界面模式

6

系统正常关闭并重启状态。其实就是重启

切换运行级别

init 运行级别

init 指令需要超级管理员的权限,普通用户无法执行。

系统运行级别配置文件,存放在 /etc/inittab。

  • 方式一

在 /etc/init.d/ 下查看部分服务。(这部分服务可由 service、chkconfig 与 systemctl 指令管理)

指令:ls -l /etc/init.d

在 /usr/lib/systemd/system/ 下查看部分服务。(可由 systemctl 指令管理)

指令:ls -l /usr/lib/systemd/system

  • 方式二

查看全部系统服务:

setup

2.3.1:service

功能描述:可用于部分系统服务管理。

在 Linux 新版本后,很多服务不再使用 service,而是 systemctl。

基本语法

service 服务名 [选项]

常用选项

参数

说明

start

开启服务。

stop

关闭服务。

restart

重启服务。

reload

重载服务。

status

查看服务状态。

2.3.2:chkconfig

功能描述:可以设置部分服务在不同运行级别下是否自启动。

也可用 systemctl 进行平替。

基本语法

chkconfig [选项]

常用选项

参数

说明

--list

查看由 chkconfig 管理的指令。

服务名 状态

管理某一服务。“ on ” 为开启,“ off ” 为关闭。

--level 运行级别 服务名 状态

设置服务在某一运行级别下是否自启动。“ on ” 为自启动,“ off ” 为关闭自启动。

2.3.3:systemctl

功能描述:用于服务管理。

systemctl 命令兼容了 service 与 chkconfig。

基本语法

systemctl [选项]

常用选项

参数

说明

start 服务名

开启服务。

stop 服务名

关闭服务。

restart 服务名

重启服务。

status 服务名

查看服务状态。

list-unit-files

查看所有服务开机自启动状态

is-enabled 服务名

查询某个服务是否开机自启动。

enable 服务名

打开服务开机启动。

disable 服务名

关闭服务开机启动。


谦,美德也,过谦者怀诈。默,懿行也,过默者藏奸。

——《格言联璧》(清)金缨