14、Linux系统状态管理

系统信息查看

1. 查看日期和时间

  • 查看当前系统日期和时间:
    date

  • 查看当月日历:
    cal

  • 查看系统已经运行的时间及负载情况:
    uptime w cat /etc/redhat-release uname -a cat /proc/version

  • 查看当前登录用户及活动信息:
    uptime w cat /etc/redhat-release uname -a cat /proc/version

2. 查看系统版本

  • 查看系统的发行版本(适用于 RedHat 系列):
    uptime w cat /etc/redhat-release uname -a cat /proc/version

  • 查看内核版本及系统架构信息:
    uptime w cat /etc/redhat-release uname -a cat /proc/version

  • 查看内核版本的详细信息:
    uptime w cat /etc/redhat-release uname -a cat /proc/version

程序、进程、服务

1. 程序 (Program)

  • 程序是静态的文件,通常是存储在磁盘上的可执行文件(如 xxx)。
  • 程序在运行时会被加载到内存中,并作为进程执行。

2. 进程 (Process)

  • 进程是程序在操作系统中的一次运行实例。
  • 每个进程有唯一的进程标识符(PID)。
  • 可通过以下命令查看进程情况:
    ps -aux # 查看所有运行的进程
    top # 动态监控系统中运行的进程

3. 服务 (Service)

  • 服务是一种长期运行的后台进程,通常用来提供某种功能或等待请求。
  • 查看服务状态命令:
    systemctl list-unit-files | grep mysql # 查看与 MySQL 相关的服务
    cat /etc/services | grep mysql # 查看端口号与服务的映射关系(MySQL 示例)

运行程序的方式

1. 前台运行

  • 直接运行程序会占用当前终端,直到程序结束:
    ./xxx

2. 后台运行

  • 使用 nohup 将程序放到后台运行,即使终端关闭,程序仍继续运行:
    nohup ./xxx &
  • 可通过以下命令查看程序的后台运行状态:
    jobs # 查看当前终端启动的后台任务
    ps -aux | grep xxx # 查看指定程序是否在后台运行

使用 top 命令查看进程信息详解

image

1. 顶部系统信息(全局状态)

  • 当前时间:系统当前的时间(如 17:48)。
  • 运行时间(up):系统从启动到现在已运行的时间(如 47 min)。
  • 登录用户数:当前登录到系统的用户数量(如 2 users)。
  • 系统负载(load average):最近 1 分钟、5 分钟、15 分钟的平均负载值,表示运行队列的平均任务数(如 0.00, 0.05, 0.06)。

2. 任务队列信息

  • Tasks(任务总数):系统中所有的任务(进程)的统计:

  • total:总进程数(如 153 total)。

  • running:正在运行的进程数(如 2 running)。

  • sleeping:处于睡眠状态的进程(如 151 sleeping)。

  • stopped:被停止的进程(如 0 stopped)。

  • zombie:僵尸进程数量(如 0 zombie)。

3. CPU 使用信息

  • %Cpu(s):CPU 的使用情况按不同类型统计:

  • us(用户态):用户进程占用 CPU 的百分比(如 0.0 us)。

  • sy(内核态):系统内核进程占用 CPU 的百分比(如 0.3 sy)。

  • ni(nice 进程):调整优先级的用户进程占用 CPU 的百分比(如 0.0 ni)。

  • id(空闲):CPU 空闲百分比(如 99.7 id)。

  • wa(I/O 等待):等待 I/O 操作的时间百分比(如 0.0 wa)。

  • hi(硬件中断):硬件中断占用的百分比(如 0.0 hi)。

  • si(软件中断):软件中断占用的百分比(如 0.0 si)。

  • st(虚拟机被偷走):虚拟化环境中 CPU 被 Hypervisor 偷走的时间(如 0.0 st)。

4. 内存信息

  • KiB Mem(物理内存)
  • total:总物理内存大小(如 999936 KiB)。
  • free:空闲的物理内存(如 102476 KiB)。
  • used:已使用的物理内存(如 468188 KiB)。
  • buff/cache:用于缓存的物理内存(如 429272 KiB)。
  • KiB Swap(交换分区)
  • total:总交换分区大小(如 2097148 KiB)。
  • free:空闲的交换分区(如 2097148 KiB)。
  • used:已使用的交换分区(如 0 KiB)。
  • avail Mem:可用的内存总量(包括空闲内存和缓存)(如 322784 KiB)。

5. 进程详细信息

  • PID:进程 ID。

  • USER:进程所属用户。

  • PR:进程优先级。

  • NI:进程的 nice 值(优先级调整值)。

  • VIRT:进程占用的虚拟内存大小。

  • RES:进程占用的物理内存大小。

  • SHR:进程共享内存大小。

  • S(状态)

  • R:运行(running)。

  • S:睡眠(sleeping)。

  • D:不可中断的睡眠(waiting for I/O)。

  • Z:僵尸进程(zombie)。

  • T:停止(stopped)。

  • %CPU:进程占用的 CPU 百分比。

  • %MEM:进程占用的内存百分比。

  • TIME+:进程累计使用的 CPU 时间。

  • COMMAND:启动进程的命令。

使用技巧

  • 交互操作

  • 按 q 退出 top。

  • 按 k 输入 PID 可终止特定进程。

  • 按 P 按 CPU 使用率排序。

  • 按 M 按内存使用率排序。

  • 过滤特定进程
    top -p <PID>

  • 非动态方式显示
    top -b -n 1 > output.txt


ps 命令选项详解

全拼:process status
ps 命令用于显示进程的静态信息(与 top 的动态显示不同)。
常用选项
选项功能说明-a显示所有进程,包括其他用户的进程;-u按用户 ID 或用户名筛选进程,显示进程的详细信息;-x显示没有控制终端的进程,同时显示每个命令的具体路径;-e显示所有的进程,与 -A 效果相同;-f显示更完整的信息,通常与 -e 一起使用;

示例用法

1.查看所有进程
ps -e
2.查看指定用户的进程
ps -u 用户名
3.查看所有无终端控制的后台进程
ps -x
4.查看详细的所有进程信息
ps -ef
5.结合管道和过滤工具(如 grep)筛选进程

  • 查看与某个关键字相关的进程(比如 mysql):
    ps -ef | grep mysql

常用字段释义

字段名 含义
PID 进程 ID,唯一标识系统中的每个进程。
USER 启动进程的用户。
%CPU 占用的 CPU 百分比,表示进程对 CPU 使用的相对强度。
%MEM 占用的内存百分比,表示进程对物理内存的使用比例。
VSZ 虚拟内存大小(单位:KB),表示进程分配的虚拟内存总量。
RSS 驻留内存大小(单位:KB),表示进程实际占用的物理内存(驻留内存)。
TTY 终端名称,表示进程的控制终端;若为 ? 表示未关联到任何终端。
STAT 进程状态,可能的值包括:
- R:运行中(Running)
- S:休眠(Sleeping)
- D:不可中断的睡眠状态(Disk sleep)
- Z:僵尸进程(Zombie)
- T:停止状态(Stopped)
- 其他可能的标记,如 <(高优先级)、N(低优先级)等。
START 进程启动时间,可能以具体时间(如 12:00)或日期(如 Oct01)显示。
TIME 进程累计占用的 CPU 时间,表示进程运行总共使用 CPU 的时间。
COMMAND 启动进程的命令及其参数,显示完整的命令行调用。

ps -ef

image

以下是 ps -ef 命令输出的字段含义:

字段名 含义
UID 启动进程的用户。
- 如 root 表示超级用户。
PID 进程 ID,系统中每个进程的唯一标识。
PPID 父进程 ID,表示该进程是由哪个进程启动的。
C CPU 占用率的简化表示(百分比),通常为整数,反映进程的 CPU 使用情况。
STIME 进程的启动时间:
- 可能为日期(如 Jul27),表示较早启动的进程;
- 或具体时间(如 12:00),表示当天启动的进程。
TTY 终端名称: - 如 ? 表示该进程没有控制终端,通常是后台运行的守护进程。
TIME 进程累计占用的 CPU 时间,格式为 hh:mm:ss,表示运行期间使用CPU的总时间。
CMD 启动进程的命令,包括命令路径或参数,显示完整的命令行调用。

1.按关键字筛选进程
ps -ef | grep <关键词>
2.查看父子进程关系
ps -ef --forest
3.按内存或 CPU 使用排序(结合 sort 使用):
ps -e -o pid,ppid,cmd,%mem,%cpu --sort=-%cpu

  • 1.ps -aux
    显示系统中当前运行的所有进程,包括用户、CPU和内存使用情况等信息。

  • 2.pstree
    以树状图显示系统中运行的进程及其父子关系。

  • 3.常用选项:

    • pstree -p
    • pstree mysql显示与mysql相关的进程树。
    • pstree -p | grep ssh查询与ssh相关的进程

服务管理

systemctl命令

  • 用于管理系统服务,支持服务的启动、停止、重启及状态查询。
    常见操作
命令 功能说明
systemctl status *.service 查看所有服务的状态,包括是否正在运行、加载情况等。
systemctl start mysqld.service 启动指定的服务(以 mysqld 服务为例)。
systemctl restart mysqld.service 重启指定的服务。如果服务已在运行,将先停止再启动。
systemctl stop mysqld.service 停止指定的服务,这将使服务不再运行。
systemctl enable mysqld.service 设置指定服务为开机自启动,系统启动时服务将自动运行。
systemctl disable mysqld.service 停止指定服务的开机自启动,系统启动时服务将不会自动运行。

service命令

  • 早期服务管理工具,与systemctl功能相似,但较为简单。
    以下是 daemon 命令与 systemctl 命令的对应关系整理表:
Daemon 命令 对应的 systemctl 命令 功能说明
service [服务] start systemctl start [unit type] 启动指定的服务。
service [服务] stop systemctl stop [unit type] 停止指定的服务。
service [服务] restart systemctl restart [unit type] 重启指定的服务(先停止后启动)。

说明

  1. [服务]:表示服务名称,例如 mysqld
  2. [unit type]:表示服务单元的类型,例如 mysqld.service
    • systemctl 中,服务名称通常以 .service 结尾。
  3. 功能一致性servicesystemctl 的功能基本一致,但 systemctl 是现代 Linux 发行版(如 CentOS 7、RHEL 7 及以上)中推荐使用的服务管理工具。
  4. 优势
    • 相较于 servicesystemctl 提供更多控制选项和更灵活的服务管理能力。

停止程序

信号量和停止进程

使用kill命令可通过发送信号量终止进程:

以下是信号量含义的整理与解析表:

信号量 信号名称 含义说明
0 EXIT 程序退出信号。通常在程序正常结束时收到此信号。
1 HUP 挂起信号。常用于通知进程重新加载配置文件或重新初始化,而不需要终止进程。
2 INT 中断信号,通常由键盘输入 Ctrl+C 触发,用于终止前台运行的程序。
3 QUIT 退出信号。一般由用户通过 *Ctrl+* 触发,用于强制退出并生成内核转储。
9 KILL 强制终止进程信号。无法被捕获、阻塞或忽略,直接终止目标进程。
11 SEGV 段错误信号。通常由程序访问无效内存地址(如越界访问)时触发,导致程序崩溃。
15 TERM 软件终止信号(默认信号)。用于请求程序以正常方式终止,可被捕获和处理以执行清理操作。
  1. 信号作用
    • 信号是操作系统用于与进程通信的一种机制,可以通知进程执行特定的操作(如终止、暂停等)。
  2. 常见用例
    • HUP:常用于服务软件(如 nginx)重新加载配置文件,而无需停止服务。
    • KILL:用于强制终止无法正常停止的程序。
    • TERM:最常用的终止信号,适用于正常关闭程序。
  3. 特殊信号
    • KILL (9):不可被捕获或忽略,是终止进程的最后手段。
    • SEGV (11):通常用于调试程序,帮助定位段错误。

内存使用查看

free命令
用于查看内存和交换分区(Swap)的使用情况。
常用命令
以下是 free 命令及其常用参数功能的解析整理表:

命令 功能说明
free 显示系统内存的使用情况,包括总量、已用、空闲和缓存等。
free -h 人类可读 的格式显示内存信息(会自动转为 KB、MB、GB 单位)。
free -m MB(兆字节) 为单位显示内存的使用情况。

输出示例(free -h)解析

字段 含义
total 系统总内存量。
used 已使用的内存量(包括缓存和缓冲区)。
free 完全空闲的内存量。
shared 被共享内存段使用的内存量。
buff/cache 缓冲区和缓存占用的内存量。
available 应用程序实际可用的内存量(考虑了缓存可被释放的部分)。

示例结果解释

  • Mem:
    • 总内存 (total):系统总内存。
    • 已使用 (used):当前已使用的内存。
    • 未使用 (free):未分配的内存。
    • 缓冲/缓存 (buff/cache):用于缓冲的内存。
    • 可用 (available):启动新程序时可用的内存。
  • Swap:
    • 总量 (total):交换分区总大小。
    • 已使用 (used):已使用的交换分区。
    • 未使用 (free):未使用的交换分区。

磁盘管理

检查磁盘使用情况

使用du命令查看目录和文件的磁盘占用情况。

命令 功能说明
du /usr 显示 /usr 目录的磁盘使用情况,以默认的块大小单位 (如 KB) 显示各子目录及文件的空间占用情况。
du -h /usr du /usr 类似,但以人类可读形式(如 KB、MB、GB 等)显示 /usr 目录及其子目录的空间占用情况,便于快速理解数据大小。
du -h /root --max-depth=1 显示 /root 目录及其子目录的磁盘使用情况,以人类可读形式显示,但限制只显示1级目录的使用情况(不递归显示更深层次的目录)。
`` du -h --max-depth=1 sort -hr ``
`` du -ah /root sort -hr ``
du -ah --exclude="*/.*" 显示当前目录中所有文件及文件夹的磁盘使用情况,排除所有隐藏目录和隐藏文件(以 . 开头的文件或目录,如 .git.config),以便聚焦非隐藏内容的分析。
du -kt -10M ./* 列出当前目录中所有大于 10MB 的文件,其中:
-kKB 单位显示结果;
-t -10M 表示仅匹配大于 10MB 的文件(-10M 是大小过滤条件)。
  • 选项说明

    • -h:人类可读格式输出,单位为 KB、MB、GB。
    • --max-depth=N:限制目录深度为指定的级别 N
    • -a:同时显示文件和目录的磁盘使用情况。
    • --exclude="PATTERN":排除符合特定模式(如隐藏文件、目录等)的内容。
    • sort -hr:对输出结果按数字大小降序排序-h 支持带人类可读单位的数值排序。
    • -t:只显示满足条件的文件(如大于或小于指定大小的文件)。
  • 使用场景

    • 排查目录中占用空间过大的文件或子目录。
    • 快速了解某个目录的磁盘使用情况。
    • 排除隐藏文件/目录,专注于普通文件的分析。

定时任务管理

工具:crontab
crontab是Linux用于创建、删除、列出和编辑定时任务的工具。
crontab命令
以下是 crontab 命令的功能说明:

命令 功能说明
crontab -u root -r 删除指定用户(root 用户)的所有定时任务。
crontab -u root time.cron 将指定的任务文件(time.cron)加载并添加到指定用户(root 用户)的定时任务中。
crontab -u root -l 列出指定用户(root 用户)的定时任务清单,显示当前用户的所有定时任务。
crontab -u root -e 编辑指定用户(root 用户)的定时任务,通过文本编辑器修改任务配置。
  1. -u root 表示指定操作系统中的哪个用户的定时任务。
  2. 如果不指定 -u root,则默认操作当前用户的定时任务。
  3. crontab 是 Linux 系统中用于设置周期性任务的工具。
  4. crontab -e 编辑时,需要注意任务的时间格式为 分钟 小时 日期 月份 星期 命令

** 任务时间格式示例**

字段 含义 取值范围
分钟 任务执行的分钟 0-59
小时 任务执行的小时 0-23
日期 任务执行的日期 1-31
月份 任务执行的月份 1-12
星期 任务执行的星期几 0-7(0 和 7 都表示星期日)

以下是关于不同文件路径及其功能的说明表:

路径 功能说明
/etc/crontab 用于管理系统级别的全局定时任务文件。所有用户的任务都可以在此文件中设置,且需要指定运行任务的用户。
/var/spool/cron/ 存放每个用户(包括 root 用户)的个人 crontab 任务文件。只有对应用户可以编辑其任务。
/etc/cron.d/ 存放需要执行的 crontab 文件或脚本。适合存放一些独立于用户的定时任务配置文件。
  1. /etc/crontab

    • 用途:设置系统全局的定时任务。
    • 特点
      • 必须指定任务运行的用户。例如:
        分钟 小时 日期 月份 星期 用户名 命令
        
        示例:
        0 5 * * * root /path/to/script.sh
        
      • 通常用于系统管理员配置与维护。
  2. /var/spool/cron/

    • 用途:每个用户的个人定时任务文件。
    • 特点
      • 用户通过 crontab 命令创建或修改的任务会存放在这里。例如,crontab -e 修改的任务。
      • 每个用户都有独立的文件,任务执行无需指定用户名。例如:
        分钟 小时 日期 月份 星期 命令
        
        示例:
        0 6 * * * /path/to/user_script.sh
        
      • 该目录的权限受限,只有系统管理员或任务所属用户可以访问。
  3. /etc/cron.d/

    • 用途:存放单独的定时任务配置文件或脚本。
    • 特点
      • 任务文件格式类似于 /etc/crontab,需要指定运行任务的用户。例如:
        15 3 * * * root /path/to/script.sh
        
      • 可以用来组织复杂任务,或分隔系统服务相关的任务配置。
      • 系统自动扫描并加载该目录下符合规范的文件。
  • 对于系统级任务:优先考虑 /etc/crontab/etc/cron.d/
  • 对于用户任务:使用 /var/spool/cron/crontab -e 命令来操作用户的任务。

Cron表达式

Cron表达式用于定义任务运行时间,格式如下:
分 小时 日 月 星期 命令

  • 每个字段的取值范围:
  • :0-59
  • 小时:0-23
  • :1-31
  • :1-12
  • 星期:0-7(0和7均表示星期天)
  • 其他符号:
  • *:表示任意值。
  • ,:用于分隔多个值。
  • -:用于表示范围。
  • /:用于指定步长。

在线生成Cron表达式:Cron表达式工具

posted @   感觉小丑  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示