1. 系统信息参数
1 2 3 cat /etc/issue # Asianux Server 4 (Hiranya SP4) # Kernel \r on an \m
1 2 3 4 5 6 7 8 9 uname -a # Linux TD-APP-10 2.6.32-431.20.3.el6.x86_64 # 内核名称 主机名称 内核release 内核版本 机器名称 处理器 硬件平台 操作系统。 cat /proc/version Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017 cat /etc/os-release
1 2 3 # uniq :删除重复行# wc –l :统计行数cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
1 cat /proc/cpuinfo | grep "processor" | wc -l
1 cat /proc/cpuinfo | grep "cpu cores" | uniq
1 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
1 cat /proc/cpuinfo | grep "siblings" | uniq
1 cat /proc/meminfo | grep MemTotal
1 2 3 4 # 临时修改主机名 hostname [主机名] # 永久修改主机名,是对/etc/hostname文件的内容进行修改 hostnamectl set-hostname [主机名]
2. 切换用户
2.1. su
1 2 3 4 5 # 格式为两种: su -l USERNAME(-l为login,即登陆的简写) su USERNAME # 如果不指定USERNAME(用户名),默认即为root。 # 两者区别为,前者在改变用户的同时,也会切换工作目录,也会改变环境变量
2.2. sudo
1 2 3 # 用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。 # 若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。 sudo(选项)(参数)
2.3. 注
su -使用root的密码,而sudo su使用用户密码
3. 启停后台screen
3.1. 常用语法
screen -ls
: 列出当前所有的 session
screen -S yourname
: 新建一个 yourname 的 session
screen -R yourname
: 先试图恢复 yourname 的离线作业,若找不到,即建立新的作业
screen -r yourname
: 恢复 yourname 的离线 screen 作业
screen -S id.yourname -X quit
: 删除 screen
3.2. 常用操作
Ctril+a 再 d
: detach,保持当前 screen 到后台并回到主终端
4. 快速定位到用户目录
cd ~
: ~
是用户的主目录,等价于 /home/username
5. 删除面板上已输入命令
Ctrl+k
: 删除从光标到行尾的部分
Ctrl+u
: 删除从光标到行首的部分
6. 查找并显示给定命令的绝对路径
which (选项) (参数)
: 环境变量 $PATH
中保存了查找命令时需要遍历的目录。which
指令会在环境变量 $PATH
设置的目录里查找符合条件的文件。也就是说,可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
7. 端口
7.1 端口占用
查看某端口被谁占用
1 2 netstat -tunlp | grep 8080 netstat -anp | grep 8080
参数含义:
-a
(all)显示所有选项,默认不显示LISTEN相关
-t
(tcp)仅显示tcp相关选项
-u
(udp)仅显示udp相关选项
-n
拒绝显示别名,能显示数字的全部转化成数字。
-l
仅列出有在 Listen (监听) 的服務状态
-p
显示建立相关链接的程序名
-r
显示路由信息,路由表
-e
显示扩展信息,例如uid等
-s
按各个协议进行统计
-c
每隔一个固定时间,执行该netstat命令。
7.2 端口监听
nc
用于设置路由器,它能通过 TCP
和 UDP
在网络中读写数据,是网络工具中的瑞士军刀
1 2 # -l 使用监听模式,管控传入的资料 nc -l [通信端口...]
8. 查看文件编码格式
1 2 3 4 5 6 7 8 # 直接查看 $ file [filename] # vim 中查看并修改 $ vim [filename] :set fileencoding # 查看文件编码格式 :set fileencoding=utf-8 # 修改文件编码格式 :set fileformat=unix # 修改文件编码换行模式
9. SCP
加密的方式在本地主机和远程主机之间复制文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 scp (选项) (参数) # 选项 -4:使用ipv4; -6:使用ipv6; -P:指定远程主机的端口号; -p:保留文件的最后修改时间,最后访问时间和权限模式; -r:以递归方式复制 -q:不显示传输进度条 # 参数 源文件:指定要复制的源文件。 目标文件:目标文件。格式为user@host:filename(文件名为目标文件的名称)。 # 从远程机器复制到本地,例如:从10.10.10.10机器上的/opt/soft/的目录中下载nginx-0.5.38.tar.gz 文件到本地/opt/soft/目录中。 scp -P 10000 root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/ # 上传本地目录到远程机器指定目录,例如:上传本地目录/opt/soft/mongodb到远程机器10.10.10.10上/opt/soft/scptest的目录中 scp -r /opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest
10. 进程相关
10.1. 查看 java
进程
jps(Java Virtual Machine Process Status Tool)
是 java
提供的一个显示当前所有 java
进程 pid
的命令
1 2 3 4 5 6 7 8 9 # jps 存放在 JAVA_HOME/bin/jps jps [参数] # 参数 -q:只显示pid,不显示class名称,jar文件名和传递给main方法的参数 -m 输出传递给main方法的参数 -l 输出应用程序main class的完整package名或者应用程序的jar文件完整路径名 -v 输出传递给JVM的参数 -V 隐藏输出传递给JVM的参数
10.2. shell
脚本启动的服务进程
如果使用 nohop
方式启动脚本,会有一个如下进程
username 23418 1 0 Oct10 ? 00:00:00 /bin/bash ./start.sh
其PID
是真正服务的父进程,所以需要查询该PID
的子进程,才是服务的真正进程
$ ps -ef|grep 23418
11. 软链接
11.1. 创建
1 2 3 4 ln -s [实际目标文件或目录] [链接放置的文件或目录] # 在 /home/test2 下建立软链接,链接到 /data/test1,即效果为新增 /home/test2/test1 ln -s /data/test1/ /home/test2/
11.2. 修改
1 ln –snf [新被链接文件或目录] [目标文件或目录]
11.3. 删除
1 2 3 4 rm –rf [软链接名称] # 删除软链接 /home/test2/test1,最后不能带/,否则会删除被链接的文件,并且之后软链接还在 rm –rf /home/test2/test1
12. grep
语法 grep 查找内容
参数
grep -v
: 反向查找,即不含指定文本的行
-l
: --file-with-matches
,列出文件内容符合指定的范本样式的文件名称
-d <动作>
: --directories=<动作>
,当指定要查找的是目录而非文件时,必须使用这项参数,否则将回报信息并停止动作
-r/-R
: --recursive
,等同于 -d recurse
-n
: 显示行号
-E
: 等于 egrep
,开启扩展匹配,可匹配多个关键字
1 2 3 4 5 6 7 8 # 查找 apache 的进程 $ ps -ef|grep apache # 查找 apache 的进程,并排除 gerp 的进程 ps -ef|grep apache |grep -v grep # 只列出包含指定文本的文件名 grep -r -l "查询内容" 文件目录
12.1. 使用正则
标准的字符类
字符类
表示1
表示2
字母数字字符
[:alnum:]
[0-9A-Za-z]
字母字符
[:alpha:]
[A-Za-z]
数字
[:digit:]
[0-9]
小写字母
[:lower:]
[a-z]
大写字母
[:upper:]
[A-Z]
空字符: 空格键符 和 制表符
[:blank:]
空格字符: 制表符、换行符、垂直制表符、换页符、回车符和空格键符
[:space:]
1 2 # 匹配 IP 地址 egrep '[[:digit:]]{1,3}/.[[:digit:]]{1,3}/.[[:digit:]]{1,3}/.[[:digit:]]{1,3}' 文件名
12.2. 注意
在管道中使用时,必须使用双中括号来包裹标准字符,使用大括号时要转义:
1 2 # 查找日志文件中,在20220330那天,生成时间中分钟数是50多的文件,文件格式为 log_20220330090101.log ll | grep "log_20220330[[:digit:]]\{2\}5[[:digit:]]\{3\}\.log"
13. 压缩
13.1. tar
1 2 3 4 5 6 7 8 打包:tar -cvf [目标文件名].tar [原文件名/目录名] 解包:tar -xvf [原文件名].tar # 注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。 # 查看包含文件 tar -tzvf tmp.tar.gz # 解压单个文件 tar -zxvf tmp.tar.gz fooo/1.log
13.2. tar.gz
1 2 3 4 5 6 7 8 # 方式一:利用前面已经打包好的tar文件,直接用压缩命令。 压缩:gzip [原文件名].tar 解压:gunzip [原文件名].tar.gz # 方式二:一次性打包并压缩、解压并解包 打包并压缩: tar -zcvf [目标文件名].tar.gz [原文件名/目录名] 解压并解包: tar -zxvf [原文件名].tar.gz -C /date/tmp 注:z代表用gzip算法来压缩/解压。
14. top
1 2 3 4 5 6 7 top - 12:05:27 up 1118 days, 17:08, 3 users, load average: 0.08, 0.06, 0.00 Tasks: 471 total, 1 running, 470 sleeping, 0 stopped, 0 zombie Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 99.5%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 132110604k total, 131593952k used, 516652k free, 214532k buffers Swap: 67108856k total, 15100916k used, 52007940k free, 12616408k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14.1. 任务队列信息,同 uptime
命令的执行结果
系统时间:12:05:27
运行时间:up 1118 days, 17:08
当前登录用户:3 users
负载均衡(uptime):load average: 0.08, 0.06, 0.00
average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
14.2 Tasks
— 任务(进程)
总进程:471 total
运行:1 running
休眠:470 sleeping
停止:0 stopped
僵尸进程:0 zombie
14.3 Cpu(s)
— 状态信息
用户空间占用CPU的百分比(user space):0.2%us
内核空间占用CPU的百分比(sysctl):0.2%sy
改变过优先级的进程占用CPU的百分比:0.0%ni
空闲CPU百分比(idolt):99.5%id
IO等待占用CPU的百分比(wait):0.1%wa
硬中断占用CPU的百分比(Hardware IRQ):0.0%hi
软中断占用CPU的百分比(Software Interrupts):0.0%si
14.4 Mem
— 内存状态
物理内存总量:132110604k total
使用的物理内存总量:131593952k used
空闲的物理内存总量:516652k free
用在内核缓存的内存总量:214532k buffers
14.5 Swap
— swap交换分区信息
交换区内存总量:67108856k total
使用的交换区的总量:15100916k used
空闲的交换区总量:52007940k free
缓存的交换区总量:12616408k cached
14.6 各进程(任务)的状态监控
PID
:进程id
USER
:进程所有者
PR
:进程优先级
NI
:nice值。负值表示高优先级,正值表示低优先级
VIRT
:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES
:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR
:共享内存大小,单位kb
S
:进程状态。D
=不可中断的睡眠状态 R
=运行 S
=睡眠 T
=跟踪/停止 Z
=僵尸进程
%CPU
:上次更新到现在的CPU时间占用百分比
%MEM
:进程使用的物理内存百分比
TIME+
:进程使用的CPU时间总计,单位1/100秒
COMMAND
:进程名称(命令名/命令行)
14.6.1. VIRT:virtual memory usage 虚拟内存
进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
14.6.2. RES:resident memory usage 常驻内存
进程当前使用的内存大小,但不包括swap out
包含其他进程的共享
如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
关于库占用内存的情况,它只统计加载的库文件所占内存大小
14.6.3. SHR:shared memory 共享内存
除了自身进程的共享内存,也包括其他进程的共享内存
虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
计算某个进程所占的物理内存大小公式:RES-SHR
swap out后,它将会降下来
14.6.4. DATA
数据占用的内存。如果top没有显示,按f键可以显示出来。
真正的该程序要求的数据空间,是真正在运行中要使用的。
15. 文本处理
15.1. head
在屏幕上显示指定文件的起始若干行
head [OPTION] [FILE]
在未指定行数时默认显示前10行。
处理多个文件时会在各个文件之前附加含有文件名的行
当没有文件或文件为-时,读取标准输入
1 2 3 4 -n, --lines=[-]NUM 显示前NUM行而不是默认的10行;如果NUM前有"-",那么会打印除了文件末尾的NUM行以外的其他行 -c, --bytes=[-]NUM 显示前NUM字节;如果NUM前有"-",那么会打印除了文件末尾的NUM字节以外的其他内容 -q, --quiet, --silent 不打印文件名行 -v, --verbose 总是打印文件名行
15.2. tail
在屏幕上显示指定文件的末尾若干行
tail [OPTION] [FILE]
1 2 3 4 -n, --lines=[-]NUM 显示末尾NUM行而不是默认的10行;如果NUM前有"+",那么会打印除了文件起始的NUM行以外的其他行 -c, --bytes=[-]NUM 显示前NUM字节;如果NUM前有"+",那么会打印除了文件起始的NUM字节以外的其他内容 -f, --quiet, --silent 不打印文件名行 -v, --verbose 总是打印文件名行
16. 配置 jdk
16.1. 全局
root 用户配置 /etc/profile
JDK9 之后就没有了 dt.jar
和 tools.jar
,不用配置 CLASSPATH
1 2 3 4 5 6 7 8 9 10 [root]# vim /etc/profile JAVA_HOME=/opt/jdk1.7.0_07 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH [root]# source /etc/profile
16.2. 分用户
用户账号配置 ~/.bash_profile
,配置内容与上面一致,最后要
1 [user1]$ source ~/.bash_profile
16.3. 当前 session
只能影响当前 session,更换后需要重新执行
1 2 3 export JAVA_HOME=/usr/java/jdk1.8 .0_25 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
17. 别名
设置命令别名,可以将参数放到当前用户主目录下的 .profile
或者 .bashrc
里,两者为隐藏文件,前者针对当前普通用户,后者针对 root 用户。
18. 调度
1. crontab
周期执行的任务一般由 cron
这个守护进程来处理 (ps -ef|grep cron)
。cron
读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
1.1. 命令
1 2 3 4 5 crontab -u username 省略用户表表示操作当前用户的crontab -e 编辑工作表 -l 列出工作表里的命令 -r 删除工作作
1.2. 配置
cron
在 3 个地方查找配置文件:
/var/spool/cron/
这个目录下存放的是每个用户包括 root 的 crontab 任务,每个任务以创建者的名字命名,比如 tom 建的 crontab 任务对应的文件就是 /var/spool/cron/tom。一般一个用户最多只有一个 crontab 文件。
/etc/crontab
这个文件负责安排由系统管理员制定的维护系统以及其他任务的 crontab。
/etc/cron.d/
这个目录用来存放任何要执行的 crontab 文件或脚本。
2. at
执行一次,将在某个特定的时间执行的任务调度
3. anacron
关机后恢复尚未执行的程序 anacron
19. 字符集
修改显示字符
1 2 LANG="en_US.UTF-8" export LANG
20. 免密登陆
1. 生成密钥
使用 ssh-keygen -t rsa
,此时用户目录下的 .ssh
会生成 id_rsa(私钥)
和 id_rsa.pub(公钥)
两个文件
2. 密钥发送到其他主机
方法一 : 使用 ssh-copy-id -i <id_ras.pub 路径>* <用户>@<ip>
,此时,会在 .ssh
生成 authorized_keys
文件
方法二 : 直接在机器下建立 .ssh/authorized_keys
文件,将其他机器的密钥写入文件
21. 新增用户
创建用户
adduser [用户名]
: 该命令其实是个 perl 脚本,底层调用 useradd ,会在 /home 目录下会自动创建同名文件夹
useradd [用户名]
: 直接调用会创建一个三无用户,无用户家目录,无指定shell版本,无密码
-c [备注]
: 添加备注,会保存在 passwd 的备注栏位中
-d [登入目录]
: 指定用户登入时的启始目录
-g [群组]
: 指定用户所属的群组
-G [群组]
: 指定用户所属的附加群组
-m
: 自动建立用户的登入目录
-s
: 指定用户登入后所使用的 shell
-u
: 指定用户 id
passwd [用户名]
: 为指定用户添加密码
删除用户
修改用户信息
使用 id
来查看用户信息,使用 usermod
来修改用户信息
1 2 3 # 用户 oracle,用户组 oinstall,附属组是 dba,创建文件时,文件属组是 oinstall [root@host1]$ id uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)
usermod [参数] [用户组] [用户名]
: 修改用户组
-g
or --gid
: 修改用户的属组
-a
or --append
: 把用户追加到某些组中,仅与 -G
选项一起使用
-G
or --groups
: 把用户追加到某些组中,仅与 -a
选项一起使用
22. 文件修改用户
1 2 # 将文件夹 file_root 用户切换为 user 用户 sudo chown user:user file_root/ -R
23. 查看指定几行
从第 3000 行开始,显示 1000 行,即显示 3000~3999 行
cat filename | tail -n +3000 | head -n 100
显示 1000 行到 3000 行
cat filename| head -n 3000 | tail -n +1000
从第 5 行开始,显示到第 10 行
sed -n '5,10p' filename
24. 删除指定时间前文件
删除20分钟前的文件
find ./tmp -maxdepth 1 -type f -mmin +20 -exec rm {} \;
删除20天前的文件
find ./tmp -maxdepth 1 -type f -mtime +20 -exec rm {} \;
参数
时间处理
mtime(Modify time)\mmin
: 修改天数/分钟数
atime(Access time)\amin
: 访问天数/分钟数
ctime(Change time)\cmin
: 状态变更天数/分钟数
n
: 从现在算起向前推第 n 天当天
+n
: 表示从现在算起向前推第 n 天之前所有的,不包括第 n 天当天
n=0
: 表示今天
n=+0
: 表示今天之前
-exec
参数
{}
表示命令的参数, 即为所找到的文件
命令的末尾必须以 ;
结束
25. 分区和挂载
查看分区
lsblk
: 列出系统的所有块设备及其逻辑分区
fdisk
: 主要用于创建或删除硬盘分区
26. 查看文件被进程占用
lsof |grep /tmp/.lock
26. 文件查看
1. view
语法格式: view [参数] 文件名
,是 vi
命令的别名命令
常用参数:
+数字
: 设置从文件第N行开始编辑
-b
: 使用二进制模式
-c
: 加载文件后执行指定命令
-e
: 使用Ex模式
-m
: 不允许修改文件内容
-n
: 不使用交换分区,只用物理内存
-o
: 打开指定数量的窗口
-p
: 打开指定数量的标签页
-R
: 使用只读模式
-s
: 静默执行模式
-T
: 设置使用的终端
-u
: 使用vimrc,而不是.vimrc
-v
: 使用Vi模式
-y
: 使用简易模式
-Z
: 使用受限模式
--help
: 显示帮助信息
--literal
: 不扩展通配符
--noplugin
: 跳过指定插件
--remote
: 连接至远程服务器
--version
: 显示版本信息
2. more, less
区别:
less
可以按键盘上下方向键显示上下内容
less
不必读整个文件,加载速度比 more
更快
less
退出后,在屏幕上不会留下刚显示的内容
less
是 GNU 的一部分,more
是 util-linux 软件包的一部分,可以从 Linux 内核中获取
1. more
语法格式: more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]
常用参数:
+n
: 从笫n行开始显示
-n
: 定义屏幕大小为n行
+/pattern
: 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c
: 从顶部清屏,然后显示
-d
: 提示 “Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃`- 功能
-l
: 忽略Ctrl+l(换页)字符
-p
: 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s
: 把连续的多个空行显示为一行
-u
: 把文件内容中的下画线去掉
常用操作:
Enter
: 向下n行,需要定义,默认为1行
Ctrl+F
,空格键
: 向下滚动一屏
Ctrl+B
: 返回上一屏
=
: 输出当前行的行号
:f
: 输出文件名和当前行的行号
V
: 调用vi编辑器
!命令
: 调用Shell,并执行命令
q
: 退出more
2. less
语法格式: less [参数] 文件
常用参数:
-b <缓冲区大小>
: 设置缓冲区的大小
-e
: 当文件显示结束后,自动离开
-f
: 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g
: 只标志最后搜索的关键词
-i
: 忽略搜索时的大小写
-m
: 显示类似 more 命令的百分比
-N
: 显示每行的行号
-o
: <文件名> 将less 输出的内容在指定文件中保存起来
-Q
: 不使用警告音
-s
: 显示连续空行为一行
-S
: 行过长时间将超出部分舍弃
-x <数字>
: 将“tab”键显示为规定的数字空格
/字符串
: 向下搜索“字符串”的功能
?字符串
: 向上搜索“字符串”的功能
n
: 重复前一个搜索(与 / 或 ? 有关)
N
: 反向重复前一个搜索(与 / 或 ? 有关)
常用操作:
操作
键位
向前移动一行
k
、上键
、y
向后移动一行
j
、下键
、e
、回车键
向前翻一页
b
、[pageup]键
向后翻一页
空格键
、[pagedown]键
向前翻半页
u
向后翻半页
d
移动到最后一行
G
移动到第一行
g
显示帮助界面
H
、h
退出less 命令
Q
、q
27. 防火墙/安全组设置
对于较旧的系统或使用传统防火墙的,一般使用 iptables
工具,对于使用较新版本的 RHEL/CentOS/Fedora 等系统,会使用 firewalld
工具。
在进行任何更改之前,最好备份当前的防火墙规则配置
1. iptables
查看所有规则:sudo iptables -L -n -v
查看规则带有行号(便于定位修改):sudo iptables -L --line-numbers
添加规则:sudo iptables -A INPUT -p tcp --dport PORT_NUMBER -j ACCEPT
(允许特定TCP端口的流量)
删除规则:首先通过 sudo iptables -L --line-numbers找到规则的行号
,然后使用 sudo iptables -D CHAIN编号
删除规则,例如 sudo iptables -D INPUT 5
(删除INPUT链中的第5条规则)。
保存规则:为了使更改永久生效,需要将规则保存到配置文件,具体命令根据发行版有所不同,如在 Debian 系系统中可以使用 iptables-save > /etc/iptables/rules.v4
,并确保在系统启动时加载这些规则
2. firewalld
启动防火墙:systemctl start firewalld
关闭防火墙:systemctl stop firewalld
查看防火墙状态:systemctl status firewalld
查看所有区域及其默认策略:sudo firewall-cmd --list-all-zones
查看特定服务或端口是否开放:sudo firewall-cmd --query-service=SERVICE_NAME 或 sudo firewall-cmd --query-port=PORT/tcp
开放端口:sudo firewall-cmd --zone=public --permanent --add-port=PORT/tcp
关闭端口:首先使用上述命令打开端口,然后用 --remove-port
替换 --add-port
来关闭
重载配置:每次修改规则后,需使用 sudo firewall-cmd --reload
使更改生效
添加服务:sudo firewall-cmd --permanent --add-service=SERVICE_NAME
保存配置:--permanent
标志表示所做的更改是永久的,不需要手动保存