1. 基本命令
top
du
查看/proc目录下的系统各种信息
/proc 是一个虚拟文件系统,它提供了一种机制,通过读取和写入特定的文件或目录,可以访问内核和系统信息。
# 命令行数太多可以使用more命令或者grep命令进行筛选
# 查看CPU信息
cat /proc/cpuinfo
# 会输出包含 "model name" 字符串的行,即 CPU 型号的信息
cat /proc/cpuinfo | grep "model name"
# 只查看 CPU 核心数,可以使用以下命令:
cat /proc/cpuinfo | grep "cpu cores"
# 查看内存参数
cat /proc/meminfo
# 查看总内存
cat /proc/meminfo | grep "MemTotal"
# 查看系统空闲内存大小
cat /proc/meminfo | grep "MemFree"
# 系统的各种参数和设置,如内核参数、网络设置、文件系统设置等
# abi debug dev fs kernel net user vm
cat /proc/sys/*
# 网络信息,如 TCP/IP 连接、网络接口、路由表等
# 包括tcp、tcp6、udp、udp6等
cat /proc/net/*
# 查看tcp连接的各种信息
cat /proc/net/tcp
# 指定进程的信息,如进程状态、内存占用、打开的文件等(进程资源使用情况)
cd /proc/pidnumber
top:查看系统的进程信息,包括 CPU 占用率、内存占用率等。
重要参数:
-d: seconds:指定 top 命令的刷新时间间隔,单位为秒;如,”top -d 5” 表示每 5 秒刷新一次 top 命令的输出;
-b:以批处理模式运行 top 命令,将结果输出到文件中,而不是交互式界面;
-p pid1,pid2,…:只显示指定进程 ID 的进程信息,多个进程 ID 之间用逗号分隔。
-n iterations:指定 top 命令的迭代次数,即 top 命令将输出多少次后自动退出。例如,”top -n 10” 表示 top 命令将输出 10 次后自动退出;
htop命令
显示系统中运行进程的状态和资源使用情况,界面更加美观。
atop:都是用于查看系统进程信息的命令,可以按照不同的方式显示进程信息。
vmstat:可以监控操作系统的进程状态、内存、虚拟内存、磁盘IO、CPU的信息。
-a:显示活动和非活动的内存使用情况;
-d:显示磁盘 I/O 统计信息
- iostat:查看系统的磁盘 I/O 使用情况。
- netstat:查看系统的网络连接情况。
输出接果:
Proto:显示网络连接的协议类型,如 TCP、UDP 等。
Local Address 显示本地IP地址和端口号
Recv-Q:显示接收队列的大小
nmon:可以监测 CPU 使用率、内存使用情况、磁盘 I/O、网络流量、进程和线程等多个系统资源,还可以监测系统温度和风扇转速等硬件指标。
dmesg:来显示内核环缓冲区(kernel-ring buffer)内容。
-
free:查看系统的内存使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存。
输出:
buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。
df disk free
显示磁盘分区上可以使用的磁盘空间;(通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件, df记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了。当文件系统也确定删除了该文件后,这时候du与df就一致了。) -a #查看全部文件系统,单位默认KB -h #使用-h选项以KB、MB、GB的单位来显示,可读性高
du disk usage
显示每个文件和目录的磁盘使用空间,也就是文件的大小。(通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。)
-h : 以K M G为单位显示,提高可读性
–max-depth=1 : 显示层级
uptime:查看系统的运行时间和平均负载。
load average: 3.17, 3.45, 3.65,分别描述了1分钟5分钟15分钟内系统平均负载.
ps:查看系统的进程信息,包括进程 ID、CPU 占用率等。
-aux :显示所有进程,包括其他用户的进程。
aux格式:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者 PID: pid %CPU: 占用的 CPU 使用率 %MEM: 占用的记忆体使用率 VSZ: 占用的虚拟记忆体大小 RSS: 占用的记忆体大小 TTY: 终端的次要装置号码 (minor device number of tty) STAT: 行程状态
查找指定进程(如Java)的进程号: ps -ef | grep java
lsof:查看系统打开的文件和网络连接情况;lscpu:查看CPU信息.
tcpdump:抓取和分析网络数据包。
ping、traceroute、mtr:用于测试网络连接和延迟。
ping -c 5 www.baidu.com # -c 5表示发送5个数据包
traceroute命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径. traceroute www.baidu.com
rsync:用于远程备份和同步文件和目录。
同步同一台机上的两个目录:
$ rsync -zvr /var/opt/installation/inventory/ /root/temp
building file list ... done
sva.xml
svB.xml
.
sent 26385 bytes received 1098 bytes 54966.00 bytes/sec
total size is 44867 speedup is 1.63
-z –compress:压缩数据 -v –verbose:显示详细信息 -r –recursive:递归处理,将指定目录下的所有文件和子目录一并处理
还可以拷贝单个文件:
$ rsync -v /var/lib/rpm/Pubkeys /root/temp/
Pubkeys
sent 42 bytes received 12380 bytes 3549.14 bytes/sec
total size is 12288 speedup is 0.99
从本地拷贝多个文件到远端:
$ rsync -avz /root/temp/ thegeekstuff@192.168.200.10:/home/thegeekstuff/temp/
Password:
building file list ... done
./
rpm/
rpm/Basenames
rpm/Conflictname
sent 15810261 bytes received 412 bytes 2432411.23 bytes/sec
total size is 45305958 speedup is 2.87
从本地拷贝多个文件到远端: 使用rsync, 也可以从本地拷贝多个文件或目录到远端.
$ rsync -avz /root/temp/ thegeekstuff@192.168.200.10:/home/thegeekstuff/temp/
Password:
building file list ... done
./
rpm/
rpm/Basenames
rpm/Conflictname
sent 15810261 bytes received 412 bytes 2432411.23 bytes/sec
total size is 45305958 speedup is 2.87
从远程服务器拷贝文件到本地:
$ rsync -avz thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames
.
sent 406 bytes received 15810230 bytes 2432405.54 bytes/sec
total size is 45305958 speedup is 2.87
scp、sftp:用于远程复制和传输文件。
scp是一种基于SSH的协议,可在网络上的主机之间提供文件传输。
ssh、telnet:用于远程登录和管理系统。
telnet是明文传送, ssh是加密的且支持压缩。
crontab:用于定时执行任务。
systemctl、service:用于管理系统服务和启动、停止、重启服务。
firewall-cmd、iptables:用于管理系统防火墙和配置网络规则。
systemctl start firewalld # 启动防火墙 systemctl stop firewalld # 关闭防火墙 systemctl restart firewalld # 重启防火墙 systemctl status firewalld # 查看防火墙状态 systemctl enable firewalld # 设置开机启动
selinux:用于管理系统安全策略和访问控制。
sysctl:用于调整内核参数和系统性能优化。
sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。它包含一些TCP/IP堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 # 开启IP转发
net.ipv4.conf.all.accept_redirects = 0 # 禁止所有接口接收重定向报文
ulimit:用于限制系统资源使用和保护系统安全。
perf、、systemtap:用于系统性能分析和瓶颈诊断。
perf、、systemtap:用于系统性能分析和瓶颈诊断。
init、systemd、upstart:用于系统进程管理和服务管理。
lspci、lsusb、lshw:用于硬件信息和诊断。
lp、lpr、cups:用于打印管理和打印队列控制。
tree、fd、rg:用于文件和目录搜索和查找。
2. 综合检测集成方案和工具
Unixbench
Unixbench是一个类unix系(如Unix, Linux)统下的性能测试工具,被广泛用在linux系统主机的性能的测试,主要提供的测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。
要运行UnixBench测试,请按照以下步骤进行:
打开终端并进入UnixBench的根目录。在大多数情况下,UnixBench的根目录位于/usr/share/UnixBench。您可以使用以下命令进入该目录:
- cd /usr/share/UnixBench 如果UnixBench安装在其他位置,请相应地更改路径。
- 运行./Run命令。这将会运行所有可用的测试,包括CPU、内存、磁盘、文件系统和网络等方面的测试。测试过程可能需要一些时间,具体时间取决于您的系统性能。
- 等待测试完成后,将生成一个HTML格式的报告。该报告位于UnixBench根目录下的results文件夹中,文件名为UnixBench.html。您可以使用Web浏览器打开该文件,并查看测试的结果和性能数据。
除了运行所有测试之外,您还可以运行单个测试或一组测试。以下是一些示例命令:
运行CPU测试:./Run cpu 运行内存测试:./Run memory 运行磁盘测试:./Run disk 运行文件系统测试:./Run fs 运行网络测试:./Run network
Sysbench工具
内建测试项
fileio:文件I/O测试。 cpu:CPU性能测试。 memory:内存速度测试。 threads:线程子系统性能测试。 mutex:互斥性能测试。 oltp:OLTP(在线事务处理)测试。
其他工具
Nagios:一款开源的企业级 IT 基础设施监控软件,可监测服务器、网络设备、应用程序等多种设备和服务状态。
Zabbix:一款功能强大的开源网络监控软件,支持多种监测方式,如 SNMP、JMX、IPMI、HTTP 等,并具有自定义告警、数据可视化等功能。
Munin:一款基于 Web 的监测软件,可以监测 CPU、内存、磁盘、网络等多种系统指标,还支持插件扩展和数据可视化。
Cacti:一款基于 RRDtool 的网络图形化监测工具,可以监测网络带宽、路由器、交换机等设备的状态,并生成图表和报告。
Prometheus:一款开源的服务监测系统,可监测多种应用程序、数据库、中间件等服务状态,并提供数据可视化和告警功能。
Sysdig:一款基于系统调用跟踪的容器监测工具,可以监测容器的运行状态、资源使用情况、网络流量等,并提供数据可视化和安全分析功能。
Netdata:一款轻量级的实时系统监测工具,支持多种系统指标和网络流量监测,并具有数据可视化和告警功能。
网络监视器,如 tcpdump、Wireshark
3. 检测步骤
检查系统资源使用情况:可以使用 top 命令查看系统中正在运行的进程,以及它们占用的 CPU 和内存资源。可以使用 free 命令查看系统中可用的内存和交换空间的使用情况。
检查磁盘使用情况:可以使用 df 命令查看系统中磁盘分区的使用情况,以及剩余的可用空间。可以使用 du 命令查看特定目录或文件的磁盘使用情况。
检查网络带宽和连接情况:可以使用 iftop 命令查看系统中正在使用的网络连接和带宽使用情况。可以使用 netstat 命令查看特定端口或协议的网络连接情况。
检查系统负载和性能指标:可以使用 uptime 命令查看系统的负载情况。可以使用 vmstat 命令查看系统的虚拟内存使用情况和 CPU 使用情况。可以使用 iostat 命令查看系统的磁盘 I/O 使用情况。
进行基准测试:可以使用一些基准测试工具,如 UnixBench、Geekbench、Sysbench 等,对系统进行性能测试,以便比较不同系统或不同配置的性能差异。
4. 使用crontab定时调度任务进行自动化运维(对系统日志进行备份等)
有时候,为了系统稳定性,除了在/var/log通过回滚机制生成各种日志文件以排查系统故障之外,我们也想把这些关键的日志文件保存到指定文件夹,防止突然断电或者磁盘分区被破坏之后丢失关键的日志信息。
代码如下:(文件名为backup_sysconfig.sh)
#! /bin/bash
# this script is used to backup the syslog file in /var/log dir everyday
echo `date`
cp /var/log/syslog /home/hugo/test_BASH/log/
# adding the user with x permission
chmod u+x /home/hugo/test_BASH/log/syslog
# chnage the firname
today=$(date +%y%m%d)
echo $today
mv /home/hugo/test_BASH/log/syslog /home/hugo/test_BASH/log/syslog_$today
定时调度任务
crontab 的语句是“分 时 日 月 周 命令”.
开启定时调度任务,每天凌晨1点执行一次
crontab -e
# 0 1 * * * /home/hugo/test_BASH/backup_sysconfig.sh
显示 crontab: installing new crontab
,表示定时任务已经开启。
查看定时任务
crontab -l
开启或者关闭定时任务
service crondstart
service crondstop