Skip to content

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进程基本知识

进程状态基础:
状态说明
Zzombie 僵尸进程(异常)
Rrunning 进程运行中,占用CPU.
SSleeping 休眠,没有运行.
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,不可中断

  • 排查流程:

    1. 使用top命令查看系统负载和各个进程的资源占用情况。
    2. 根据top命令的%CPU%MEM列找出资源占用高的进程。
    3. 使用ps auxps -ef命令查看这些进程的详细信息。
    4. 根据进程信息找出对应的服务,并查看服务的状态。
    5. 根据服务状态采取相应的措施,如停止不必要的服务、优化服务配置等。

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查看所有服务

感谢阅读,欢迎交流!