基于 RedHat 系的 Linux 常用命令 & 常见系统设定

闲言碎语

除特定指明外,本文默认基于 RedHat Enterprise Linux 8+ 的阐述。

基于CentOS推出的开源系统,国内的阿里推出Anolis OS,华为的OpenEuler。为填补因 CentOS Linux 稳定版本停服而留下的空白,境外的RockyLinux,AlmaLinux。

同样的基于RHEL的下游开源系统:

Rocky Linux

这一切都始于一条博客评论

2020年12月8日,Red Hat公司宣布将停止开发CentOS(一个可用于生产环境的Red Hat Enterprise Linux下游版本)。作为替代,Red Hat采用该操作系统较新的上游开发版本——称为 "CentOS Stream"。作为回应,CentOS的最初创始人格雷戈里·库尔泽(Gregory Kurtzer) 通过CentOS网站上的评论宣布,他将再次启动一个项目以实现CentOS的最初目标。而之所以命名为Rocky Linux,是为了向早期CentOS的联合创始人洛基·麦高(Rocky McGaugh) 致敬。

作为RHEL的下游Linux操作系统替代方案,并继承了原CentOS的开源免费特点。2021年6月21日,Rocky Linux 8.4 稳定版发布,代号为"Green Obsidian"(绿色黑曜石)。官网:https://rockylinux.org/

AlmaLinux

源自于CloudLinux团队,一个开源的、由社区拥有并治理且永久免费的企业 Linux 发行版,专注于长期稳定性,提供一个强大的生产级平台。AlmaLinux OS 与 RHEL® 和 CentOS Stream 是 1:1 的二进制兼容。

AlmaLinux OS 是一个企业级服务器操作系统和一个稳定的 Linux 发行版,定期发布,支持周期很长。 您可以依靠 AlmaLinux OS 来运行任何关键工作负载。背靠CloudLinux团队及财务支持,受到大众的关注。官网:https://almalinux.org/

受众面

本人更青睐于AlmaLinux,因为看到各大服务商都有提供AlmaLinux的支持;比如很多的云服务商有提供AlmaLinux系统的选项,比如GitLab有提供支持到的系统AlmaLinux,等等吧...这是AlmaLinux给我留下的印象。RockyLinux类似的现象就比较少吧,目前是这样的。也许...就看后续各自的发展了。

还有一款足够优秀的 Springdale Linux (SDL) 来自于普林斯顿大学,不过目前只有x86平台镜像,参考官网

作者:[Sol·wang] - 博客园,原文出处:https://www.cnblogs.com/Sol-wang/p/14792892.html

系统分区

基本的必要分区

挂载点 建议 说明
/ 剩余最大空间 根节点
/home >10% 按用户量
/var ≈50% 默认安装应用的文件数据
/boot 100MB - 2GB 通常500M以内(难免会有大型App)
/boot/efi 200 MB - 500 MB  
/BISO boot 2MB - 4MB BIOS使用空间
swap 2GB - 系统最大内存容量 物理内存不足时启用的临时内存

Linux Terminal tool

名称/方式 说明
Windows cmd 基础工具
Windows PowerShell 基础工具,Microsoft持续更新
Windows Terminal Microsoft推出的新工具,美观
Fluent Terminal 专用工具,美观
Termius 专用工具,美观简洁,跨平台云账户
WindTerm 专用工具,美观,专业,功能全面
Tabby 专用工具,美观,支持插件,官网有Web版
Xshell 专用工具,企业版功能强大
MobaXterm 专用工具,企业版功能强大
Warp 跨时代的终端,值得期待(目前仅支持Mac)
PuTTY 老牌专用工具
远程连接 说明
telnet {目标服务器} {连接端口} Telecommunications Networks,早期远程连接命令,明文不加密,端口 23
ssh {登录用户}@{目标服务器} -p {端口} Secure Shell,终端连接到 目标服务器,安全加密,公钥验证,默认端口 22

Base

命令 说明
reboot 重启Linux系统
logout 退出终端登录
poweroff 断电关机
halt [-p] 关机 [断电]
shutdown -h now 定时关机(管理员权限)
shutdown -r now 定时重启(管理员权限)
uname -a 系统基础信息
dmesg 查看系统开启过程日志
clear 清空终端屏幕显示内容
Tab 键 命令补全;单按:精准补全、双按:可选命令
Logon
w,who 查看当前用户登录信息
last 查看当前用户登录历史
lastlog 查看所有用户登录记录
passwd {用户名} 修改用户的密码
su {目标用户名} 切换当前系统用户
sudo {cmd} root 权限执行命令
id [用户] 查看当前[指定]用户的 UID\GID 及所属的用户组等信息

System settings

环境变量
env Environment;查看系统全局环境变量
printenv HOME 打印系统全局环境变量(不带$)
set/unset 打印/删除 系统全局 + 用户全局 + 用户局部 环境变量
export 导出局部变量,使其成为全局变量(从局部中导出到全局中)
echo '=>$a' / echo "=>$a" 输出变量值;单引号被视为纯字符,双引号解释出变量值
区域/语言
locale 查看系统配置的区域字符集
locale -a 查看系统支持的区域字符集
localectl Locale Control;查看区域字符集(locale 升级版)
localectl list-locales 区域字符集列表
localectl set-locale {encoding} 设置区域字符集
主机信息
hostname 查看主机名
hostname -b[oot] {newname} 设置临时的主机名
hostname -a[lias]d[omain][i]p-address[I][s]hort[f] 查看临时的主机名 [别名/域名/全部IP/IPv4/短名/长名]
hostnamectl Hostname Control:查看主机信息
hostnamectl set-hostname {newname} 设置静态(永久)主机名
hostnamectl set-hostname {newname} --pretty 不受限制的个性化静态主机名

硬件资源

free [-h] 内存使用情况 [换算单位]
fdisk [-l] 硬盘管理 [所有分区信息]
df [-h] 磁盘的空间使用情况 [换算单位]
du [-achs] 所在目录下的所有子目录 [全部/总和/换算/总计]

命令行状态切换

输入命令回车后系统执行当前命令;当前命令执行完成后自动回到命令行状态,便于再次输入命令。
当前命令未执行完成时(如:拷贝大文件,升级安装包等),命令执行状态。
以下说明了对以上场景的操作:

命令 说明
& 指定后台运行
jobs -l 当前终端后台启动的作业 [PID]
fg %{job-id} Foreground;后台暂停的进程转到前台运行
bg %{job-id} Background;后台暂停的进程在后台继续运行,默认为最后一个Job
Ctrl+c 终止/结束 当前运行,返回命令行状态
Ctrl+z 暂停/挂起 并放后台,切换回命令行状态(可 fg 或 bg 恢复继续执行)
Ctrl+d 退出/断开/注销 当前状态(类似与exit,失去终端的连接)

Folder

命令 说明
pwd Print Working Directory当前所在目录
ll [-ah] 列出当前目录下全部[带隐藏的/换算文件大小]文件
ls [-alh] [*{filename}*] List;当前目录下内容 [全部/列表/换算] [文件名包含]
cd Change Directory;切换到个人目录
cd {目标路径} 切换到指定路径
cd [..] [../..] [-] 切换到 [上级] [上上级] [上次] 目录
du [-sh] [*] 所在目录下的[子]文件信息 [大小换算单位] [每个文件/夹]
du -s * | sort -n | head/tail -5 当前目录中每个文件[夹],按大小排序,-nr反向,前/后5个
find {dir} -name {*.txt} 查找,指定目录模糊搜索文件
find {dir} -iname {key} -type f|d|l 查找,模糊搜索;i=忽略大小写;type=文件|目录|连接
MAKE 创建
mkdir {目录名称} Make Directory:创建文件夹
mkdir -p {目录名称} 创建多级目录 --parents
mkdir -m=r-- {目录名称} 创建目录并赋予权限 --mode
CHANGE 变更
mv {旧文件夹名} {新目录文件夹名} Move:移动文件(重命名)
rm -rf {指定目录或文件} Remove:删除文件夹/文件,-r递归 -f 强制
COPE 复制
cp {源目录} {目标目录} Cope;复制文件
cp -a {源目录} {目标目录} 保留快捷方式、属性等目录下的全部
cp -r|i|f|p|l {源目录} {目标目录} 递归|可覆盖|强制不提示|保留归属权限|复制成链接
\cp -r {源目录} {目标目录} 递归复制目录/文件(\ 强制覆盖)
scp -r {local_file} {user}@{ip}:{remote-folder} Secure Cope;远传上传文件 -r 递归目录
scp -r {user}@{ip}:{remote-folder} {local-folder} 下载远传文件 -r 递归目录

File

命令 说明
which {filename} 文件的所在目录
stat {filename} 查看文件属性(大小、类型、权限、时间等)
nl {filename} 查看文件内容,自带行号
cat {filename} [-n] Concatenate and print files;带行号的内容显示
less {filename} 分页查看文件;b|空格:上下页;u|d:前后半页;?|/{key}:上下搜;N:反向再搜;q:退出
more {filename} 分页查看文件;空格/f:下页,b:上页,回车:下一行,q:退出
tail -f {filename} 实时滚动显示文件内容
tail -n 20 {filename} 查看文件内容的后n行,默认10行,-n 指定显示行数
head -n 20 {filename} 查看文件内容的前n行,默认10行,-n 指定显示行数
grep {关键字/正则} {文件} 内容搜索,指定文件中查找关键字
{命令} | grep {关键字/正则} 流搜索,按过滤方式;跟在其它命令后的输出流搜索
CREATE 创建
> {filename} 创建新的空文件
cat > {filename} 创建新文件并录入内容,Ctrl+d退出
touch {filename} 更新文件的 访问变更时间,自动创建
echo '{文本}' > {目标文件名} 命令结果流覆盖到目标文件内,自动创建
echo '{文本}' >> {目标文件名} 命令结果流追加到目标文件内,自动创建

Date

命令 说明
日期
date 显示时间
date '+%s' 1970年后的秒数
date '+%T %D' 默认格式日期时间
date '+%Y-%m-%d %H:%M:%S' 指定格式日期时间
date -r '{filename}' 文件的最后变更时间 [reference]
date -s '2023/03/18 15:30:00' 设置系统日期时间 [set]
date -d today|now|tomorrow|yesterday 输出指定描述日期 [date]
日历
cal 显示当月日历
cal -y|Y 显示当年 | 之后的12个月
cal -n {月份个数} 显示未来月份数量的日历
时区
tzselect 重设时区
timedatectl 所属时区
timedatectl list-timezones 可用时区
timedatectl set-timezone {时区名} 设置时区

Network

命令 说明
ss Socket Statistics;套接字统计
ss -plant 连接中的网络及端口
netstat -pantu 连接中的网络及端口
ifstat [网卡名] 网络[全部/指定]接口流量状态
dhclient {网卡名} 以 dhcp 模式启用指定网卡
ip addr add {ip}/24 dev {网卡名} 指定网卡追加 IP 地址
ip addr / ip route / ip rule 网卡信息 / 路由信息 / 路由规则信息
nmtui:NetworkManager Terminal User Interface
nmcli:NetworkManager Command Line Interface
nmcli 查看网络设备基本信息
nmcli g[eneral] [status] NetworkManager.service 状态
nmcli n[etworking] [on/off/connectivity] 整体网络操作 开/关/查
nmcli c[onnection] [show] 网络/网卡连接信息
nmcli c show {网卡名} 指定网络/网卡连接详细信息)
nmcli c modify [网卡名] {项} {值} 修改网卡的参数
nmcli c reload [网卡名] 重载所有/指定网卡配置文件
nmcli c load /etc/.../ifcfg-{网卡名} 加载指定目录的配置文件
nmcli c up {网卡名} 启动指定网卡
nmcli c down {网卡名} 停止指定网卡
nmcli c delete {网卡名} 删除指定网卡配置文件
nmcli d[evice] 网络设备信息(nmcli device)
nmcli d [show|status] 网络设备详细配置信息|状态
nmcli d reapply {网卡名} 重启网卡设备
nmcli d connect {网卡名} 激活指定的网卡
nmcli d disconnect {网卡名} 临时关闭指定网卡
nmcli --fields all c|d show [网卡名] 查看类别下所有字段的所有配置信息
nmcli -f GENERAL d show [网卡名] 查看网卡 device.general 字段下的所有配置信息
nmcli -f ipv4.addresses c show enp0s8 查看网卡 enp0s8 配置项 conn.ipv4.addresses 的值

User

命令 说明
users 当前已登录用户列表
cat /etc/passwd 查看用户列表
cat /etc/group 查看系统用户组
groups 当前用户所属组
groups {用户名A} {用户名B} 查看多个用户所属组
newgrp {groupname} 当前用户切换到指定组为登录状态
管理
useradd [-r] {uname} 创建新用户 [-r系统级]
useradd -g {组名} {用户名} 创建新用户 指定归属组
useradd -g {gname} -s /sbin/nologin {uname} 创建不可登录系统的用户
userdel {用户名} 删除用户
usermod -i {新名} {旧名} 修改现有用户名
groupadd {组名} 创建用户组
groupdel {组名} 删除用户组
groupmod -n {新名} {旧名} 修改用户组名
usermod -g {新组名} {用户名} 修改现有用户所属分组

Install

国内热门镜像站 说明
南京大学 网速拉满
上海交通大学 网速拉满,资源一般
华为云 网速拉满,资源不多
清华大学 网速拉满,资源不多
中国科学技术大学 网速拉满,资源一般,说明不够详细
阿里云 网速有限制,貌似最快1MB/s
校园网联合镜像站 <中国教育和科研计算机网网络中心>,综合所有境内大学的镜像资源
资源库 说明
Base 官网源,系统自带
EPEL 常用的,第三方(应用)资源库
ELRepo 第三方(内核)资源库
命令 说明
rpm:安装命令,程序依赖项需手动逐步安装
rpm -qal | grep {关键字}* 查询已安装(* 模糊搜索的占位符)
rpm -ivh {filename.rpm} 安装,显示安装过程及进度
yum:rpm的代替版,自动关联并安装依赖项
yum repolist [enabled|disabled|all] 显示本机所有可用的软件资源库信息
yum search {名称} 搜索资源库中的软件安装包
yum info {名称} 查看软件包详情
yum list {keyword}* 在所有资源库中搜索包,已装的/未装的
yum list {名称} --showduplicates 列出所有版本
yum list installed 查询已安装应用
yum install {名称} 安装指定应用
yum install {名称}-{版本} 安装指定应用的指定版本
yum reinstall {名称} 重装指定应用包
yum downgrade {名称} 回滚指定软件的版本
yum remove {程序名} 卸载已安装
yum autoremove 卸载无用孤立的软件包
yum clean all 清空安装包缓存
yum makecache 重建包管理器缓存(新的缓存索引会更快)
yum check-update 查看系统中可升级的应用
yum update {应用名称} 升级指定应用
yum update 全部批量升级应用(系统级升级)
yum distro-sync 更新软件包到最新的稳定发行版
yum provides {命令} 检查某个命令属于哪个安装包
yum-config-manager --enable {库名} 永久启用作用的资源包库(旧版)
yum-config-manager --disable {库名} 永久禁用作用的资源包库(旧版)
yum config-manager --set-enabled {库名} 永久启用作用的资源包库(新版)
yum config-manager --set-disabled {库名} 永久禁用作用的资源包库(新版)
yum --disablerepo='*' --enablerepo='epel' list {key}* 本次 排除/指定 资源库的操作
dnf:新一代的更优秀的rpm软件包管理器,yum的替代版,于RHEL8+,格式同yum。

文本编辑器

命令 说明
vi / vim {文件路径} Visual Interface;打开文件
编辑模式 i
[ESC] 退出当前(编辑)模式状态,进入命令模式状态
命令模式
0/$ 行首 / 行尾
gg/G 首行 / 尾行
yy/dd 复制 / 剪切 所在整行
u/. 撤回 / 重复 上次动作
p/P 粘贴到 下一行 / 上一行
/{keywork} 向下搜索关键字,按 n 查找下一个
?{keywork} 向上搜索关键字
:w [filename] 保存文件 write [另存为]
:q 退出文件 quit
:[w][q]! [保存][退出]强制
:set [no]number [取消]显示行号
:set encoding=utf-8 设置编码格式

Common / Tools

命令 说明
top 时时显示 process 的动态
uptime 系统运行时长|当前用户数|过去1/5/15分钟的平均负载
time {cmd} 执行命令耗时;real:总耗时
uuidgen 生成一个UUID,-r[andom] -t[ime]
watch -n 1 -d {命令} 周期性(1s)重复执行指定命令,全屏显示结果
{cmd} & 于后台运行(不影响前端继续敲命令)
{cmd} -daemon 守护进程方式运行
nohup {cmd} no hang up;不挂断运行命令,忽略与终端断开的信号
nohup|setsid|screen <cmd> & 于后台长久运行,不受其它干扰而被中断
管道命令 / 前后台命令 / 多命令
{命令1} ; {命令2} ; {命令3} 多命令按顺序在前端执行,无所谓成功失败
{命令1} | {命令2} 管道命令;之前命令的处理结果,给之后的命令再处理
{命令1} | tee {filename} 管道命令;将 前命令 的结果内容,覆盖到已存在的文件中
{命令1} || {命令2} 逻辑命令;命令1失败后 才会执行命令2
{命令1} & {命令2} 逻辑命令:前后端一起并行执行(最后命令在前端)
{命令1} && {命令2} 逻辑命令;之前命令顺利成功后,再执行之后的命令
tar:文件解压缩工具
tar -czvf {form-dir} {xxx.tar.gz} 文件压缩
tar -xzvf {xxx.tar.gz} -C {到指定目录} 文件解压 [C:到指定目录]
zip:文件解压缩工具
zip -v -r {filename}.zip {from-dir} 文件压缩 [v:显示过程] [r:递归]
unzip -v -d {to-dir} filename.zip 文件解压 [v:显示过程] [d:到指定目录]
curl:Client URL 请求工具
curl {url} 网络请求
curl -v {url} --verbose,显示连接过程
curl -X GET {url} 指定请求方式
curl -X POST -d[ata] 'p=abc' {url} 表单POST提交方式
curl -I {url} 仅输出返回Head
curl -i {url} 输出返回头和内容
curl -L {url} -L,跟随重定向跳转
curl -O {url} 原名下载文件到当前目录
curl -C -O {url} -C,断点续传
curl -o /opt/newfilename.zip {url} 下载到的目录及新名称
curl -# -o /opt/newfilename.zip {url} -#,显示进度条
curl -T {filename} ftp://{用户名}:{密码}@xxx.com/ -T,FTP上传文件
curl -O ftp://{用户名}:{密码}@xxx.com/filename.7z 凭证方式,FTP下载资源
curl -v telnet://www.baidu.com:80 测试地址及端口是否畅通 [--verbose] 详细过程
wget:第三方下载工具
wget {网络资源链接} {dir} 下载资源到指定目录
netstat:系统网络状态
netstat -a 全部的网络状态
netstat -i 显示网卡列表
netstat -pantu 连接中的网络及端口

Authority

命令 说明
chown -R {用户名}:{用户组} {作用目录} Change Owner;变更目录所属用户
chgrp -R {用户组} {作用目录} Change Group;变更目录所属群组
chgrp -R --reference={参考目录} {作用目录} Change Group;复制为相同的群组
chmod -R 754 {作用目录} Change Mode;权限设定(读/写/执行)

文件目录权限字母表示法

文件目录权限八进制数字表示法

应用样例:
指定(=)权限:chmod u=rwx,g=rx,o=r {path}
追加(+)权限:chmod u+x,g+wx,o+w {path}
去除(-)权限:chmod u-x,g-w,o-wx {path}
全部(ugo)追加某种权限:chmod +w,+x {path}

Process

命令 说明
ps Process Status;显示所有进程
ps -aux 所有进程,包括其它用户的
ps -auxf 所有关联(基于PID父子)进程的格式化(树形)方式展示
ps -auxfr 运行的进程,-all -user -excute -format -running
ps -aux --sort -pcpu 按CPU利用率倒序排列
ps -aux --sort -pmem 按内存利用率倒序排列
ps -aux --sort -pcpu,+pmem 按CPU内存利用率综合排序
ps -aux --sort -pcpu,+pmem | head -n 5 head过滤显示前n条
pidof {server-name} 横向打印出指定服务的所有(父子)进程标识
pgrep:Process grep 搜进程
pgrep {server-name} 纵向列出指定服务下所有(父子)进程标识
pkill {pid} 停止指定编号的进程运行
pidwait {server-name} [-e]
kill:停止进程的运行 / 毁灭进程
kill {Pid} 发送停止运行的信号
kill -l 列出命令 kill 终止运行的所有方式
kill [-15/-9] {Pid} 指定方式的终止 [15默认终止/9无条件终止]
pkill -F {pid-filename} 停止服务进程,-F 按文件中的PID
kill $(pidof {server-name}) 停止指定服务下的所有(父子)关联进程
killall {server-name} 停止指定服务下的所有(父子)关联进程
killall -l 列出命令 killall 关联终止的所有方式
killall [-kill/-term] {server-name} 指定方式的关联终止 [kill默认终止/term无条件终止]

System Control

命令 说明
Unit & Service
systemctl -a[ll] 显示所有已安装的列表
systemctl [-a] --type=service [所有|活动]的服务列表
systemctl | grep {关键字状态等} 模糊搜索
systemctl daemon-reload 重载所有变更的配置
systemctl cat {name} 查看指定(手动)配置文件信息
systemctl show {name} 查看底层全部默认配置信息
systemctl [enable|disable] {name} 设置开机启动
systemctl [is-enabled|is-active|is-failed] {name} 查看状态
systemctl list-units 已启动的详细列表,于内存中的
systemctl list-unit-files 已安装的状态列表
systemctl --state=failed|--failed 显示失败状态的列表
systemctl clean {name} 清理运行时、缓存、状态、日志或配置
systemctl [start|stop|restart|status|reload|kill] {name} 操作管理
Jobs
systemctl list-jobs 作业列表
systemctl cancel {job-name} 取消作业
Environment
systemctl show-environment 显示所有环境变量列表
systemctl set-environment key=val 设置一个或多个环境变量
systemctl unset-environment {key} 取消设置 环境变量
System
systemctl is-system-running 系统当前状态
systemctl list-machines 主机和容器 列表
systemctl default|rescue|emergency 进入系统模式:默认 | 挽救 | 紧急
systemctl -H {user}@{ip} {command} 远程主机操作,ssh 模式,--host
systemctl halt|poweroff|reboot|suspend|hibernate|hybrid-sleep 关机/断电/重启/内存休眠/磁盘休眠/混合休眠

Firewall

命令 说明
firewall-cmd --reload 重载
firewall-cmd --list-ports 查看
firewall-cmd --zone=public --add-port={新端口}/tcp --permanent 添加
firewall-cmd --zone=public --remove-port={端口号}/tcp --permanent 删除
firewall-cmd --add-forward-port=port={From-Port}:proto=tcp:toport={To-Port} 转发
firewall-cmd --add-forward-port=port={From-Port}:proto=tcp:toaddr={To-IP_Addr} 转发

History

命令 说明
history 列出 已执行过的命令列表记录
!! 再次执行 上一次命令,等同 向上键+Enter
!{row-number} 再次执行 历史记录列表中 指定行号的命令
!{prefix} 再次执行 以 prefix 开头的最后一个命令
!?{suffix} 再次执行 以 suffix 结尾的最后一个命令

System log

文件 命令 说明
/var/log/btmp lastb 登录失败的用户信息、时间、远程IP
/var/log/cron   记录定时任务 crontab 的执行情况
/var/log/dmesg dmesg 系统开机时,内核自检信息
/var/log/lastlog lastlog 所有用户最后一次登录信息
/var/log/maillog - 邮件收发详细信息
/var/log/messages - 系统常规综合日志
/var/log/secure - 系统安全日志;密码凭证、认证状况
/var/log/wtmp last 用户的登录注销启动停止信息
/var/log/audit/audit.log - 进程、事件、安全、监控、权限、网络

Configuration

目录/文件 命令 说明
/etc/hostname hostnamectl 主机名配置文件
/etc/hosts - 系统HOST配置文件
/etc/shells - 系统支持的 Shell
/etc/sysctl.conf sysctl 系统内核配置文件
/etc/pam.d/system-auth - 系统密码策略配置文件
/etc/yum.repos.d/ yum / dnf 系统镜像配置文件目录
/etc/ssh/sshd_config - SSH配置文件
/etc/security/limits.conf ulimit 系统资源限制配置文件
/usr/lib/systemd/system/ systemctl 系统服务默认配置文件目录
/etc/sysconfig/network-scripts/ifcfg-{网卡名} nmcli RHEL8网卡配置文件地址
/etc/NetworkManager/system-connections/{网卡名}.nmconnection nmcli RHEL9网卡配置文件地址

系统环境变量

profile

路径:/etc/profile,用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户生效。
当用户登录(login)时,文件会被执行,并从/etc/profile.d目录的配置文件中查找 shell 设置。
示例:新增环境变量:export ABC=xxx;运行生效:source /etc/profile

bashrc

系统级:位于/etc/bashrc,对所有用户生效。
用户级:位于~/.bashrc,仅对当前用户生效。
bashrc 文件只会对指定的 shell 类型起作用,bashrc 只会被 bash shell 调用。

bash_profile

bash_profile 单一用户有效,位于~/.bash_profile,可以理解为某一个用户的 profile 目录下。
这个文件同样也可以用于配置环境变量和启动程序,bash_profile 也会在用户登录(login)时生效。

对比

/etc/profile/etc/bashrc是系统全局环境变量设定;
~/.profile~/.bashrc用户Home目录下的私有环境变量设定,仅本用户生效。

中文支持

查看系统当前支持的语言字符集:localectl list-locales

若没有 zh_CN.UTF-8,查找中文语言安装包:dnf search *chinese*

安装简体中文语言包:dnf install langpacks-zh_CN.noarch -y

再次查看已支持的语言字符集:localectl list-locales

设置已支持的语言字符集:localectl set-locale zh_CN.UTF-8;重启后生效

SSH 优化

# 关闭不必要的验证过程(GSSAPIAuthentication 和 UseDNS)
# 1、搜索配置项
cat /etc/ssh/sshd_config -n | grep GSSAPIAuthentication
cat /etc/ssh/sshd_config -n | grep UseDNS
# 2、编辑配置项
vi /etc/ssh/sshd_config
# GSSAPIAuthentication 变更为 no
# UseDNS 变更为 no
# 3、:wq 保存退出配置文件
# 4、重启SSH服务,使其生效
systemctl restart sshd

应用升级

系统默认为官方提供的资源库,默认通过官方资源库升级应用,可设置为国内镜像源(参考 install
# 1、清空包管理器缓存(yum/dnf)
yum clean all
# 2、重新建立包管理器缓存索引
yum makecache
# 3、查看可升级的应用
yum check-update
# 4、升级指定软件
yum update {name}
# 5、全部升级,自动升级可升级的软件(相当于整个系统升级)
yum update
# 注:有些应用安装慢,必须等到出现单独一行的Complete!字样,才算完成。

第三方库 EPEL 的应用

EPEL 是由 Fedora 社区打造,属于 RHEL 的上游,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装了 EPEL 后,可通过 yum 安装来自于EPEL库的软件。

# 1、安装 epel-release
yum -y install epel-release
# 2、验证 epel-release 库的启用
yum repolist all    # 是否出现 epel 并默认 enabled
建议使用国内镜像源,可参考国内云镜像
查看(验证)安装后的效果
# 清理 yum 缓存,重新建立包管理器缓存索引
yum clean all && yum makecache
# 测试搜索安装包,显示出 来自于不同的库
yum list sys*   # 显示出的列从左到右依次是:包名.架构、版本号、来自库

第三方库 ELRepo 的应用

ELRepo 是用于 Enterprise Linux 软件包的RPM存储库。它支持Red Hat Enterprise Linux(RHEL)及其衍生版本,这里主要是为了用它来升级 Linux 内核 Kernel。

1、将 ELRepo 存储库安装到系统,参考官网:http://elrepo.org/tiki/HomePage
# 首先要导入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# CentOS7的安装
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
# CentOS8的安装
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
启用 ELRepo 的 elrepo-kernel 资源库(为后续内核升级做准备,或者忽略)
# 1、查看 ELRepo 库的配置文件
cat /etc/yum.repos.d/elrepo.repo
#
# 2、其中 ELRepo 的 elrepo-kernel 项默认为禁用,可启用 elrepo-kernel
# CentOS 8 方式启用 elrepo-kernel:
yum config-manager --set-enabled elrepo-kernel
# CentOS 7 方式启用 elrepo-kernel,编辑所属配置文件:vi /etc/yum.repos.d/elrepo.repo
# 找到 [elrepo-kernel] 下的 enabled 设为1,没有则在此区域追加一行。示例行:enabled=1
#
# 3、查看(验证)启用的资源库列表中是否包含 elrepo-kernel 库
yum repolist enabled
2、更换资源库的镜像源 使用国内镜像源,可参考清华大学 ELRepo 镜像使用帮助
也可使用如下命令方式变更镜像源
# 依据清华大学的使用帮助,命令方式如下:
# 1、mirrorlist=所在行全部加注释#
sed -i 's/^mirrorlist=/#&/g' /etc/yum.repos.d/elrepo.repo
# 2、域名 elrepo.org/linux 的替换
sed -i 's/elrepo.org\/linux/mirrors.tuna.tsinghua.edu.cn\/elrepo/g' /etc/yum.repos.d/elrepo.repo
3、更新 yum 可用资源库的引用缓存
# 清理 yum 缓存
yun clean all
# 生成新缓存
yum makecache
# (可选)测试搜索安装包,显示出 来自于不同的库
yum list libb*  # 显示出的列从左到右依次是:包名.架构、版本号、来自库
4、通过 ELRepo 库安装新内核
# 列出库中可用的最新内核版本(以下示例仅从 ELRepo 的 elrepo-kernel 库安装,ml:最新稳定版,lt:长期支持版)
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel-
# 安装指定版本(名称 kernel-ml:为前缀的整套安装)
yum --disablerepo="*" --enablerepo="elrepo-kernel" install kernel-ml
# 查看(验证)已安装的版本
yum list installed | grep kernel*
- 设置默认启动的内核版本,请参考 [默认内核设定] 节点

设定默认启动的内核

多内核下的默认内核设置:(内核的安装请参考 [通过 ELRepo 库安装新内核] 节点)

CentOS 7.x

# 1、查看当前使用内核
uname -sr
# 2、查看系统已有内核
cat /boot/grub2/grub.cfg | grep "CentOS Linux"
# 3、从已有内核中,设置默认启动内核
grub2-set-default 'CentOS Linux (3.10.0-1160.59.1.el7.x86_64) 7 (Core)'
# 4、验证默认内核
grub2-editenv list
# 5、(可选)删除前,查询所有内核名称
rpm -qa | grep kernel-
# 6、(可选)删除指定内核
yum remove kernel-3.10.0-1160.45.1.el7.x86_64
# 7、重启系统(新内核的应用)
reboot

CentOS 8.x

# 安装新内核后,系统自动设为默认启动内核
# 1、查看当前使用内核
uname -sr
# 2、查看系统已有内核
ls -l /boot/vmlinuz-*
# 3、从已有内核中,设置默认启动内核
grubby --set-default=/boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64
# 4、(可选)删除前,查询所有内核名称
rpm -qa | grep kernel-
# 5、(可选)删除指定内核
yum remove kernel-core-4.18.0-348.el8.x86_64
# 6、重启系统(新内核的应用)
reboot

Static IP

######################## RHEL 8 ########################
#
# 一、修改配置文件
# 1、打开对应网卡的配置文件
vi /etc/sysconfig/network-scripts/ifcfg-{网卡名}
# 2、原有属性值变更
BOOTPROTO=static
ONBOOT=yes
# 3、追加配置项
IPADDR=192.168.1.131
PREFIX=24
GATEWAY=192.168.1.1
# 4、重启网卡(刷新网卡驱动)&& 重启网络服务(centos7服务名=network)
nmcli d reapply enp0s8 && systemctl restart NetworkManager
#
# 二、nmcli 命令行修改方式
# 命令修改指定网卡配置文件
# 修改自启动(ONBOOT) connection.autoconnect = yes
# 修改 ipv4.method = 手动
# 修改 ipv4.addresses = IP
nmcli c m enp0s8 connection.autoconnect yes ipv4.method manual ipv4.addresses 192.168.1.181/24
# 重启网卡(刷新网卡驱动)&& 重启网络服务
nmcli d reapply enp0s8 && systemctl restart NetworkManager
#
#
######################## RHEL 9 ########################
#
# 一、修改配置文件
# 1、打开对应网卡的配置文件
vi /etc/NetworkManager/system-connections/{网卡名}.nmconnection
# 2、属性值变更
[ipv4]
method=manual
address=192.168.1.103/24
# 3、重启网卡(刷新网卡驱动)&& 重启网络服务
nmcli d reapply enp0s8 && systemctl restart NetworkManager
#
# 二、nmcli 命令行修改方式
# 命令修改指定网卡配置文件
# 修改自启动(ONBOOT) connection.autoconnect = yes
# 修改 ipv4.method = 手动
# 修改 ipv4.addresses = IP
nmcli c modify enp0s8 ipv4.method manual ipv4.addresses 192.168.1.181/24
# 重启网卡(刷新网卡驱动)&& 重启网络服务
nmcli d reapply enp0s8 && systemctl restart NetworkManager

内网优化 - hosts

内网中,计算机的相互访问,都需要通过DNS的解析,需要一定的资源消耗和耗时,并发状态下,造成一定的效率瓶颈;
计算机之间的访问方式:DNS缓存 -> 本机 hosts -> DNS服务器;
因此,为内网计算机之间的相互访问创造捷径,绕过DNS服务器,优化hosts将有显著的响应提升。

# 1、编辑配置hosts文件
vi /etc/hosts
# 2、为每台计算机hosts配置所有计算机的 IP-计算机名 的映射关系
192.168.56.101 cos78-cluster-a
192.168.56.102 cos78-cluster-b
192.168.56.103 cos78-cluster-c
# 注:修改了某台计算机名后,需要每台hosts文件对应的名称都要变更。

文件同步 - rsync

单机/远程文件同步,支持全量/增量,相当于scp、cp、rm 命令,但优于它们。

内网优化 - 禁用IPv6

IPv6的出现是为了解决IPv4的使用量不足,所以在内网中,IPv6是多余的。

临时方式

# 打开 sysctl.conf 文件
vi /etc/sysctl.conf
# 追加/覆盖配置项(指定网卡或全部)
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.all.disable_ipv6 = 1
# 内核重新加载配置项(重启系统后失效)
sysctl -p

永久方式

# 按网卡名称设置
# 假设网卡名称是 enp0s8
# 禁用/启用 ipv6.method = disabled/auto
nmcli c modify enp0s8 ipv6.method disabled
# 重载网卡设备
nmcli d reapply enp0s8

系统安全 - SELinux

SELinux(security enhanced linux)安全增强型Linux系统,它是一个linux内核模块,也是Linux的一个安全子系统。Selinux的主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
配置文件路径:/etc/selinux/config

配置文件中的 SELINUXTYPE 提供了三种策略方式:

  • targeted - 目标进程受到保护(默认)
  • minimum - 修改目标策略。仅保护选定的进程
  • mls - 多级安全保护

SELinux相当于一个插件(内核级的插件),他约束了各个应用的动作限制,用布尔值的方式开启关闭某项应用的行为。

状态 - sestatus

SELinux Status,列出 SELinux 的当前状态信息。

示例:

- 当前状态信息:sestatus
- 当前上下文信息:sestatus -v
- 目标的策略信息列表:sestatus -b

模式 - getsebool / setsebool

get/set SELinux boolean,获取/设置 SELinux 的启用/禁用

示例:getsebool -a / setsebool -P {目标功能} 0/1

- 列取查看所有目标的启用状况:getsebool -a
- 设置指定目标(动作)行为的启用:setsebool -P ftpd_full_access 1

策略 - getenforce / setenforce

get/set enforce,查看/设置 SELinux 的启用/禁用;(临时性,重启后失效)

  • Enforcing / 1:强制启用
  • Permissive / 0:放开限制,警告方式

示例:

- 查看 SELinux 当前模式:getenforce
- 设置 SELinux 运行模式:setenforce 1

管理 - semanage

SELinux Manage,设置选项 文件、目录、网络、端口、设备、模块、用户、接口等的权限管理。

示例:
- 搜索指定应用(名称)的指定项(port)使用情况:semanage port -l | grep http_port_t
- 给指定应用(名称)添加一个指定协议(tcp)的端口号:semanage port --add --type mysqld_port_t --proto tcp 33061

选项 参数 说明
import   导入本地自定义项
export   导出本地自定义项
login   管理Linux用户和SELinux受限用户之间的登录映射
user   管理SELinux受限用户的角色和级别
port -p, --proto 管理网络端口,端口协议(tcp|udp) 或版本(ipv4|ipv6)
ibpkey   管理无线通信ibpkey
ibendport   管理无线通信端口
interface   管理网络接口
node   管理网络节点
fcontext -f {f,d,p} 管理文件映射,文件类型:file、directory、piping
boolean --on, --off 功能开关(0/1),启用 / 禁用,-1 / -0
module   管理SELinux策略模块
permissive   管理进程类型强制模式
dontaudit   策略中的dontaudi规则 Disable/Enable
semanage 命令 选项 通用参数 说明
-l, --list | -a, --add | -m, --modify | -e, --enable 列出 | 新增 | 修改 | 启用
-d, --delete / --disable 删除 / 禁用项
-D, --deleteall 删除全部
-r, --range / --remove 范围 / 移除
-t, --type 作用到的目标应用名称

永久关闭禁用 SELinux

# 1、设置配置文件,彻底关闭SELinux
# - 1.1、查看SELinux配置文件
cat /etc/selinux/config
# - 1.2、设置SELinux为关闭:SELINUX=disabled
# - 1.3、保存退出配置文件
sed -i '/^SELINUX/s/disabled/enforcing/g' /etc/selinux/config
# 2、验证,重启系统后查看SELinux当前状态
getenforce

系统优化 - Swap (交换分区)

虚拟内存,当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。
Swap分区运行性能不够快,或禁用或少用,极端情况下再启用,调整启用条件参数。

# 1、(三种方式)查看现状
# - 1.1、检查服务器上的Swap状态
swapon -d 或 swapon -s
# - 1.2、查看整个内存的使用情况(其中包括了实体内存、Swap、共享内存段、系统核心使用的缓冲区等)
free -h
#
# 2、少用,调整使用概率(设置极端情况下的使用条件)
# - 2.1、查看现启用的触发值(物理内存剩余的百分比值)
cat /proc/sys/vm/swappiness
# - 2.2、查看是否已手动配置
vi /etc/sysctl.conf
# - 2.3、追加/修改配置项,变更触发参数(物理内存剩余的百分比值)
vm.swappiness = 1
# - 2.4、内核重新加载配置项(或重启系统)
sysctl -p
#
# 3、彻底关闭/开启
# 关闭Swap
swapoff -a
# 开启Swap
swapon -a
#
# 4、检查修改结果
# - 4.1、列出内核所有配置参数,从中查找[vm.swappiness]项,是否已更新为新值
sysctl -a
# - 4.2、或查看内核指定配置项的值
sysctl -q vm.swappiness

系统优化 - Limits

系统可用资源的限制,对于系统的稳定运行非常重要,可按实际情况优化提升性能;配置文件为:/etc/security/limits.conf

都限制了谁:
 - a user name
 - a group name, with @group syntax
 - the wildcard *, for default entry
 - the wildcard %, can be also used with %group syntax, for maxlogin limit

限制了哪些 type:
 - "soft" for enforcing the soft limits
 - "hard" for enforcing hard limits

限制了哪些资源 item:
 - core : limits the core file size (KB)
 - data : max data size (KB)
 - fsize : maximum filesize (KB)
 - memlock : max locked-in-memory address space (KB)
 - nofile : max number of open file descriptors
 - rss : max resident set size (KB)
 - stack : max stack size (KB)
 - cpu : max CPU time (MIN)
 - nproc : max number of processes
 - as : address space limit (KB)
 - maxlogins : max number of logins for this user
 - maxsyslogins : max number of logins on the system
 - priority : the priority to run user process with
 - locks : max number of file locks the user can hold
 - sigpending : max number of pending signals
 - msgqueue : max memory used by POSIX message queues (bytes)
 - nice : max nice priority allowed to raise to values: [-20, 19]
 - rtprio : max realtime priority

查看所有项的当前值:ulimit -a

按各项提示参数查看单个限制;如 open files 项:ulimit -n

限制项的配置

以下以 open files 为例:带上类型 S[oft] / H[ard],带上项名 n[ofile]

  • Shell 级设置
    临时方式:ulimit -SHn 20480
    仅在当前Shell生效,重启失去Shell后失效
  • 用户级设置
    永久方式:于 limits.conf 中追加配置行
    行格式:{user|group} {type} {item} {value}
    行案例:*  soft  nofile  20480
    通常 soft / hard 都要配置,确保两者都可用,重启生效
  • 系统级设置
    open files:vi /proc/sys/fs/file-max

系统优化 - 减少不必要的I/O写入

读取磁盘数据时,关闭文件元数据的写入(如最后访问时间等)
确保在挂载所有磁盘时使用noatime时间以及挂载所有目录时使用nodir时间。

# 打开配置文件
vi /etc/fstab
# 相应磁盘default后追加[,noatime,nodiratime]
# 样例效果:
# /dev/mapper/cl-root     /               xfs     defaults,noatime,nodiratime        0 0
# :wq 保存退出后,reboot 重启系统后生效

系统优化 - 内核参数优化

通过在 /etc/sysctl.conf 中追加内核参数来永久保存更改
配置项从 /etc/sysctl.conf 中移除后,系统还原为默认值

# 手动设定 Kernel 内核的配置文件
vi /etc/sysctl.conf
#
# 修改/追加 配置项,用以改变内核默认参数值(1:启用,0:关闭)
fs.file-max = 65535                     # 表示最大可以打开的句柄数;
fs.aio-max-nr = 1048576                 # 最大并发I/O请求数
net.ipv4.tcp_max_tw_buckets = 6000      # TCP最大的连接数,默认为32768
net.ipv4.tcp_fin_timeout = 10           # 缩短TCP无用状态的超时,更有效的重新利用或销毁,默认为60
net.ipv4.tcp_tw_reuse = 1               # 回收的TCP可重新利用
net.ipv4.tcp_syncookies = 1             # 当出现SYN等待队列溢出时,启用cookies进行处理。
net.ipv4.tcp_keepalive_time = 120       # 连接健康检测,默认7200秒
net.ipv4.tcp_keepalive_intvl = 7        # 连接健康检测间隔,默认75秒
net.ipv4.tcp_keepalive_probes = 3       # 连接健康检测连续成功次数判定,默认9
net.ipv4.tcp_rmem = 32768 131072 16777216   # 接收窗口尺寸的最小,默认,最大值
net.ipv4.tcp_wmem = 8192 262144 16777216    # 发送窗口尺寸的最小,默认,最大值
net.ipv4.tcp_mem = 786432 1048576 1572864   # 发送窗口尺寸的最小,默认,最大值
net.core.somaxconn = 16384              # 网络连接队列最大积压数量 默认4096 * 4
net.core.rmem_max = 16777216            # 操作系统接收缓冲区最大值
net.core.wmem_max = 16777216            # 操作系统发送缓冲区最大值
net.core.rmem_default = 262144          # 操作系统接收缓冲区的默认大小
net.core.wmem_default = 262144          # 操作系统发送缓冲区的默认大小
#
# 内核重新加载配置项后生效
sysctl -p
# 查看所有内核参数生效后的配置
sysctl -a
# 涉及到网络的,重启网卡(CentOS7名称=network)
systemctl restart NetworkManager

Shell 命令解释器

与内核交互的脚本语言,与内核互动的桥梁;Command 透过 Shell 的解析,被内核所识别,并反馈内核的执行结果。所以 Shell(外壳)是内核的外壳。

常见的 Shell

sh:全称 Bourne Shell;是最早的 Shell,出现于 Unix,衍生版本有 ash / csh /tcsh / bash,或者 python / php 都可以用;大多数 Linux 系统都把 bash 作为默认 Shell,但都支持 sh。

所以:在有些 Docker 容器内,因为需要最精简的微型系统,bash 不一定会支持,但都支持 sh。

查看系统支持的 Shell:cat /etc/shells

Shell 的使用

也就是执行命令,直接敲命令,由当前默认Shell负责执行:ls -l
也可以的方式:sh -c 'ls -l'

或批量脚本打包成文件,批量执行,文件后缀不限制,通常是.sh;
文件首行指明要使用的 Shell:#!/bin/bash
执行打包命令的方式:sh {filename.sh}/ bash {filename.sh}
或者将文件设置为可执行的权限:chmod +x {filename.sh}后;可以直接filename.sh达到运行的效果;
以上方式会重开一个子Shell,由子Shell负责运行脚本,与当前父Shell无关;所以子Shell中对系统的变更设置当前不会生效。

当前 Shell 运行脚本的方式 . {filename.sh}/source {filename.sh}
比如:要变更系统的环境变量,这种运行方式就会及时生效。

Shell 语法

a=5:变量并赋值,等号两侧不能有空格

readonly a=5:常量,只读

$((5+3))/$[5+3]/expr 5+3:运算格式

unset a:撤销变量,释放内存所占空间

$0:书写命令时的 sh 文件全名(可能的路径 + 名称)

${3}:参数位置的值;10以内可以省略括号

$#:参数总个数

$*:串起来的参数,空格分隔

$@:串起来的参数形成数组

$?:上次命令的执行结果(是否执行失败;0:成功)

^o^y

自定义内存剩余输出

free -m | sed -n '2p' | awk '{print "总计:"$2"M,剩余:"$4"M,占比:"$4/$2*100"%"}'

/bin/bash 美化

单引号的系统变量
\[ 的开始 \] 的结束
\033 转义并兼容ASCII的方式
[ 设定的开始 m 设定的结束
字体编码;背景色编码;前景色编码

# Style 1 简洁
sed -ie "/^export PS1=/d;/^export PS2=/d;/^export PS4=/d" /etc/bashrc && \
echo "export PS1='\[\033[00;107;36m\] \u \[\033[00m\]\[\033[00;00;46m\] \W \[\033[00m\]\[\033[00;00;36m\]·>\[\033[00m\] '" >> /etc/bashrc && \
echo "export PS2='\[\033[00;00;36m\]·>\[\033[00m\] '" >> /etc/bashrc && \
echo "export PS4='\[\033[00;00;36m\]+\[\033[00m\] '" >> /etc/bashrc && \
source /etc/bashrc
# Style 2 普通
sed -ie "/^export PS1=/d;/^export PS2=/d;/^export PS4=/d" /etc/bashrc && \
echo "export PS1='\[\033[00;107;36m\] \u \[\033[00m\]\[\033[00;00;46m\] \H \[\033[00m\]\[\033[00;00;36m\] \W \[\033[00m\]\[\033[00;00;38m\]\A\[\033[00m\]\[\033[38;5;208m\] ·> \[\033[00m\]'" >> /etc/bashrc && \
echo "export PS2='\[\033[38;5;208m\]>\[\033[00m\] '" >> /etc/bashrc && \
echo "export PS4='\[\033[38;5;208m\]+\[\033[00m\] '" >> /etc/bashrc && \
source /etc/bashrc
# Style 3 带执行反馈提示
sed -ie "/^export PS1=/d;/^export PS2=/d;/^export PS4=/d" /etc/bashrc && \
echo "export PS1='\[\033[107m\]\[\033[38;5;238m\] \u\[\033[38;5;246m\]@\[\033[00;107;36m\]\H \[\033[00m\]\[\033[00;00;46m\] \W \[\033[00m\]\[\033[38;5;$(echo $(($?==0?208:196)))m\]·> \[\033[00m\]'" >> /etc/bashrc && \
echo "export PS2='\[\033[38;5;208m\]>\[\033[00m\] '" >> /etc/bashrc && \
echo "export PS4='\[\033[38;5;208m\]+\[\033[00m\] '" >> /etc/bashrc && \
source /etc/bashrc

/bin/bash 美化风格

公共DNS

境内 223.5.5.5 官网:阿里公共DNS
180.76.76.76 官网:百度公共DNS
境外 8.8.8.8 官网:Google Public DNS
1.1.1.1 官网:One.One.One.One DNS

配置DNS

echo 'nameserver 223.5.5.5' >> /etc/resolv.conf  VM 自动读取物理机的配置

速度测试排名

这里列出了 阿里巴巴、百度、Google、One.One.One.One 基本代表了境内外的最强音。测试结果如下图:

明面上,阿里巴巴速度最快,毕竟是境内的区域优势。
但,考虑到缓存的因素,Google 的实力就显现出来了。

测端口技巧

telnet {IP} {Port} 成功返回空白画面

nc -nvv {IP} {Port} 成功返回 succeeded! 失败返回 Connection refused

curl {IP}:{Port} 成功返回空应答 Empty reply,失败返回 Couldn't connect

记录 Debian 12+

# Debian 12 编辑网卡信息
vim /etc/network/interfaces
iface enp0s5 inet static
gateway 13.13.1.1
address 13.13.1.11/16
# iface enp0s5 inet6 auto (内网没必要的ipv6)
#
# 重启网卡生效
systemctl restart networking
#
# Debian 12 网关服务管理
systemctl status nftables
# root 账号允许 ssh 远程
vim /etc/ssh/sshd_config
PermitRootLogin yes
systemctl restart sshd
# Ubuntu 22 安装时的网络配置
Subnet:  192.168.1.0/24   # 网关(最后只能是0/24)
Address: 192.168.1.107    # IP
Gateway: 192.168.1.1      # 网关
Name Servers: 192.168.1.1 # 网关
Search domains:           # 不填
#
# ubantu 22 安装后的网卡配置
vim /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  ethernets:
    enp0s5:
      addresses: [13.13.1.13/24]
      nameservers:
        addresses: [13.13.1.1]
      routes:
      - to: default
        via: 13.13.1.1
  version: 2
#
# 刷新网卡配置
netplan apply
#
# 重启网卡生效
ip link set {net-name} up   # 启动
ip link set {net-name} down # 关闭
ip link set {net-name} down && ip link set {net-name} up    # (关闭+启动=)重启
#
# Ubuntu 22 网关服务
systemctl status ufw
# Ubuntu 22 ssh 远程
vim /etc/ssh/sshd_config
# 许可 root 远程 & 生效
PermitRootLogin yes
systemctl restart sshd
posted @ 2021-05-23 18:50  Sol·wang  阅读(1444)  评论(0编辑  收藏  举报