「RHCSA 红帽系统管理」5、管理进程和系统服务

获取进程信息

使用 top 命令可以显示每个进程的状态(持续的监视进程)。

[root@redhat ~]# top

使用 ps 命令可以列出当前的进程,查看详细的进程信息(静态的进程快照)。

[root@redhat ~]# ps aux
[root@redhat ~]# ps lax
[root@redhat ~]# ps -ef

控制作业

在命令行的结尾处加上符号「&」可以在后台运行作业,任何命令或管道都可以在后台活动。

# Shell 会显示特定于会话的唯一作业编号
[root@redhat ~]# sleep 10000 &
[1] 5754

使用 jobs 命令可以显示特定会话跟踪的作业列表。

[root@redhat ~]# jobs
[1]+  运行中               sleep 10000 &

使用 fg 命令,加上后台作业的 ID 编号,可以将后台作业转到前台。

[root@redhat ~]# fg %1
sleep 10000

使用快捷键 Ctrl + Z 可以将作业置于后台并暂停。如果要启动后台运行的已暂停进程,可以使用 bg 命令,加上后台作业的 ID 编号进行操作。

[root@redhat ~]# bg %1
[1]+ sleep 10000 &

中断进程

使用 kill 命令可以根据 PID 编号,向进程发送终止程序的信号。

# 使用 ps 命令查看目标进程的 PID 编号
[root@redhat ~]# ps aux | grep sleep
root        5806  0.0  0.0 217072   868 pts/0    S    22:01   0:00 sleep 10000
root        5808  0.0  0.0 221928  1168 pts/0    S+   22:01   0:00 grep --color=auto sleep

# 向进程发送终止程序的信号
[root@redhat ~]# kill 5819
[1]+  Terminated              sleep 10000

使用 pkill 命令可以根据命令名称、特定用户拥有的进程,或者所有系统范围的进程发送信号。

[root@redhat ~]# pkill sleep
[1]+  Terminated              sleep 10000

[root@redhat ~]# ps aux | grep sleep
user01      5932  0.0  0.0 217072   884 pts/1    S    22:16   0:00 sleep 10000
user01      5936  0.0  0.0 217072   840 pts/1    S+   22:16   0:00 sleep 20000
root        5938  0.0  0.0 221928  1132 pts/0    S+   22:16   0:00 grep --color=auto sleep

[root@redhat ~]# pkill -U user01

使用 w 命令可以查看所有用户的登录会话。了解用户已登录系统的时长,当前作业耗用的 CPU 资源信息。

[root@redhat ~]# w
 22:20:19 up 2 days, 54 min,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.101.100     21:27    3.00s  0.17s  0.00s w
user01   pts/1    10.0.101.99      22:20    7.00s  0.01s  0.01s -bash

使用 pgrep 命令可以列出进程信息,确定要中断进程的 PID 编号。

[root@redhat ~]# pgrep sleep
5993

# 列出特定用户的进程
[root@redhat ~]# pgrep -l -u user01
5955 systemd
5959 (sd-pam)
5965 sshd
5966 bash
5993 sleep

使用 pstree 命令可以查看系统或单个用户的进程树。

[root@redhat ~]# pstree 1

# 查看用户的进程树
[root@redhat ~]# pstree -p user01
sshd(5965)───bash(5966)───sleep(5993)
systemd(5955)───(sd-pam)(5959)

# 执行 pstree 命令需要安装 psmisc 程序包
[root@redhat ~]# yum -y install psmisc

监控进程活动

使用 uptime 命令可以显示当前时间、计算机启动时长、运行的用户会话数以及当前的负载平均值。

[root@redhat ~]# uptime
 22:31:39 up 2 days,  1:05,  2 users,  load average: 0.00, 0.00, 0.00

使用 lscpu 命令可以查看处理器信息。

[root@redhat ~]# lscpu

识别自动启动的系统进程

systemd 守护进程用于管理 Linux 的启动,一般包括服务启动和服务管理。它可以在系统引导时,以及在运行中的系统上激活系统资源、服务器守护进程。systemctl 命令可用于管理单元。

使用 systemctl 命令可以列出所有当前加载的服务单元。

[root@redhat ~]# systemctl list-units --type=service

# 使用 --all 选项可以列出所有服务单元
[root@redhat ~]# systemctl list-units --type=service --all

systemctl list-units 命令显示 systemd 服务尝试解析并加载到内存中的单元,它不显示已安装但未启用的服务。如果需要查看所有已安装的单元文件状态,可以使用 systemctl list-unit-files 命令。

[root@redhat ~]# systemctl list-unit-files --type=service

systemctl status 命令可以查看特定单元的状态。

[root@redhat ~]# systemctl status sshd.service

systemctl 输出的服务状态如下:

关键字描述
loaded单元配置文件已处理。
active(running)正在通过一个或多个持续进程运行。
active(exited)已成功完成一次性配置。
active(waiting)运行中,但正在等待事件。
inactive不在运行。
enabled在系统引导时启动。
disabled未设为在系统引导时启动。
static无法启用,但可以由某一启用的单元自动启动。

systemctl 命令还提供了一些方法来验证服务的具体状态。

# 验证服务单元是否正在运行
[root@redhat ~]# systemctl is-active sshd.service
active

# 验证服务单元是否启用系统引导期间自动启动
[root@redhat ~]# systemctl is-enable sshd.service
Unknown operation is-enable.

# 验证服务单元在启动过程中是否失败
[root@redhat ~]# systemctl is-failed sshd.service active
active
inactive

控制系统服务

通过 systemctl 命令可以控制系统守护进程和网络服务。

# 启动服务
[root@redhat ~]# systemctl start sshd.service

# 停止当前正在运行的服务
[root@redhat ~]# systemctl stop sshd.service

# 重新启动服务
[root@redhat ~]# systemctl restart sshd.service

# 某些服务可以重新加载其配置文件
[root@redhat ~]# systemctl reload sshd.service

某些服务要求首先运行其他服务,从而创建对其他服务的依赖项。通过 systemctl list-dependencies 命令可以显示启动服务单元所需的依赖项的层次结构映射。

[root@redhat ~]# systemctl list-dependencies sshd.service

有时系统安装的不同服务之间可能会彼此冲突,通过屏蔽服务可以防止管理员意外启动与其他服务冲突的服务。屏蔽操作会在配置目录中创建指向 /dev/null 文件的链接,该文件可阻止服务启动。

[root@redhat ~]# systemctl mask sendmail.service

# 取消屏蔽服务单元
[root@redhat ~]# systemctl unmask sendmail

需要在系统引导时自动启动服务,可以使用 systemctl enable 命令。

[root@redhat ~]# systemctl enable sshd.service

# 禁用服务自动启动
[root@redhat ~]# systemctl disable sshd.service

总结

  • 进程是可执行程序的运行中实例,ps 命令用于列出进程。
  • 每个终端可以具有一个前台进程和多个独立的后台进程,jobs 命令显示终端会话中的进程。
  • 信号是向执行中的程序报告事件的软件中断,kill 命令使用信号来控制进程。
  • 使用 systemctl 命令可以启动、停止、重新加载、启用和禁用服务。
  • 使用 systemctl status 命令可以确定 systemd 启动的系统守护进程和网络服务的状态。
  • 使用 systemctl list-dependencies 命令可列出特定服务单元依赖的所有服务单元。
本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。
「RHCSA 红帽系统管理」5、管理进程和系统服务
https://blog.kobin.cn/notes/2891.html
(0)

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

CAPTCHAis initialing...