持续更新…
检查当前系统发行版本:
# CentOS
cat /etc/redhat-release
# Debian
cat /etc/os-release
查看底层硬件信息:
dmidecode
修改主机名:
hostnamectl set-hostname [hostname]
查看修改时区:
timedatectl
timedatectl list-timezones
timedatectl set-timezone Asia/Shanghai
# timedatectl set-timezone Asia/Hong_Kong
# timedatectl set-timezone Asia/Singapore
临时修改 DNS 服务器:
vim /etc/resolv.conf
# 修改自定义 NS:
nameserver 1.1.1.1
nameserver 8.8.4.4
强制退出用户:
pkill -kill -t pts/[序号]
查看端口占用:
yum/apt install net-tools
netstat -ntlp
新建用户不允许登录:
useradd -s /sbin/nologin <new username>
查看文件/文件夹大小:
du [文件/文件夹名称] -h
查看指定目录下文件大小:
du -h --max-depth=1 /home
查看大于 800M 的文件:
find / -size +800M -exec ls -lh {} \;
Debian 双栈网络下 IPv4 优先,编辑 /etc/gai.conf
文件,找到 #precedence ::ffff:0:0/96 100
一行取消注释,或者直接使用命令:
sed -i 's/#precedence ::ffff:0:0\/96 100/precedence ::ffff:0:0\/96 100/' /etc/gai.conf
Shell 命令行彩色显示 vim ~/.bashrc
,添加下面代码之后 source ~/.bashrc
即可生效。
if [ -z "$PS1" ]; then
return
fi
alias ls='ls --color=auto'
alias ll='ls --color=auto -lAF'
PS1='\[\033[01;31m\]\u\[\033[01;33m\]@\[\033[01;36m\]\h:\[\033[01;33m\]\w\[\033[01;35m\]\$ \[\033[00m\]'
升级 CentOS7 内核
1. 引入 elrepo 库
首先 yum update
更新一下,CentOS可以使用第三方库ELRepo将内核升级到最新版本。
导入公钥:
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
2. 升级内核
列出可用的系统内核相关包:
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
升级内核:
yum --enablerepo=elrepo-kernel install kernel-ml -y
升级最新版内核 headers:
yum --enablerepo=elrepo-kernel install kernel-ml-headers -y
如果升级headers报错,则需要先卸载原版内核 headers ,然后再安装最新版内核 headers。执行命令:
yum remove kernel-headers
3. 设置默认内核
设置 GRUB 默认的内核版本,打开并编辑 /etc/default/grub
并设置 GRUB_DEFAULT=0
,将 GRUB 初始化页面的第一个内核将作为默认内核。
vim /etc/default/grub
> GRUB_TIMEOUT=5
> GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
> GRUB_DEFAULT=0 #把这里的saved改成0
> GRUB_DISABLE_SUBMENU=true
> GRUB_TERMINAL_OUTPUT="console"
> GRUB_CMDLINE_LINUX="crashkernel=auto console=ttyS0 console=tty0 panic=5"
> GRUB_DISABLE_RECOVERY="true"
接下来运行下面的命令来重新创建内核配置:
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
重启机器,检查系统当前内核版本。
4. 删除旧的多余内核
查询系统中全部的内核:
rpm -qa | grep kernel
删除旧的内核:
yum remove [内核全名称]
一键删除多余内核:
yum remove $(rpm -qa | grep kernel | grep -v $(uname -r))
检查 boot 剩余空间:
df -h /boot
升级 Debian10 内核
1. 修改软件源
先备份,然后修改:
vim /etc/apt/sources.list
顺便软件源修改为官方默认:
deb http://deb.debian.org/debian buster main
deb-src http://deb.debian.org/debian buster main
deb http://deb.debian.org/debian-security/ buster/updates main
deb-src http://deb.debian.org/debian-security/ buster/updates main
deb http://deb.debian.org/debian buster-updates main
deb-src http://deb.debian.org/debian buster-updates main
# Debian Buster Backports
deb http://deb.debian.org/debian buster-backports main
apt update
2. 安装最新内核
查看内核:
apt search linux-image | grep buster-backports
升级需要的内核版本或者直接升级最新内核:
apt install -t $(lsb_release -sc)-backports linux-image-cloud-$(dpkg --print-architecture) linux-headers-cloud-$(dpkg --print-architecture) --install-recommends -y
更新内核启动顺序:
update-grub
删除旧内核:
dpkg -l | grep linux-image
apt purge [kernel name]
查看线路与测速
1. 开启 BBR 拥塞控制算法
你可以使用下面的命令检查当前可用的拥塞算法:
sysctl net.ipv4.tcp_available_congestion_control
Linux 内核在 2.6.19 后使用 Cubic 算法作为默认的 TCP 拥塞算法,它是一种较为温和的拥塞算法,使用三次函数作为其拥塞窗口的算法,并且使用函数拐点作为拥塞窗口的设置值。这里为了更好的体验,建议开始谷歌 BBR 算法(只支持内核 4.9 及以后的版本),多数情况下使用 BBR 可以获得显著的网络吞吐量的提升和延迟的降低:
vim /etc/sysctl.conf
添加下列内容:
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
加载参数:
sysctl -p
之后可以确认一下当前使用了哪一种拥塞算法:
sysctl net.ipv4.tcp_congestion_control
2. 路由与速度测试
-
使用 mtr 或者更直观的 besttrace 查看回程线路;
-
使用 Unixbench 测试 CPU 性能;
-
使用 bench.sh 或者 superbench 测试到不同运营商的下载速度:
wget -qO- bench.sh | bash
或者
wget -qO- git.io/superbench.sh | bash -s info
wget -qO- git.io/superbench.sh | bash -s io
wget -qO- git.io/superbench.sh | bash -s speed
wget -qO- git.io/superbench.sh | bash -s fast
wget -qO- git.io/superbench.sh | bash -s share
而更准确测试 VPS 到本地速度的方法是使用 iperf3,VPS 和本地都需要安装:
apt install iperf3
一些常用命令,完整的命令可通过 iperf3 --help
查看
- -s, –server:iperf 服务端模式,默认启动的监听端口为 5201,eg:
iperf -s
- -c, –client host:iperf 客户端模式,eg:
iperf -c x.x.x.x
- -i, –interval:每次打印报告的时间间隔,单位为秒,eg:
iperf3 -c x.x.x.x -i 2
- -p, –port:指定服务端监听的端口或客户端所连接的端口
- -u, –udp:采用 UDP 协议测试,不带该参数表示采用 TCP 协议
- -t, –time:指定测试数据传输的总时间,默认为 10 秒
- -P, –parallel:指定并发连接数,越高越能测试到速度极限
- -R, –reverse:运行反向测试,即下载测试(服务端发送数据,客户端接收数据)
例如在本地测试 10 个并发的下载速度,测试时间为 60 秒(服务端运行 iperf3 -s
,并且记得防火墙打开相应的端口):
iperf3 -c x.x.x.x -p 5201 -t 60 -P 10 -R
- 使用 YABS (Yet-Another-Bench-Script) 测试综合性能:
curl -sL yabs.sh | bash -s -- -{fdighr459}
- -f/-d 跳过磁盘 io 测试
- -i 跳过 iperf 网络速度测试
- -g 跳过 Geekbench 性能测试
- -h 查看帮助信息和本地测试环境情况
- -r 减少 iperf 网络测试的节点以节省流量
- -4 替换默认的 Geekbench 6 性能测试为 Geekbench 4 版本
- -5 替换默认的 Geekbench 6 性能测试为 Geekbench 5 版本
- -9 同时进行 Geekbench 4 和 Geekbench 5 性能测试
挂载硬盘
使用 fdisk -l
开查看当前磁盘情况
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 41943039 20458496 8e Linux LVM
# 这个就是新的硬盘
# 记下 /dev/sdb 这个名称
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
1. 分区
使用过 fdisk /dev/sdb
来进行分区操作
- n:添加一个分区
- P:主分区,最多可以4个主分区
- e:扩展分区,linux上扩展分区只能有1个,扩展分区创建后不能直接使用,还要在扩展分区上创建逻辑分区。
- w:写入磁盘
2. 格式化分区
使用命令:
mkfs.ext4 /dev/sdb
EXT3与EXT4区别:
EXT3
- 最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件
- Ext3目前只支持32000个子目录
- Ext3文件系统使用32位空间记录块数量和i-节点数量
- 当数据写入到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块
EXT4
- Ext4的文件系统容量达到1EB,而文件容量则达到16TB
- 理论上支持无限数量的子目录
- Ext4文件系统使用64位空间记录块数量和i-节点数量
- Ext4的多块分配器支持一次调用分配多个数据块
3. 挂载使用
在根目录下创建data目录:
mkdir /mnt/data
将/dev/sdb挂载到/data下:
mount /dev/sdb /mnt/data
使用 df
命令查看是否挂载成功,新创建的分区不能开机自动挂载,每次重启机器都要手动挂载,设置开机自动挂载需要修改 /etc/fstab
文件,在最后添加一行:
/dev/sdb /data ext4 defaults 1 2
*注:
- defaults = rw, suid, dev, exec, auto, nouser, and async
- 1:需要dump设置为1;不需要dump设置为2
- 2:开机时检查顺序,非boot文件系统为1,其它文件系统都为2,如要检查就为0
扩容 root 分区
CentOS安装时默认最多给root分区50G容量,其余的会分配到home分区,一段时间后root空间就不够用,因此需要扩容。
划分空间会删除所有数据,先备份home分区数据:
tar cvf /tmp/home.tar /home
卸载home文件系统:
umount /home
如果提示无法卸载,是因为有进程占用/home
,终止进程:
fuser -km /home/
删除/home所在的lv
lvremove /dev/mapper/centos-home
扩展/root所在的lv(增加512G):
lvextend -L +512G /dev/mapper/centos-root
扩展/root文件系统
xfs_growfs /dev/mapper/centos-root
重新创建home lv
,这里home的大小自己决定,先创建一个1G的home lv
,然后再将所有的空闲分区追加到home lv
lvcreate -L 1G -n /dev/mapper/centos-home
lvextend -l +100%FREE /dev/mapper/centos-home
创建home文件系统:
mkfs.xfs /dev/mapper/centos-home
挂载home文件系统:
mount /dev/mapper/centos-home
恢复home文件:
tar xvf /tmp/home.tar -C /home/
cd /home/home/
mv * ../
unzip 解压中文乱码
zip 格式中并没有指定编码格式,Linux 下的默认编码是 UTF8,而在 Windows 下生成的 zip 文件中的编码是 GBK/GB2312 等,因此,这些 zip 文件在 Linux 下解压时会出现乱码问题,解决办法是加上 -O
参数,但多数 Linux 发行版本中安装的 unzip 并不支持,因为官方太高冷(xx),所以只有通过补丁的方式添加:
git clone https://github.com/ikohara/dpkg-unzip-iconv
cd dpkg-unzip-iconv
make source
make build-dep
make
make install
安装好后就可以通过以下命令进行解压了:
unzip -O cp936 file.zip
添加 SWAP 交换分区
首先使用 dd 命令创建一个文件作为 swap 区:
dd if=/dev/zero of=/swapfile bs=1M count=512
其中名字为 swapfile,大小为 512M
将其转化为 swap 文件:
mkswap /swapfile
修改所有者和权限:
chown root:root /swapfile
chmod 0600 /swapfile
激活 swap:
swapon /swapfile
设置系统重启后依旧生效,打开 /etc/fstab
文件,在最后面加上一行:
/swapfile swap swap defaults 0 0
验证交换空间是否处于活动状态:
swapon --show
如果想要删除 swap 交换分区,首先停用运行交换空间:
swapoff -v /swapfile
在 /etc/fstab
中删除前面添加的交换文件启动设置:
/swapfile swap swap defaults 0 0
最后,删除实际的文件:
rm /swapfile
如果你认为这篇文章还不错,可以考虑为我充电 ⚡️