「RHCSA 红帽系统管理」5、管理进程和系统服务 2023/09/03 21:31 • 学习笔记 • 阅读 1737 目录 获取进程信息控制作业中断进程监控进程活动识别自动启动的系统进程控制系统服务总结 获取进程信息 使用 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) 0 0 生成海报 发表回复 您的邮箱地址不会被公开。 必填项已用 * 标注*昵称: *邮箱: 网址: 记住昵称、邮箱和网址,下次评论免输入 提交 CAPTCHAis initialing...