Appearance
1. 进程基本概念
- 进程:运行起来的命令或代码或程序,进程本质是运行在内存中的。
- 守护进程(服务):持续运行的进程。
2. 特殊进程
2.1 僵尸进程
概述:僵尸进程是异常进程,如果不及时排查与处理,会导致系统大量资源被占用,系统负载高。
处理:僵尸进程的上级进程是主进程时,需要重启Linux系统;
不是主进程pid1,可以通过`kill`命令结束其上级进程。
查看:
- 使用
top
命令,查看第2行的最后是否有zombie
字样。 - 使用
ps aux | grep Z
命令,可以过滤出系统中的僵尸进程。状态为Z
的进程即为僵尸进程。
- 使用
shell
#1.检查是否有僵尸进程
top
#2.查看哪个进程是僵尸进程
ps aux |grep Z #记录下pid
#3.查看僵尸进程上级进程
pstree -p 直接看即可 或ps -ef看第3列
#4.如果上级进程不是主进程
则通过kill + pid结束进程
#5.检查僵尸进程数量
2.2 孤儿进程
- 概述:孤儿进程是指其父进程已经退出,而该进程还在运行的进程。在Linux中,孤儿进程会被init进程(PID为1的进程)收养。
- 处理:对系统问题不大,重启服务
2.3进程基本知识
进程状态基础:
状态 | 说明 |
---|---|
Z | zombie 僵尸进程(异常) |
R | running 进程运行中,占用CPU. |
S | Sleeping 休眠,没有运行. |
D | 不可中断进程,一般进行IO(读写磁盘). Input Output |
T | 挂起的进程,后台运行并且暂停状态. |
- 给基础状态加上buff
组合的状态
状态 | 说明 |
---|---|
R+ 或 S+ 或 D+ 加号 | 进程前台运行. |
Ss xxxxxs 小s | 进程是管理进程(父进程) |
R< 或 S< 小于号 | 高优先级进程 |
RN 或 SN 带N | 低优先级进程 |
SI 带I | 进程是多线程(进程,线程) |
3. 进程监控指令
3.1 ps命令
- 功能:用于查看系统中的进程信息。
- 常用选项:
ps -ef
:显示所有进程。ps aux
:显示更详细的进程信息。
- 输出内容:
- UID:进程属于的用户。
- PID:进程ID。
- PPID:父进程ID。
- %CPU:进程的CPU使用率。
- %MEM:进程的内存使用率。
- STAT:进程的状态。
- COMMAND:进程的名字。
例子: 对进程占用cpu或内存使用率进行排序
plain
#CPU
ps aux |sort -rnk3
#MEM
ps aux |sort -rnk4
#ps内置排序指令
ps aux --sort=-%mem|head
-降序
+升序
ps aux --sort=-%mem --no-heading |head
#--no-heading:不显示输出的标题行
3.2 top命令
- 功能:实时显示系统中各个进程的资源占用情况。
- 常用快捷键:
M
:按内存使用率排序。P
:按CPU使用率排序。k
:终止一个进程。q
:退出top命令。
3.3 后台运行
- &符号:将命令放入后台运行。
- nohup命令:使命令在用户退出后仍然继续运行,输出默认重定向到
nohup.out
文件。 - 案例:命令后台运行并把输出写入到文件
nohup ping baidu.com &
ping baidu.com >/tmp/ping.log 2>&1 &
ping baidu.com &> /tmp/ping.log &
4. 系统负载故障排查
常见原因:CPU,可运行
磁盘IO,不可中断
排查流程:
- 使用
top
命令查看系统负载和各个进程的资源占用情况。 - 根据
top
命令的%CPU
和%MEM
列找出资源占用高的进程。 - 使用
ps aux
或ps -ef
命令查看这些进程的详细信息。 - 根据进程信息找出对应的服务,并查看服务的状态。
- 根据服务状态采取相应的措施,如停止不必要的服务、优化服务配置等。
- 使用
5.系统管理命令
hostnamectl 查看修改主机名
systemctl 服务管理
timedatectl 查看和修改时间(时区)
localectl 查看和修改语言,字符集
常用基础服务: Crond sshd rsyslog
功能 | 命令 | 描述 |
---|---|---|
检查服务状态 | systemctl status 服务名 | 显示指定服务的当前状态,包括是否正在运行、进程ID等 |
启动服务 | systemctl start 服务名 | 立即启动指定的服务 |
停止服务 | systemctl stop 服务名 | 立即停止指定的服务 |
重启服务 | systemctl restart 服务名 | 停止并重新启动指定的服务 |
停止并禁用服务 | systemctl disable --now 服务名 | 立即停止指定的服务,并设置其不在系统启动时自动启动 |
启用并启动服务 | systemctl enable --now 服务名 | 设置指定的服务在系统启动时自动启动,并立即启动该服务 |
查看所有 | systemctl list-units | 查看所有服务 |