# Linux系统状态管理 # Linux系统状态管理 ## 查看系统信息 ### 日期时间 - `date`:这个命令用于**显示当前日期和时间**。在大多数操作系统中,执行date命令会输出当前系统时间,包括年份、月份、日期、小时、分钟和秒数。您可以使用这个命令来确定当前的日期和时间设置。 - `cal`:这个命令用于**显示一个月的日历**。通过执行cal命令,您可以在终端或命令提示符中查看当前月份的日历。它会以表格的形式显示该月的日期,并标记出今天的日期。在某些操作系统中,您还可以使用特定的参数来查看其他月份或年份的日历。 - `uptime`:这个命令用于**显示系统的运行时间和负载平均值**。执行uptime命令会显示系统启动后经过的时间以及系统的负载情况。负载平均值表示系统在最近的1分钟、5分钟和15分钟内的平均负载程度。这些值可以帮助您了解系统的运行状况和资源利用情况。 - `w`:这个命令用于**显示当前登录用户和他们的活动**。执行w命令会列出当前登录到系统上的用户,包括他们的用户名、登录时间、登录终端和当前所执行的命令或活动。这个命令还会显示系统的负载平均值和其他相关信息,如运行时间和登录用户数等。 ### 系统版本 - `cat /etc/redhat-release`:这个命令用于显示Red Hat(红帽)操作系统的版本信息。通过执行这个命令,您可以查看当前系统所使用的Red Hat发行版的版本号。该命令会将文件`/etc/redhat-release`的内容打印到终端上,其中包含了操作系统的版本信息和发行版本的名称。 - `uname -a`:这个命令用于显示操作系统的详细信息。通过执行`uname -a`命令,您可以获取关于系统内核的信息,包括操作系统的名称、版本号、处理器架构等。该命令输出的结果包括内核名称、主机名、内核版本、处理器类型和操作系统类型等。 - `cat /proc/version`:这个命令用于显示当前运行的内核版本信息。执行这个命令会将`/proc/version`文件的内容输出到终端上。该文件包含了有关操作系统内核版本的详细信息,如内核的版本号、编译日期和内核的编译者等。 ## 进程管理 ### 程序 & 进程 & 服务 - 程序 program - 进程 process - 服务 service ``` systemctl list-unit-files |grep mysql ``` > `systemctl list-unit-files`命令用于列出所有可用的系统单元文件 > > `grep mysql`则用于在输出中过滤包含 "mysql" 关键词的行 ``` cat /etc/services |grep mysql ``` > `/etc/services` 文件是一个用于存储常见网络服务和它们对应端口号的系统配置文件 > > `cat /etc/services`: 查看`/etc/services` 文件里的内容 > > `| grep mysql`: 过滤出包含 "mysql" 关键词的行,从而查找与 MySQL 服务相关的条目 ### 运行程序 - 前台运行 ``` ./xxx ``` - 后台运行 ``` nohup ./xxx & ``` ### 查看进程 - `top` 命令用于动态地监视进程活动。它会实时显示系统的资源使用情况和进程的活动情况,按CPU使用率或内存使用率进行排序。按下 `q` 键可退出 `top` 命令。 ![](https://pic.imgdb.cn/item/64aa80c81ddac507cc573de9.jpg) - `ps` 命令用于列出当前活动进程的快照。(常用) - 全拼:process status (进程状态) - `ps aux`:显示所有进程的详细信息,包括用户、进程ID(PID)、CPU利用率、内存占用等。 ![](https://pic.imgdb.cn/item/64aa81a61ddac507cc58c813.jpg) - `ps -ef`:显示所有进程的全格式列表。 ![](https://pic.imgdb.cn/item/64aa81961ddac507cc58ab47.jpg) - `ps -eLf`:显示每个线程的详细信息。 - `pstree` 命令以树形图的形式显示进程的层次结构关系。它将当前进程及其子进程以及它们之间的关系以树状结构展示出来。 - `pstree [选项] [进程ID]` - `-p`:显示进程ID(PID)。 - `-h`:高亮显示当前进程。 - `-a`:显示命令行参数。 - `-u`:显示进程的所有者。 - 如果不指定进程ID,则 `pstree` 默认会显示当前进程及其子进程的树形结构。 - `pstree [用户名] `--- 查看用户的进程树 ### 服务管理 - `systemctl ` - 查看所有服务状态 ``` systemctl status *.service ``` - 启动服务(以MySQL为例) ``` systemctl start mysqld.service ``` - 重启服务 ``` systemctl restart mysqld.service ``` - 停止服务 ``` systemctl stop mysqld.service ``` - 开机启动服务 ``` systemctl enable mysqld.service ``` - 停止开机启动 ``` systemctl disable mysqld.service ``` ### 终止程序 信号量 - 0 (EXIT):在程序退出时,会收到该信号量。例如,当您在终端中运行一个命令或程序,并成功执行完毕后,该程序会发送 0 信号量作为退出状态的一部分。 - 1 (HUP):挂断信号。例如,当您远程登录到一个服务器上运行的程序,并且由于网络连接问题或终端会话断开而中断连接时,该程序可能会收到 1 信号量作为挂断信号,以便程序可以进行适当的清理和重新初始化。 - 2 (INT):中断信号。例如,当您在终端中按下 "Ctrl+C" 组合键来中断正在运行的程序时,该程序会收到 2 信号量。程序可以选择捕获该信号量并执行一些特定的操作,或者默认情况下,进程将被终止。 - 9 (KILL):强制终止信号。例如,当您使用 `kill -9 PID` 命令终止一个进程时,会发送 9 信号量给该进程,强制结束其执行。这个信号量无法被忽略或捕获,进程将立即被终止。 - 11 (SEGV):段错误信号。例如,当一个程序尝试访问无效的内存地址或发生内存访问异常时,会收到 11 信号量。这通常是由于程序的错误或内存问题导致的。 - 15 (TERM):终止信号。例如,当您使用 `kill PID` 命令终止一个进程时,如果未指定信号量,默认会发送 15 信号量给该进程。进程可以捕获并对其进行处理,执行必要的清理操作后正常终止。 ## 内存使用情况 - `free` 命令是用于显示系统内存使用情况的工具。它可以提供关于系统中物理内存(RAM)和交换空间(Swap)的详细信息。 - 命令格式`free [选项]` - `-h`:以人类可读的格式显示输出 - `-m`:以兆字节为单位显示内存使用情况 - ![](https://pic.imgdb.cn/item/64aa86631ddac507cc633e9c.jpg) ## 磁盘使用情况 - `du` 命令是用于估算文件或目录的磁盘使用情况的命令。 - 全拼:disk usage (磁盘使用情况) - 命令格式`du [选项] [文件或目录]` - `-h`:以人类可读的格式显示磁盘空间占用情况,以便更易读。 - `-s`:仅显示总计磁盘空间占用情况,而不显示详细信息。 - `-c`:显示文件或目录的总计磁盘空间占用情况,并附加在最后一行。 - `sar` 是一个综合性能监控命令,它用于收集和报告系统的各种性能指标。`sar` 可以提供有关CPU使用率、内存使用、磁盘I/O、网络活动等方面的信息。 - 全拼:system activity reporter (系统活动报告程序) - 命令格式`sar [选项] [时间间隔] [采样次数]` - `-u`:报告CPU使用率的信息。 - `-r`:报告内存和交换空间的使用情况。 - `-b`:报告磁盘I/O活动。 - `-n`:报告网络接口的活动。 - `-q`:报告系统负载情况。 - `-P`:指定一个或多个CPU核心来报告其使用率。 - `时间间隔` 参数指定了采样数据的时间间隔,单位可以是秒、分钟或小时。 - `采样次数` 参数指定了采样的次数。 - 运行示例 ![](https://pic.imgdb.cn/item/64aa8ba11ddac507cc6f7ed6.jpg) - %user:用于表示用户模式下消耗的 CPU 时间的比例; - %nice:通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的CPU 时间的比例; - %system:系统模式下消耗的 CPU 时间的比例; - %iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例; - %steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例; - %idle:CPU 空闲时间比例。 ## 定时任务 - crontab 是一个用于管理 cron 定时任务的工具,它允许用户创建、编辑和删除定时任务。 cron 是一个在预定时间执行命令或脚本的守护进程,而 crontab 是用于管理 cron 任务的配置文件。 - `crontab -e`:编辑当前用户的 crontab 文件。如果没有设置过定时任务,则会打开一个空的文件或新建一个。 - `crontab -l`:列出当前用户的 crontab 文件中的定时任务。 - `crontab -r`:删除当前用户的 crontab 文件,即删除所有的定时任务。 - 示例: ![](https://pic.imgdb.cn/item/64aa8c201ddac507cc7050c7.jpg) - 分:表示每小时中的分钟数,取值范围为 0-59。 - 时:表示每天中的小时数,取值范围为 0-23。 - 日:表示每月中的日期,取值范围为 1-31。 - 月:表示每年中的月份,取值范围为 1-12。 - 周:表示每周中的星期几,取值范围为 0-7(其中 0 和 7 都表示星期日)。