持续更新…

检查当前系统发行版本:

# 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. 路由与速度测试

  1. 使用 mtr 或者更直观的 besttrace 查看回程线路;

  2. 使用 Unixbench 测试 CPU 性能;

  3. 使用 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
  1. 使用 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

如果你认为这篇文章还不错,可以考虑为我充电 ⚡️