Linux查看系统版本和内核信息,cat /etc/os-release和uname命令 Linux

前言

刚拿到一台服务器,第一步就是看看是什么系统、什么版本、内核是多少。不同的系统版本配置方法不一样,CentOS7 和 CentOS8 的防火墙命令都不一样,Ubuntu 和 CentOS 的包管理器也不一样。所以第一件事就是确认系统版本。本文就讲一下怎么查看 Linux 系统版本和内核信息。

查看系统版本

方法一:cat /etc/os-release(推荐)

这是最通用的方法,所有现代 Linux 发行版都有这个文件:

cat /etc/os-release

CentOS7 输出示例:

NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

Ubuntu 输出示例:

NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"

重点看 NAME、VERSION、VERSION_ID 这几行。

方法二:cat /etc/redhat-release(CentOS/RHEL专用)

CentOS 和 RHEL 系统可以直接看这个文件:

cat /etc/redhat-release

输出:

CentOS Linux release 7.9.2009 (Core)

方法三:lsb_release -a

lsb_release -a

输出:

Distributor ID: CentOS
Description:    CentOS Linux release 7.9.2009 (Core)
Release:        7.9.2009
Codename:       Core

注意: 有些系统默认没装 lsb_release,需要先安装:

yum install redhat-lsb -y

方法四:hostnamectl

hostnamectl

输出会显示系统信息,包括操作系统和内核版本:

   Static hostname: localhost.localdomain
         Icon name: computer-vm
           Chassis: vm
        Machine ID: xxxxxxxx
           Boot ID: xxxxxxxx
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1160.el7.x86_64
      Architecture: x86-64

这个命令同时显示系统版本和内核版本,很方便。

查看内核版本

方法一:uname -a(最常用)

uname -a

输出示例:

Linux localhost 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:58 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

各段含义:

  • Linux:内核名
  • localhost:主机名
  • 3.10.0-1160.el7.x86_64:内核版本
  • #1 SMP ...:编译信息
  • x86_64 x86_64 x86_64:硬件架构、处理器类型、操作系统类型

方法二:uname -r

只看内核版本号:

uname -r

输出:

3.10.0-1160.el7.x86_64

内核版本号拆解:

  • 3:主版本
  • 10:次版本
  • 0:修订版本
  • 1160:RHEL补丁号
  • el7:Enterprise Linux 7
  • x86_64:64位

方法三:cat /proc/version

cat /proc/version

输出:

Linux version 3.10.0-1160.el7.x86_64 (mockbuild@x86-01.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Mon Oct 19 16:18:58 UTC 2020

查看系统架构

uname -m

输出:

x86_64

说明是64位系统。如果输出 i686 就是32位。

或者用:

arch

实际应用场景

场景1:刚拿到服务器,先确认系统版本

cat /etc/os-release
uname -r

确认是 CentOS7 还是 Ubuntu,内核版本是多少。

场景2:安装软件前确认版本

不同版本的系统安装方法不一样,CentOS7 用 yum,Ubuntu 用 apt。先确认版本再装软件。

场景3:排查内核兼容性问题

有些软件要求特定内核版本,先看看当前内核版本够不够。

uname -r

场景4:确认是32位还是64位

uname -m

常见坑

坑1:cat /etc/issue 不准

很多老教程说用 cat /etc/issue 看系统版本,但这个文件可能被改过,不一定准。推荐用 /etc/os-release。

坑2:把内核版本和系统版本搞混

内核版本是 uname -r 显示的,系统版本是 /etc/os-release 显示的。这两个不一样,别搞混了。

坑3:CentOS 各小版本不影响大版本

CentOS7.9 和 CentOS7.6 都是 CentOS7,大部分操作是一样的。只要大版本对就行,不用纠结小版本号。

总结

查看系统版本和内核信息的核心命令:

  1. cat /etc/os-release:看系统版本(最通用)
  2. cat /etc/redhat-release:CentOS/RHEL 专用
  3. uname -a:看内核版本和系统架构
  4. uname -r:只看内核版本号
  5. hostnamectl:同时看系统版本和内核版本

拿到一台新服务器,先跑这几个命令确认系统环境,再开始做其他操作。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:42 

Linux查看进程启动时间,ps和lsof命令使用 Linux

前言

想知道某个进程跑了多久?或者想知道哪个进程打开了某个文件?这时候就需要用到 ps 和 lsof 两个命令了。ps 用来查看进程信息,包括启动时间、运行状态等;lsof 用来查看进程打开了哪些文件。这两个命令是运维排查问题的必备工具。本文就详细讲一下这两个命令的使用。

ps 命令

基本用法

ps aux

输出所有进程的详细信息。

输出示例:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 128000  5000 ?        Ss   Oct01   0:05 /usr/lib/systemd/systemd
root      123  0.0  0.2 150000 10000 ?        Ss   Oct01   0:10 /usr/sbin/sshd
nginx    4567  0.0  0.3 200000 15000 ?        S    Oct05   0:02 nginx: worker process

各列含义

列 含义
USER 进程所属用户
PID 进程ID
%CPU CPU占用百分比
%MEM 内存占用百分比
VSZ 虚拟内存大小
RSS 物理内存大小
TTY 终端
STAT 进程状态
START 启动时间
TIME 累计CPU时间
COMMAND 启动命令

查看进程启动时间

ps -p PID -o lstart

比如查看PID为123的进程的启动时间:

ps -p 123 -o lstart

输出:

STARTED
Mon Oct  1 10:30:45 2026

查看某个进程的详细信息

ps aux | grep nginx

按CPU占用排序

ps aux --sort=-%cpu | head -10

按内存占用排序

ps aux --sort=-%mem | head -10

lsof 命令

lsof = list open files,用来查看进程打开了哪些文件。

基本用法

lsof

列出所有进程打开的所有文件。

查看某个进程打开的文件

lsof -p PID

比如查看PID为123的进程打开了哪些文件:

lsof -p 123

查看某个文件被哪个进程占用

lsof 文件路径

比如查看 /var/log/nginx/access.log 被哪个进程占用:

lsof /var/log/nginx/access.log

查看某个端口被哪个进程占用

lsof -i :80

查看80端口被哪个进程占用。

查看某个用户打开的文件

lsof -u nginx

查看nginx用户打开的所有文件。

查看某个目录下被打开的文件

lsof +D /var/log/

查看 /var/log/ 目录下所有被打开的文件。

实际排查案例

案例1:磁盘空间没释放

删了一个大文件,但磁盘空间没释放。这是因为还有进程在写这个文件。

lsof | grep deleted

输出所有已删除但还被进程占用的文件。找到对应的PID,重启那个进程就能释放空间了。

案例2:端口被占用

启动Nginx的时候报错"Address already in use",说明80端口被占用了。

lsof -i :80

看是哪个进程占了80端口,杀掉或者换个端口。

案例3:进程启动时间不对

怀疑某个服务被重启过,看看启动时间。

ps -ef | grep nginx

或者更详细的:

ps -p PID -o lstart

案例4:找出谁在写日志

想知道哪个进程在写某个日志文件。

lsof /var/log/messages

常见坑

坑1:删了文件磁盘空间没释放

这是最常见的坑。删了大文件,但磁盘空间没释放,因为还有进程在写这个文件。

解决: 用 lsof | grep deleted 找到还在写这个文件的进程,重启那个进程,或者直接清空文件内容:

> /var/log/nginx/access.log

坑2:ps aux 和 ps -ef 搞混了

ps aux 和 ps -ef 输出格式不一样,但信息基本一样。aux 是BSD格式,-ef 是System V格式。看个人习惯。

坑3:lsof 输出太多

lsof 不加参数会输出一大堆,根本看不过来。一定要加参数过滤:-p、-i、-u、+D 等。

总结

查看进程信息的核心命令:

  1. ps aux:看所有进程的基本信息
  2. ps -p PID -o lstart:看某个进程的启动时间
  3. lsof -p PID:看某个进程打开了哪些文件
  4. lsof -i :端口:看某个端口被哪个进程占用
  5. lsof | grep deleted:看哪些已删除文件还被进程占用

ps 和 lsof 是运维排查问题的基本功,遇到问题先跑一遍这两个命令,大部分问题都能定位到方向。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:40 

Linux查看网络连接数,ss和netstat命令统计 Linux

前言

服务器被攻击了?网站访问量突然暴涨?想看看当前有多少人在连接你的服务器?这时候就需要查看网络连接数了。ss 和 netstat 是两个最常用的网络连接查看命令,ss 是新版,速度更快,推荐优先用。本文就讲一下怎么用这两个命令统计网络连接数、排查网络问题。

ss 命令(推荐)

ss 是 iproute2 包自带的,比 netstat 快很多,尤其是连接数很多的时候。

基本用法

ss

显示所有TCP和UDP连接。

统计各状态连接数

ss -s

输出示例:

Total: 120
TCP:   80 (estab 30, closed 40, orphaned 0, timewait 20)

Transport Total     IP        IPv6
RAW       0         0         0
UDP       5         3         2
TCP       80        60        20
INET      85        63        22
FRAG      0         0         0

这就是全局统计,一眼就能看出当前有多少连接。

查看TCP连接

ss -t

只显示TCP连接。

查看所有监听端口

ss -tlnp

参数说明:

  • -t:TCP
  • -l:只显示监听状态的
  • -n:不解析域名,直接显示IP和端口
  • -p:显示进程名

统计某个端口的连接数

比如统计80端口的连接数:

ss -tn | grep :80 | wc -l

统计各状态的TCP连接数

ss -tan | awk '{print $1}' | sort | uniq -c | sort -rn

输出示例:

40 ESTAB
30 TIME-WAIT
10 LISTEN
5 CLOSE-WAIT

netstat 命令

netstat 是老牌命令,很多老脚本还在用。

基本用法

netstat -tlnp

查看监听的TCP端口。

统计各状态连接数

netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

统计某个端口的连接数

netstat -an | grep :80 | wc -l

查看哪个进程在监听某个端口

netstat -tlnp | grep :80

连接状态详解

TCP连接有很多状态,常见的:

状态 含义
ESTABLISHED 已建立连接,正在通信
LISTEN 监听中,等待连接
TIME_WAIT 主动关闭方等待,防止旧包干扰新连接
CLOSE_WAIT 被动关闭方等待,说明程序没正确关闭连接
FIN_WAIT1 主动关闭方,等待对方回应
FIN_WAIT2 主动关闭方,已经收到对方回应

重点关注:

  • ESTABLISHED 多:说明当前活跃连接多,正常
  • TIME_WAIT 多:说明短连接很多,正常但要注意
  • CLOSE_WAIT 多:说明程序有bug,没正确关闭连接

实际排查案例

案例1:看看当前有多少人访问网站

ss -tn | grep :80 | grep ESTAB | wc -l

统计80端口已建立连接的数量。

案例2:看看哪个IP连接最多

ss -tn state established '( sport = :80 )' | awk '{print $4}' | awk -F: '{print $1}' | sort | uniq -c | sort -rn | head -10

输出连接最多的前10个IP。

案例3:看看是不是被攻击了

如果突然有大量 TIME_WAIT 或 CLOSE_WAIT,可能是被攻击了。

ss -tan | awk '{print $1}' | sort | uniq -c | sort -rn

常见坑

坑1:连接数多就是被攻击了

连接数多不一定是被攻击。如果是正常的网站访问量上涨,连接数多是正常的。要看连接来源IP分布和连接状态。

坑2:TIME_WAIT 多就优化

TIME_WAIT 是TCP协议的正常机制,不需要太紧张。除非 TIME_WAIT 数量特别多(几万几十万),影响了性能,再考虑优化。

坑3:CLOSE_WAIT 多不处理

CLOSE_WAIT 多说明你的程序有bug,没有正确关闭连接。时间长了会把文件句柄用完,导致新连接建不起来。这是程序问题,要改代码。

总结

查看网络连接数的核心命令:

  1. ss -s:快速看全局统计
  2. ss -tlnp:看监听端口和对应进程
  3. ss -tan | awk '{print $1}' | sort | uniq -c:统计各状态连接数
  4. netstat:老命令,兼容性好,但慢

推荐用 ss,比 netstat 快很多,尤其是连接数很多的时候。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:39 

Linux查看磁盘I/O性能,iostat命令详解 Linux

前言

服务器变慢了,CPU不高、内存也够,但就是卡。这时候就要看看是不是磁盘I/O瓶颈了。很多时候系统慢不是CPU不够,而是磁盘读写太慢,CPU一直在等磁盘。iostat 就是专门用来查看磁盘I/O性能的工具,配合 vmstat 一起用,能快速定位I/O问题。本文就详细讲一下 iostat 命令的使用。

安装 iostat

CentOS7 默认可能没装 iostat,先装一下:

yum install sysstat -y

iostat 属于 sysstat 包,装完就有了。

基本用法

直接输入:

iostat

输出示例:

Linux 3.10.0-1160.el7.x86_64 (localhost)    10/05/2026  _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.00    0.00    2.00    1.00    0.00   92.00

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               10.00        50.00       100.00     500000     1000000

输出详解

CPU 部分

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.00    0.00    2.00    1.00    0.00   92.00
列 含义
%user 用户态CPU占用
%nice 改变过优先级的进程占用
%system 内核态CPU占用
%iowait 等待磁盘I/O的CPU占比(重点看这个)
%steal 被虚拟机偷走的CPU
%idle 空闲CPU

重点看 %iowait: 如果这个值很高(比如超过20%),说明磁盘I/O是瓶颈,CPU大部分时间在等磁盘读写。

磁盘部分

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               10.00        50.00       100.00     500000     1000000
列 含义
Device 设备名
tps 每秒传输次数(IOPS)
kB_read/s 每秒读取的数据量
kB_wrtn/s 每秒写入的数据量
kB_read 总共读取的数据量
kB_wrtn 总共写入的数据量

实时监控

每2秒刷新一次

iostat 2

按 Ctrl+C 退出。

每2秒刷新一次,总共刷新5次

iostat 2 5

只看磁盘部分,不看CPU

iostat -d 2

更详细的磁盘统计

显示扩展统计信息

iostat -x

输出会多出很多列,这才是真正分析磁盘性能的关键:

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda              0.00     5.00    1.00    9.00    50.00   100.00    30.00     0.10    5.00    2.00    6.00   1.00   1.00

重点列说明:

列 含义 判断标准
await 平均I/O等待时间(毫秒) 超过20ms就要注意,超过100ms说明磁盘很慢
svctm 平均I/O服务时间(毫秒) 越小越好
%util 磁盘利用率 接近100%说明磁盘跑满了
avgqu-sz 平均I/O队列长度 越大说明排队越严重

最重要的两个指标:

  1. %util:如果接近100%,说明磁盘已经跑满了
  2. await:如果很大,说明每次I/O等待时间很长,磁盘很慢

常用参数组合

实时监控磁盘性能

iostat -x 2

每2秒刷新一次,显示扩展信息。

只看某个磁盘

iostat -x sda 2

以MB为单位显示

iostat -m

显示设备映射关系

iostat -N

实际排查案例

案例1:系统变慢,怀疑磁盘I/O

vmstat 1

看 wa 列,如果很高(超过20%),说明磁盘I/O是瓶颈。

然后用 iostat 详细看:

iostat -x 2

看 %util 是不是接近100%,await 是不是很大。

案例2:哪个磁盘跑得最忙

iostat -x 2

看 %util 列,哪个磁盘的 %util 最高,就是哪个磁盘是瓶颈。

案例3:读写比例

iostat -x 2

看 r/s 和 w/s,是读多还是写多,针对性优化。

常见坑

坑1:%util 100% 就以为磁盘坏了

%util 100% 说明磁盘在处理I/O请求,但不一定是磁盘性能不行。可能是I/O请求量太大,也可能是磁盘确实慢。要结合 await 一起看。

坑2:只看 tps 不看 await

tps 高不一定是问题,要看每次I/O的等待时间 await。如果 await 很小,说明磁盘处理得很快,tps高也没关系。

坑3:把 iowait 当成CPU问题

%iowait 高说明CPU在等磁盘,不是CPU不够用。这时候加CPU没用,要优化磁盘I/O。

总结

查看磁盘I/O性能的核心命令:

  1. iostat:快速看磁盘整体读写情况
  2. iostat -x 2:实时监控,重点看 %util 和 await
  3. vmstat 1:看 wa 列,确认是不是I/O瓶颈

记住两个关键指标:

  • %util 接近100%:磁盘跑满了
  • await 超过20ms:磁盘响应慢了

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:37 

Linux查看内存使用情况,free和vmstat命令详解 Linux

前言

服务器卡了,第一反应就是看看内存够不够用。很多人一看到 free 很少就慌了,觉得内存不够要扩容。其实 Linux 的内存管理和 Windows 不一样,free 少不代表内存真的不够。本文就讲一下怎么用 free 和 vmstat 两个命令正确查看内存使用情况。

free 命令

基本用法

直接输入:

free

输出示例:

              total        used        free      shared  buff/cache   available
Mem:        8165036     4000000     2000000       50000     2165036     4000000
Swap:       2097148           0     2097148

输出详解

列 含义
total 总内存大小
used 已使用的内存
free 完全空闲的内存
shared 共享内存
buff/cache 缓存和缓冲区占用的内存
available 真正可用的内存(重点看这列)

重点:available 才是真正可用的内存

很多人只看 free 列,看到只剩几百M就慌了。其实 Linux 会把空闲内存都用来做缓存(buff/cache),这些缓存是可以随时回收的。

看 available 列才是真正可用的内存。 比如上面的例子,free 只有2G,但 available 有4G,说明还有4G内存可以用。

free 常用参数

free -h

以人类可读的格式显示(自动用G/M/K单位):

              total        used        free      shared  buff/cache   available
Mem:           7.8Gi       3.8Gi       1.9Gi        50Mi       2.1Gi       3.8Gi
Swap:          2.0Gi          0B       2.0Gi
free -m

以MB为单位显示。

free -g

以GB为单位显示。

free -s 5

每5秒刷新一次。

free -c 3

总共显示3次后退出。

vmstat 命令

基本用法

直接输入:

vmstat

输出示例:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 2000000  50000 2100000    0    0    10    20   100   50  5  2 92  1  0

输出详解

procs 进程部分:

  • r:等待运行的进程数
  • b:处于不可中断睡眠的进程数

memory 内存部分:

  • swpd:已用的交换分区大小
  • free:空闲内存
  • buff:缓冲区大小
  • cache:缓存大小

swap 交换分区部分:

  • si:从磁盘交换到内存的速度(KB/s)
  • so:从内存交换到磁盘的速度(KB/s)

io 磁盘I/O部分:

  • bi:从磁盘读取的速度(块/s)
  • bo:写入磁盘的速度(块/s)

cpu CPU部分:

  • us:用户态CPU占用
  • sy:内核态CPU占用
  • id:空闲CPU
  • wa:等待I/O的CPU
  • st:被虚拟机偷走的CPU

vmstat 常用参数

vmstat 1

每秒刷新一次,按 Ctrl+C 退出。

vmstat 1 5

每秒刷新一次,总共刷新5次。

vmstat -s

显示内存统计信息。

怎么判断内存够不够用

看 available 够不够

free -h

看 available 列,如果 available 还有几百M以上,说明内存够用。

看 swap 用了多少

free -h

如果 Swap 的 used 列有数值,说明物理内存不够用了,系统在把内存数据换到磁盘上。这时候性能会大幅下降。

看 si 和 so

vmstat 1

如果 si 和 so 列长期不为0,说明系统在频繁换页,内存不够用了。

实际排查案例

案例1:内存够不够

free -h

看 available 列,如果还有几个G,说明内存够用。

案例2:系统变慢,怀疑内存不足

vmstat 1

看 si 和 so 是不是很高,如果很高说明在频繁换页,内存不够。

案例3:哪个进程占内存最多

top

按 M 键按内存排序,看哪个进程占的内存最多。

常见坑

坑1:把 free 少当成内存不足

Linux 的内存管理机制和 Windows 不一样,空闲内存都用来做缓存了,buff/cache 那部分是可以随时回收的。看 available 列才是真正可用的内存。

坑2:看到 swap 用了就慌

如果 swap 用了一点,但 si 和 so 都是0,说明那是历史遗留的,不影响性能。只有当 si 和 so 长期不为0的时候才是问题。

坑3:内存不够就随便扩容

内存不够的原因可能有很多:

  • 某个程序内存泄漏
  • 数据库缓存配置太大
  • 日志缓存没配置

先找出原因,再决定要不要扩容。

总结

查看内存使用情况的核心命令:

  1. free -h:快速看内存总览,重点看 available 列
  2. vmstat 1:实时监控内存和换页情况,看 si 和 so
  3. top 按M:看哪个进程占内存最多

记住一个原则:Linux 的 free 少不是问题,available 少才是问题。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:36 

Linux查看系统运行时间,uptime和w命令使用 Linux

前言

想知道服务器已经连续运行了多少天?现在有多少人在线?系统负载怎么样?这些问题用 uptime 和 w 两个命令就能搞定。这两个命令虽然简单,但都是运维日常最常用的,一个看运行时间和负载,一个看谁在线。本文就把这两个命令讲透。

uptime 命令

基本用法

直接输入:

uptime

输出示例:

 10:30:45 up 30 days,  2:15,  1 user,  load average: 0.50, 0.40, 0.30

输出详解

字段 含义
10:30:45 当前系统时间
up 30 days, 2:15 系统已运行30天2小时15分钟
1 user 当前有1个用户登录
load average: 0.50, 0.40, 0.30 系统负载,分别是1分钟、5分钟、15分钟的平均值

负载怎么看

负载(load average)是衡量系统繁忙程度的指标。数值越高说明越忙。

判断标准:

  • 负载数值和CPU核心数有关
  • 比如4核CPU,负载4.0才算跑满
  • 一般来说,负载不要超过CPU核心数的70%
  • 比如4核CPU,负载在2.8以下算正常

uptime 常用参数

uptime -V

查看版本号。

uptime -h

查看帮助。

w 命令

基本用法

直接输入:

w

输出示例:

 10:30:45 up 30 days,  2:15,  1 user,  load average: 0.50, 0.40, 0.30
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.1.100    10:20    5.00s  0.05s  0.00s w

输出详解

第一行和 uptime 完全一样:系统时间、运行时间、在线用户数、负载。

下面是当前登录的用户列表:

列 含义
USER 登录用户名
TTY 终端类型(pts/0 表示远程SSH连接)
FROM 登录来源IP
LOGIN@ 登录时间
IDLE 空闲时间
JCPU 该终端所有进程占用的CPU时间
PCPU 当前进程占用的CPU时间
WHAT 当前正在运行的命令

w 常用参数

w -h

不显示第一行标题,只显示用户列表。

w -s

精简模式,不显示 JCPU 和 PCPU 列。

w root

只查看某个用户的登录信息。

who 命令

除了 uptime 和 w,还有个 who 命令,更简单:

who

输出:

root     pts/0        2026-10-05 10:20 (192.168.1.100)

只显示谁在线、从哪来、什么时候登录的。

last 命令

想知道历史登录记录,用 last:

last

输出最近的登录记录,包括:

  • 谁登录的
  • 从哪个IP登录的
  • 什么时候登录的
  • 登录了多久
last -10

只看最近10条。

实际应用场景

场景1:服务器重启过没有

用 uptime 看运行时间,如果才几天,说明最近重启过。

uptime

场景2:谁在登录我的服务器

用 w 看当前有谁在线,来源IP是哪里。如果有不认识的IP,可能是被入侵了。

w

场景3:系统负载高不高

用 uptime 看 load average,如果负载很高,再用 top 看是哪个进程占的。

uptime
top

场景4:排查登录历史

用 last 看历史登录记录,有没有异常登录。

last

常见坑

坑1:负载高就以为CPU不够

负载高不一定是CPU的问题。负载包括所有等待CPU的进程,也包括等待I/O的进程。可能是磁盘I/O瓶颈,也可能是大量进程在排队。要结合 top 一起看。

坑2:把在线用户数看得很重要

1 user 这个数字只是当前登录的用户数,不代表系统性能。一个用户也可能把系统跑满,100个用户也可能很空闲。

坑3:last 显示的是历史记录,不是实时状态

last 是看历史登录记录的,现在谁在线要用 w 或 who。两者别搞混了。

总结

uptime 和 w 是最基础的系统监控命令:

  1. uptime:看系统运行时间和负载
  2. w:看谁在线、从哪来、在干嘛
  3. who:更简单的在线用户查看
  4. last:看历史登录记录

这几个命令都是秒出结果,排查问题的时候先跑一遍,快速了解系统基本状态。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:35 

Linux日志过大占用磁盘,logrotate日志切割配置 Linux

前言

服务器跑了几个月,突然磁盘满了,一查发现是日志文件占了几十G。Nginx的access.log、MySQL的慢查询日志、系统日志……这些日志文件只会越来越大,不会自己变小。手动删了吧,又怕删出问题;不删吧,磁盘迟早满。Linux 自带了 logrotate 工具,专门用来自动切割和清理日志,配置一次以后就不用管了。本文就详细讲一下怎么用 logrotate 管理日志。

什么是 logrotate

logrotate 是 Linux 系统自带的日志管理工具,可以自动完成:

  • 切割日志:把大日志文件按天/按大小切成多个小文件
  • 压缩日志:旧的日志自动 gzip 压缩
  • 删除日志:保留指定天数后自动删除
  • 通知服务:切割完后通知 Nginx/MySQL 等服务重新打开日志文件

系统默认每天运行一次 logrotate,你只需要写好配置文件就行。

logrotate 配置文件结构

全局配置

vi /etc/logrotate.conf

这是全局配置文件,一般不用改。里面定义了默认的行为:

weekly                  # 默认每周切割一次
rotate 4                # 保留4个日志文件
create                  # 切割后创建新的空日志文件
dateext                 # 用日期作为扩展名
include /etc/logrotate.d   # 包含这个目录下的所有配置

单个服务的配置

每个服务的日志配置放在 /etc/logrotate.d/ 目录下:

ls /etc/logrotate.d/

比如 nginx、mysql、syslog 都有各自的配置文件。

实战:配置 Nginx 日志切割

我们以 Nginx 为例,写一个完整的 logrotate 配置。

1. 创建配置文件

vi /etc/logrotate.d/nginx

2. 写入配置

/var/log/nginx/*.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 644 nginx nginx
    postrotate
        /usr/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endpostrotate
}

3. 参数说明

参数 作用
/var/log/nginx/*.log 要切割的日志文件路径
daily 每天切割一次
rotate 30 保留30个日志文件
compress 旧日志用gzip压缩
delaycompress 延迟压缩,新切割的当天不压缩
missingok 日志文件不存在不报错
notifempty 空文件不切割
create 644 nginx nginx 创建新文件,权限644,属主nginx
postrotate...endpostrotate 切割后执行的命令,通知Nginx重新打开日志文件

常用切割策略

按天切割,保留30天

/var/log/nginx/*.log {
    daily
    rotate 30
    compress
    missingok
    notifempty
    create 644 nginx nginx
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endpostrotate
}

按大小切割,超过100M就切

/var/log/nginx/access.log {
    size 100M
    rotate 10
    compress
    missingok
    notifempty
    create 644 nginx nginx
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endpostrotate
}

同时按天+按大小

/var/log/nginx/*.log {
    daily
    size 100M
    rotate 30
    compress
    missingok
    notifempty
    create 644 nginx nginx
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endpostrotate
}

意思是每天检查一次,如果日志超过100M就切割。

手动测试 logrotate

配置完之后,可以用 debug 模式测试一下,不会真正执行:

logrotate -d /etc/logrotate.d/nginx

参数说明:

  • -d:debug模式,只显示会做什么,不真正执行

如果没问题,手动执行一次:

logrotate -f /etc/logrotate.d/nginx
  • -f:强制切割,不管到没到时间

常见坑

坑1:切割了但服务还在写旧文件

很多人配置完 logrotate,发现日志切完了,但磁盘空间没释放。这是因为 Nginx 还在往旧的日志文件里写(虽然名字改了,但文件句柄还在)。

解决: 一定要配置 postrotate 脚本,通知服务重新打开日志文件。对于 Nginx,就是发送 USR1 信号:

postrotate
    /bin/kill -USR1 `cat /run/nginx.pid`
endpostrotate

坑2:压缩延迟没开,旧日志还占着空间

如果不加 delaycompress,切割完立刻就压缩,但服务可能还在写旧文件,导致压缩失败或者压缩不完整。

解决: 加上 delaycompress,让新切割的日志第二天再压缩。

坑3:日志文件权限不对

切割完创建的新日志文件,如果属主不对,Nginx 就写不进去。

解决: 用 create 644 nginx nginx 指定新文件的属主和权限。

坑4:logrotate 不执行

配置写完了,但日志从来没切割过。检查一下:

# 看logrotate的cron任务有没有
cat /etc/cron.daily/logrotate

# 手动执行一次看有没有报错
logrotate -d /etc/logrotate.d/nginx

总结

logrotate 配置的核心步骤:

  1. 在 /etc/logrotate.d/ 下创建配置文件
  2. 指定日志路径、切割频率、保留数量
  3. 加上 postrotate 通知服务重新打开日志
  4. 用 logrotate -d 测试配置
  5. 系统每天自动执行,不用管了

日志切割是服务器运维的基本功,配好了以后磁盘永远不会被日志撑满。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:33 

Linux查看CPU、内存负载,top命令详解 Linux

前言

服务器变慢了?网站卡了?第一反应就是看看 CPU 和内存是不是跑满了。Linux 下最常用的查看系统负载的命令就是 top,相当于 Windows 的任务管理器。但很多人打开 top 后看得一头雾水,不知道各个数字代表什么意思。本文就把 top 命令的输出详解一遍,让你一眼就能看出服务器哪里出了问题。

启动 top 命令

直接在终端输入:

top

就能看到实时的系统监控界面。按 q 键退出。

top 输出详解

top 的输出分为两部分:上面是系统整体信息,下面是各个进程的详细列表。

第一行:系统概况

top - 10:30:45 up 30 days,  2:15,  1 user,  load average: 0.50, 0.40, 0.30
  • 10:30:45:当前系统时间
  • up 30 days, 2:15:系统已经运行了30天2小时15分钟
  • 1 user:当前有1个用户登录
  • load average: 0.50, 0.40, 0.30:系统负载,分别是1分钟、5分钟、15分钟的平均负载

负载怎么看? 负载数值和 CPU 核心数有关。比如4核CPU,负载4.0才算跑满;如果负载超过 CPU 核心数的70%就需要注意了。

第二行:任务进程

Tasks: 120 total,   1 running, 119 sleeping,   0 stopped,   0 zombie
  • 120 total:总共有120个进程
  • 1 running:1个正在运行
  • 119 sleeping:119个休眠中
  • 0 stopped:0个停止
  • 0 zombie:0个僵尸进程

僵尸进程多了要注意,说明有进程没正常退出。

第三行:CPU 使用情况

%Cpu(s):  5.0 us,  2.0 sy,  0.0 ni, 92.0 id,  0.5 wa,  0.0 hi,  0.5 si,  0.0 st
  • us:用户态CPU占用百分比
  • sy:内核态CPU占用百分比
  • ni:改变过优先级的进程占用
  • id:空闲CPU百分比
  • wa:等待I/O的CPU百分比
  • hi:硬中断占用
  • si:软中断占用
  • st:被虚拟机偷走的CPU时间

重点看 us 和 id: 如果 us 很高说明用户进程占了大量CPU;如果 wa 很高说明磁盘I/O是瓶颈。

第四行:内存使用

KiB Mem :  8165036 total,  2000000 free,  4000000 used,  2165036 buff/cache
  • total:总内存
  • free:空闲内存
  • used:已用内存
  • buff/cache:缓存占用

注意: Linux 的内存管理机制和 Windows 不一样,free 很少不代表内存不够用,因为很多内存被用作缓存(buff/cache),需要的时候可以释放出来。

第五行:交换分区

KiB Swap:  2097148 total,  2097148 free,        0 used.  4000000 avail Mem
  • total:交换分区总大小
  • free:空闲交换分区
  • used:已用交换分区
  • avail Mem:可用内存(包括可回收的缓存)

如果 Swap 用了很多,说明物理内存不够用了,系统在把内存数据换到磁盘上,这时候性能会大幅下降。

进程列表

下面是各个进程的详细列表,各列含义:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
1234 root      20   0  100000  20000   5000 S   5.0  0.2   1:23.45 nginx
  • PID:进程ID
  • USER:进程所属用户
  • PR:进程优先级
  • NI:nice值,负值优先级高
  • VIRT:虚拟内存占用
  • RES:物理内存占用(常驻内存)
  • SHR:共享内存
  • S:进程状态(R运行/S睡眠/D不可中断睡眠/Z僵尸)
  • %CPU:CPU占用百分比
  • %MEM:内存占用百分比
  • TIME+:累计CPU时间
  • COMMAND:进程名

top 常用快捷键

在 top 界面里,可以按这些键进行交互:

按键 功能
P 按CPU占用排序(默认)
M 按内存占用排序
N 按PID排序
1 显示每个CPU核心的详细信息
k 杀掉指定PID的进程
q 退出top
h 显示帮助
d 刷新间隔时间(秒)
u 只显示指定用户的进程
c 显示完整命令行

实际排查案例

案例1:CPU 占用很高

打开 top,按 P 键按CPU排序,看哪个进程占的CPU最多。如果是某个异常进程,按 k 输入PID杀掉。

案例2:内存占用很高

按 M 键按内存排序,看哪个进程占的内存最多。如果是数据库占的内存多,那是正常的(数据库会把数据缓存到内存里)。

案例3:系统负载高但CPU不高

如果 load average 很高,但 %us 和 %sy 都不高,看看 %wa 是不是很高。如果 wa 高,说明是磁盘I/O瓶颈,CPU在等磁盘读写。

常见坑

坑1:把 buff/cache 当成已用内存

很多人看到 free 很少就慌了,觉得内存不够用。其实 Linux 把空闲内存都用来做缓存了,buff/cache 那部分是可以随时回收的。看 avail Mem 那列才是真正可用的内存。

坑2:load average 高就以为CPU不够

负载高不一定是CPU的问题。可能是磁盘I/O瓶颈(%wa高),也可能是大量进程在等待资源。要结合CPU使用率一起看。

坑3:杀进程杀错了

用 k 杀进程的时候一定要确认PID是不是对的,别把系统关键进程杀了。杀错了可能直接导致系统挂掉。

总结

top 命令是 Linux 运维最常用的监控工具,记住几个关键点:

  1. 看负载:load average,和CPU核心数对比
  2. 看CPU:%us 高说明用户进程吃CPU,%wa 高说明磁盘I/O瓶颈
  3. 看内存:看 avail Mem,不要只看 free
  4. 排序:按 P 看CPU占用,按 M 看内存占用
  5. 杀进程:按 k 输入PID

日常排查服务器问题,先打开 top 看一眼,大部分问题都能定位到方向。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:30 

Linux查看服务器开放端口,netstat和ss命令使用教程 Linux

前言

部署完网站后,经常需要确认某个端口是否真的开放了,或者排查服务有没有正常监听。Linux 下最常用的两个工具就是 netstat 和 ss。netstat 是老经典,几乎所有系统都自带;ss 是 iproute2 套件里的新工具,性能更好、信息更全。本文把这两个命令的常用用法都整理出来,新手照着抄就行。

netstat 命令用法

1. 查看所有监听端口

netstat -tlnp

参数说明:

  • -t:只显示 TCP 连接
  • -l:只显示监听状态的端口
  • -n:以数字形式显示端口号,不做域名解析
  • -p:显示占用端口的进程名和 PID

输出示例:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5678/nginx
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      5678/nginx

2. 查看 UDP 端口

netstat -ulnp

把 -t 换成 -u 就是查看 UDP 端口。

3. 查看所有端口(TCP+UDP)

netstat -tulnp

4. 查看指定端口是否被占用

netstat -tlnp | grep 80

如果 80 端口被占用,会输出对应的进程信息。

5. 查看所有网络连接(不只是监听)

netstat -an

-a 表示显示所有连接,不只是监听状态的。

ss 命令用法

ss 是 netstat 的替代品,在服务器上性能更好,尤其是连接数很多的时候。

1. 查看所有监听端口

ss -tlnp

参数和 netstat 基本一样:

  • -t:TCP
  • -l:监听状态
  • -n:数字形式
  • -p:显示进程

2. 查看 UDP 端口

ss -ulnp

3. 查看所有端口(TCP+UDP)

ss -tulnp

4. 查看指定端口

ss -tlnp | grep 443

5. 查看所有已建立的连接

ss -tn state established

可以用来统计当前服务器有多少个活跃连接。

6. 查看某个IP的连接

ss -tn dst 192.168.1.100

查看和 192.168.1.100 之间的所有连接。

两个命令的区别

对比项 netstat ss
性能 连接数多的时候很慢 非常快
来源 net-tools 包 iproute2 包
兼容性 几乎所有 Linux 都有 新系统默认自带
功能 基础网络查询 更丰富的过滤功能

建议: 日常排查用 ss 更高效,老系统上找不到 ss 再用 netstat。

常见坑

坑1:看不到进程信息

执行 netstat -tlnp 或 ss -tlnp 时,如果看不到 PID/Program name 那一列,说明你不是 root 用户。加上 sudo 再执行:

sudo netstat -tlnp
sudo ss -tlnp

坑2:端口显示是 :: 而不是 0.0.0.0

0.0.0.0:80 表示监听所有 IPv4 地址的 80 端口;:::80 表示监听所有 IPv6 地址的 80 端口(同时也兼容 IPv4)。这两种都能从外网访问,不用担心。

坑3:查不到端口但服务明明启动了

检查一下服务是不是只监听了 127.0.0.1。如果 Local Address 显示的是 127.0.0.1:80,那外网是访问不了的,只能本机访问。需要修改服务配置监听 0.0.0.0。

总结

查看 Linux 开放端口记住这几个核心命令就够了:

  • 常用查看:ss -tlnp 或 netstat -tlnp
  • 查指定端口:ss -tlnp | grep 端口号
  • 查UDP端口:ss -ulnp

日常排查优先用 ss,速度快信息全;老系统没 ss 再用 netstat。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-5 07:24 

Linux 防火墙配置技巧 Linux

Linux 防火墙配置技巧

服务器安全第一步就是配好防火墙,只开需要的端口,其他全关。

1. firewalld(CentOS 7+ 默认)

# 查看状态
firewall-cmd --state

# 查看已开放端口
firewall-cmd --list-ports

# 开放端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp

# 开放多个端口
firewall-cmd --permanent --add-port=8000-9000/tcp

# 开放指定 IP 访问
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port=3306 accept"

# 重载配置(必须重载才生效)
firewall-cmd --reload

# 删除端口
firewall-cmd --permanent --remove-port=8080/tcp

2. ufw(Ubuntu 默认)

# 查看状态
ufw status

# 开启防火墙
ufw enable

# 允许 SSH
ufw allow 22

# 允许 80 和 443
ufw allow 80
ufw allow 443

# 允许指定 IP
ufw allow from 192.168.1.100 to any port 3306

# 拒绝某个 IP
ufw deny from 1.2.3.4

# 删除规则
ufw delete allow 8080

3. iptables(经典)

# 查看规则
iptables -L -n

# 允许 22 端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许 80 端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT

# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 默认拒绝其他
iptables -P INPUT DROP

# 保存规则(CentOS)
service iptables save

4. 安全建议

  • 只开必要端口:SSH、HTTP、HTTPS,其他全关
  • SSH 改端口:不要用默认 22,改成其他端口
  • 限制 SSH 登录 IP:只允许你的 IP 登录 SSH
  • 数据库不对外暴露:MySQL、Redis 只允许本地访问
  • 定期查看日志:/var/log/secure 看有没有暴力破解

5. 常用端口速查

  • 22:SSH
  • 80:HTTP
  • 443:HTTPS
  • 3306:MySQL
  • 6379:Redis
  • 8080:应用端口

总结

Linux 防火墙核心:

  • CentOS 用 firewalld
  • Ubuntu 用 ufw
  • 只开必要端口
  • 数据库不对外暴露
  • SSH 限制 IP 访问

配好防火墙,服务器安全提升一大截。


emer 发布于  2026-10-4 10:52 

Linux 进程管理命令 Linux

Linux 进程管理常用命令

服务器上跑了多少进程?哪个进程占内存多?怎么杀进程?这些命令必须会。

1. 查看进程

# 查看所有进程
ps aux

# 查找指定进程
ps aux | grep nginx

# 实时查看
top

2. top 命令详解

top 是最常用的进程查看工具:

  • 第一行:系统负载
  • 第二行:任务数
  • 第三行:CPU 使用率
  • 第四行:内存使用
  • 第五行:Swap 使用

按 q 退出,按 k 杀进程。

3. 杀进程

# 按 PID 杀
kill 1234

# 强制杀
kill -9 1234

# 按名字杀
pkill nginx

# 杀掉所有同名进程
killall nginx

4. 查看端口占用

# 查看端口被谁占了
netstat -tlnp | grep 80

# 或者用 ss
ss -tlnp | grep 80

5. 查看进程树

# 查看进程父子关系
pstree

# 查看某个进程的子进程
pstree -p 1234

6. 后台运行

# 后台运行
nohup ./script.sh &

# 查看后台任务
jobs

# 把任务调到前台
fg %1

7. 查看资源占用

# 内存占用排行
ps aux --sort=-%mem | head

# CPU 占用排行
ps aux --sort=-%cpu | head

总结

日常运维就这几个命令:ps、top、kill、netstat、nohup。学会这些,服务器进程管理基本够用了。


emer 发布于  2026-10-4 10:38 

Linux 常用命令:从文件操作到进程管理的完整指南 Linux

前言

Linux 是后端开发的必修课。很多新手面对黑窗口就发怵,其实只要掌握常用命令,日常开发就够用了。本文整理最常用的 Linux 命令。

一、文件操作

1. 查看目录

# 列出当前目录文件
ls

# 详细信息
ls -l

# 包括隐藏文件
ls -la

# 按时间排序
ls -lt

2. 切换目录

# 进入目录
cd /home/user

# 回到上一级
cd ..

# 回到用户主目录
cd ~

# 回到上次目录
cd -

3. 创建目录

# 创建目录
mkdir test

# 递归创建多级目录
mkdir -p a/b/c

4. 创建文件

# 创建空文件
touch test.txt

# 写入内容
echo "hello" > test.txt

# 追加内容
echo "world" >> test.txt

5. 复制文件

# 复制文件
cp test.txt test2.txt

# 复制目录
cp -r dir1 dir2

6. 移动/重命名

# 移动文件
mv test.txt /tmp/

# 重命名
mv old.txt new.txt

7. 删除文件

# 删除文件
rm test.txt

# 删除目录
rm -rf dir1

警告:rm -rf 很危险,一定要确认路径!

二、查看文件内容

1. cat

# 查看整个文件
cat test.txt

2. less

# 分页查看
less test.log

# 快捷键:
# 空格:下一页
# b:上一页
# /关键字:搜索
# q:退出

3. head / tail

# 看前 10 行
head -10 test.txt

# 看后 10 行
tail -10 test.txt

# 实时看日志(最常用)
tail -f /var/log/nginx/access.log

三、查找文件

1. find

# 按文件名查找
find / -name "nginx.conf"

# 按大小查找(大于 100M)
find / -size +100M

# 按修改时间查找(7 天内修改的)
find / -mtime -7

2. grep

# 在文件里搜索
grep "error" test.log

# 不区分大小写
grep -i "error" test.log

# 显示行号
grep -n "error" test.log

# 递归搜索目录
grep -r "function" /var/www/

# 配合管道使用
ps aux | grep nginx

四、系统状态

1. 查看进程

# 所有进程
ps aux

# 查找进程
ps aux | grep nginx

2. 杀死进程

# 按 PID 杀
kill 1234

# 强制杀
kill -9 1234

# 按名字杀
pkill nginx

3. 查看端口

# 查看所有监听端口
netstat -tlnp

# 查看某个端口
netstat -tlnp | grep 80

4. 查看磁盘

# 磁盘使用情况
df -h

# 当前目录大小
du -sh .

# 每个子目录大小
du -sh *

5. 查看内存

free -h

五、权限管理

1. chmod

# 给文件加执行权限
chmod +x test.sh

# 755:所有者可读写执行,其他人可读执行
chmod 755 test.sh

# 644:所有者可读写,其他人只读
chmod 644 test.txt

2. chown

# 修改文件所有者
chown www:www test.txt

六、压缩解压

1. tar

# 压缩
tar -zcvf website.tar.gz /var/www/html

# 解压
tar -zxvf website.tar.gz

2. zip

# 压缩
zip -r website.zip /var/www/html

# 解压
unzip website.zip

七、网络相关

1. curl

# 访问网页
curl https://www.baidu.com

# 查看响应头
curl -I https://www.baidu.com

# 发 POST 请求
curl -X POST -d "name=张三" https://api.example.com

2. wget

# 下载文件
wget https://example.com/file.zip

八、常用快捷键

快捷键 作用
Ctrl + C 终止当前命令
Ctrl + Z 暂停当前命令
Ctrl + D 退出终端
Tab 自动补全
Ctrl + R 搜索历史命令
!命令 执行最近一次的某命令

九、常用操作速查

操作 命令
看文件 cat / less / tail -f
找文件 find / grep
看进程 ps aux / top
看端口 netstat -tlnp
看磁盘 df -h / du -sh
改权限 chmod / chown

总结

Linux 常用命令的核心要点:

  1. 文件操作:ls / cd / mkdir / cp / mv / rm
  2. 查看内容:cat / less / tail -f
  3. 查找搜索:find / grep
  4. 进程管理:ps / kill / netstat
  5. 系统状态:df / du / free

不用背,用多了自然就记住了。先把这几个常用的练熟,日常开发基本够用。


emer 发布于  2026-10-4 10:17 

Linux 服务器安全加固:10个必须做的基础配置 Linux

前言

刚装完的 Linux 服务器就像没锁门的房子,任何人都能进来。本文整理了 10 个最基础但最重要的安全加固配置,帮你把门锁上。

1. 修改 SSH 端口,禁止 root 登录

默认 22 端口是黑客扫描的首选目标,改个端口能挡掉 90% 的自动扫描。

# 编辑 sshd 配置
vi /etc/ssh/sshd_config

# 修改端口
Port 22222

# 禁止 root 登录
PermitRootLogin no

# 重启 sshd
systemctl restart sshd

注意:改完端口后,记得在防火墙和安全组里放行新端口,否则你自己也进不去了。

2. 使用 SSH 密钥登录,禁用密码登录

密码再复杂也扛不住暴力破解,密钥登录才是正道。

# 本地生成密钥对(在你自己的电脑上执行)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 把公钥传到服务器
ssh-copy-id -p 22222 user@your_server_ip

# 服务器上禁用密码登录
vi /etc/ssh/sshd_config
PasswordAuthentication no

3. 配置防火墙,只开必要端口

# 只开 SSH、HTTP、HTTPS
ufw default deny incoming
ufw default allow outgoing
ufw allow 22222/tcp   # SSH
ufw allow 80/tcp      # HTTP
ufw allow 443/tcp     # HTTPS
ufw enable

4. 自动安全更新

# Ubuntu/Debian
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades

# CentOS/RHEL
dnf install dnf-automatic
systemctl enable --now dnf-automatic.timer

5. 创建普通用户,配置 sudo

永远不要用 root 跑日常操作,创建一个普通用户,需要时用 sudo 提权。

# 创建用户
adduser deploy

# 加入 sudo 组
usermod -aG sudo deploy

6. 禁用不必要的服务

# 查看正在运行的服务
systemctl list-unit-files --type=service --state=enabled

# 禁用不需要的服务
systemctl disable --now avahi-daemon
systemctl disable --now cups

7. 配置 fail2ban 防暴力破解

apt install fail2ban

# 配置 sshd 防护
vi /etc/fail2ban/jail.local

[sshd]
enabled = true
port = 22222
maxretry = 3
bantime = 3600

systemctl restart fail2ban

8. 设置密码策略

# 编辑 pwquality 配置
vi /etc/security/pwquality.conf

minlen = 12          # 最小长度
dcredit = -1         # 至少1个数字
ucredit = -1         # 至少1个大写字母
lcredit = -1         # 至少1个小写字母
ocredit = -1         # 至少1个特殊字符

9. 监控日志,定期检查

# 查看登录失败记录
grep "Failed password" /var/log/auth.log

# 查看当前登录用户
w

# 查看最近登录记录
last -n 20

10. 定期备份,备份再备份

安全加固做得再好,也不如有一份能快速恢复的备份。

# 简单的文件备份脚本
tar -czf backup_$(date +%Y%m%d).tar.gz /var/www/

把备份文件同步到异地存储,别只放在同一台服务器上。

总结

这 10 条配置不需要高深的技术,但每一条都能实实在在地降低服务器被攻破的风险。建议新服务器装好后,第一件事就是把这 10 条全部过一遍。

安全不是一次性的工作,而是一个持续的过程。定期更新系统、监控日志、检查异常,才能真正把服务器守好。


emer 发布于  2026-10-4 09:53 

emer 发布于  2025-1-8 08:33 

Linux chmod 命令中 -a 参数的用途是什么? Linux

Linux文件权限命令参数当您在Linux中设置文件或文件夹的权限时,可以使用命令行中的-a...


emer 发布于  2025-1-8 08:32 

Linux新手如何高效远程管理:xshell是最佳选择吗? Linux

xshell,操作Linux的利器提到操作Linux,很多人都会想到直接通过SSH...


emer 发布于  2025-1-8 08:32 

emer 发布于  2025-1-8 08:20 

Linux下如何用PHP读取Word文档数据? Linux

如何在Linux下运行PHP用com_dotnet扩展读取Word文档数据在Linux系统上,使用PHP的com_dotnet扩展来读取Word...


emer 发布于  2025-1-8 08:16 

Linux系统下如何用PHP读取Word文档? Linux

Linux系统下运行COM扩展读取Word文档在Windows系统下使用PHPCOM扩展插件读取Word文档数据的方法,在Linux...


emer 发布于  2025-1-8 08:15 
'); })();