本人折腾Debian的一些记录,有需要的可以参考一下。本文所用到的命令,请先确保已获得root权限执行。
1.更新和升级系统中已安装的软件包
apt-get update && apt-get upgrade &&; apt-get update --fix-missing
•apt-get update:更新可用软件包的列表。这个命令会检查软件源中是否有新的软件包或更新,并下载它们的信息,以便后续的安装和升级操作可以使用最新的软件包列表。
•apt-get upgrade:升级已安装的软件包。这个命令会根据最新的软件包列表,将已安装的软件包升级到最新版本。
•apt-get update --fix-missing:修复可能由于软件源列表信息不完整而导致的问题。如果在第一步中更新软件包列表时出现错误,这个命令可以尝试修复这些错误。
• 注:如果用的不是国内源建议更换为国内源,更换源脚本太长我就不提供了,搜索一下Debian怎么换源即可。如果用的是Zy143L大佬的抖音9.9 GT106 Debian固件的话要先执行一下apt-mark hold systemd && apt-mark hold libsystemd0将这俩自动更新关闭,不然会导致按键双击关机失效。
2.安装一些常用的软件包
apt-get install curl wget nano vim busybox iptables iproute2 cpufrequtils
• curl:用于在命令行中传输数据的工具。
• wget:用于下载文件的命令行工具。
• nano:一个简单易用的文本编辑器。
• vim:一个强大的文本编辑器,常用于程序开发和系统配置。
• busybox:一个适用于嵌入式系统和单片机的工具集,包含了大部分基本的Linux工具。
• iptables:用于配置Linux防火墙的工具。
• iproute2:用于管理网络连接和路由的工具。
• cpufrequtils:用于管理CPU频率的工具。
3.清理系统中不需要的软件包和日志文件
apt-get autoremove && apt-get clean && apt-get autoclean && journalctl --vacuum-size=5M
• apt-get autoremove:卸载已经不再需要的软件包。这个命令会移除已经安装但是没有被其他软件所依赖的软件包。
• apt-get clean:清理已经下载的软件包文件。这个命令会删除已经下载并安装的软件包的本地缓存文件,以释放磁盘空间。
• apt-get autoclean:清理过期的软件包。这个命令会删除已经过期的软件包,但是保留最新的软件包版本的本地缓存文件,以便以后重新安装。
• journalctl --vacuum-size=5M:缩减系统日志文件。这个命令会删除旧的系统日志文件,只保留最近的5M大小的日志文件。
4.创建swap/zram虚拟内存
# 创建swap虚拟内存
dd if=/dev/zero of=/root/swapfile bs=1M count=512
mkswap /root/swapfile
swapon /root/swapfile
• 创建一个大小为512MB虚拟内存其命名为swapfile,保存在/root目录下。然后格式化为交换分区文件和启用交换分区文件。
# 创建zram虚拟内存
modprobe zram num_devices=1
zramctl --find --size 512M --algorithm lz4 --streams 4
mkswap /dev/zram1
swapon -p 0 /dev/zram1
• 加载zram内核模块,并指定设备数量为1。创建一个512MB大小的zram设备,并使用lz4算法进行压缩,同时将数据分成4个流。将zram设备格式化为swap分区,启用zram设备,并设置优先级。
• swapon -a:启用所有swap分区。
• swapoff -a:禁用所有swap分区。
• swapon --show或swapon -s:显示当前系统中已启用的swap分区。
• swapon -p 或swapon --priority:将指定的swap分区设置为指定的优先级。优先级越高的swap分区,系统越倾向于将内存数据转移到该分区中。
5.修改cpu频率
#先安装cpufrequtils工具
apt-get install cpufrequtils
# 设置cpu模式
cpufreq-set -g conservative
# 调整cpu频率上下限
cpufreq-set -d 200000
cpufreq-set -u 800000
#查看CPU频率和调度信息
cpufreq-info -o
#查看cpu当前频率
cpufreq-info -c 0 -f -m
cpufreq-info -c 1 -f -m
cpufreq-info -c 2 -f -m
cpufreq-info -c 3 -f -m
#查看当前cpu支持模式
cpufreq-info -g
• powersave 是无论如何都只会保持最低频率的所谓“省电”模式;
• userspace 是自定义频率时的模式,这个是当你设定特定频率时自动转变的;
• ondemand 默认模式。一有cpu计算量的任务,就会立即达到最大频率运行,等执行完毕就立即回到最低频率;
• conservative 保守模式,会自动在频率上下限调整,和ondemand的区别在于它会按需分配频率,而不是一味追求最高频率;
• performance 顾名思义只注重效率,无论如何一直保持以最大频率运行。
• schedutil 可以动态地调整CPU的频率和电压来平衡性能和功耗,会根据负载情况动态调整。
6.TRIM优化
fstrim -v /
• fstrim是一个用于在Linux系统中进行TRIM操作的命令行工具,可以用来清理SSD硬盘上的闲置块,提高SSD硬盘的性能和寿命。
7.关闭 LED
echo none > /sys/class/leds/red:os/trigger
echo none > /sys/class/leds/blue:wifi/trigger
echo none > /sys/class/leds/green:internet/trigger
8.可将相应命令加入到rc.local文件开机自启
• 确保rc.local文件拥有可执行权限:sudo chmod +x /etc/rc.local
• 编辑:nano /etc/rc.local
sleep 5
# 启用交换分区文件:
mkswap /root/swapfile
swapon /root/swapfile
modprobe zram num_devices=1
zramctl --find --size 512M --algorithm lz4 --streams 4
mkswap /dev/zram1
swapon -p 0 /dev/zram1
sysctl -w vm.swappiness=100
sync && echo 3 > /proc/sys/vm/drop_caches
sysctl -w vm.drop_caches=3
# 关闭 LED
sleep 35
echo none > /sys/class/leds/red:os/trigger
echo none > /sys/class/leds/blue:wifi/trigger
# echo none > /sys/class/leds/green:internet/trigger
# 设置cpu模式
sudo cpufreq-set -g conservative
# 调整cpu频率上下限
sudo cpufreq-set -d 200000
sudo cpufreq-set -u 800000
# TRIM优化
fstrim -v /
# 清理日志
journalctl --vacuum-size=5M
9.修改系统登录SSH时显示信息
#编辑文件:nano /etc/motd
欢迎登录 Debian 服务器!
#编辑文件:nano /etc/update-motd.d/10-uname
#!/bin/sh
# uname -snrvm
echo "-------------------------- 系统信息 --------------------------"
echo "操作系统: $(echo "$(sed 's/\\n//g;s/\\l//g' /etc/issue)")" || echo "操作系统: $(uname -o)"
echo "主机名称: $(hostname)"
echo "内核版本: $(uname -r)"
echo "软件包数量: $(dpkg --list | wc -l)"
echo "CPU架构: $(lscpu| awk '/Architecture:/ {print $NF}')"
echo "CPU核心数: $(lscpu| awk '/^CPU\(s\)/ {print $2}')"
echo "核心线程数: $(lscpu| awk '/Thread\(s\) per core:/ {print $NF}')"
echo "CPU温度: $(cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null | awk '{print int($1/1000)}')°C"
if output=$(mmcli -m 0 2>&1) && [ -n "$output" ]; then
get_modem() { mmcli -m 0 2>/dev/null | grep -oiP "(?<=$1\s).*" | awk 'NR==1{print}'; };
echo "-------------------------- Modem信息 --------------------------"
[ -n "$(get_modem "own:")" ] && echo "SIM号码: $(get_modem "own:" | sed 's/^86//')"
[ -n "$(get_modem "operator name:")" ] && echo "运营商: $(get_modem "operator name:" | sed 's/CHN-UNICOM/中国联通/g; s/UNICOM/中国联通/g; s/CMCC/中国移动/g; s/CT/中国电信/g')"
[ -n "$(get_modem "state:")" ] && echo "SIM状态: $(get_modem "state:")"
[ -n "$(get_modem "power state:")" ] && echo "数据开关: $(get_modem "power state:")"
[ -n "$(get_modem "access tech:")" ] && echo "访问类型: $(get_modem "access tech:")"
[ -n "$(get_modem "signal quality:")" ] && echo "信号强度: $(get_modem "signal quality:")"
[ -n "$(get_modem "equipment id:")" ] && echo "设备ID: $(get_modem "equipment id:")"
fi
ip_address=$(ip addr show | grep -w inet | awk '{print $2}' | cut -d/ -f1)
if [ -n "$ip_address" ]; then
echo "-------------------------- 网络信息 --------------------------"
echo "内网IP:"
echo "$ip_address"
curl_output=$(curl -s -m 6 cip.cc 2>&1 | sed '/^$/d') && [ -n "$curl_output" ] && {
echo "公网IP:"
echo "$curl_output"; };
fi
interfaces=$(ifconfig | awk '/^[^ ]/ && !/lo/ {gsub(/:/,"");print $1}')
if [ -n "$interfaces" ]; then
echo "-------------------------- 接口信息 --------------------------"
echo "网络接口: "$interfaces""
convert_unit() { size=$1; awk 'BEGIN{ printf "%.2f %s", ('$size'/1024/1024), "MB" }'; }
for interface in $interfaces; do
get_bytes() { ifconfig $interface | grep -E "$1 .*bytes|$1 bytes" | sed -E "s/.*$1 bytes:([0-9]+).*/\1/;s/.*bytes ([0-9]+) .*/\1/"; }
rx=$(get_bytes RX)
tx=$(get_bytes TX)
[ $rx -gt 0 -o $tx -gt 0 ] && echo "$interface 接收: $(convert_unit $rx) 发送: $(convert_unit $tx)"
done;fi
echo "-------------------------- 内存信息 --------------------------"
mmc_info=$(cat /sys/class/mmc_host/mmc0/mmc0\:0001/life_time)
[ -n "$mmc_info" ] && echo "内存寿命: $mmc_info"
echo "硬件内存: $(free -m | awk 'NR==2{printf "%s/%sMiB (%.2f%%)\n", $3,$2,$3*100/$2 }')"
swap_info=$(free -m | awk 'NR==3{printf "%s/%sMiB (%.2f%%)\n", $3,$2,$3*100/$2}')
[ ! -z "$swap_info" ] && echo "虚拟内存: $swap_info" && sudo swapon --show
echo "-------------------------- 磁盘信息 --------------------------"
df -h
echo "-------------------------- 运行信息 --------------------------"
uptime=$(uptime | sed 's/up/已运行:/g; s/mins/分钟/g; s/min/分钟/g; s/days/天/g; s/day/天/g; s/users/个登录用户/g; s/user/个登录用户/g; s/load average/平均负载/g')
echo "本地时间: $uptime"
echo ""
• 注:如果用其他软件复制粘贴进去,编码不一样可能会出错!
10.一些配置内核参数的正or负优化
# 编辑nano /etc/sysctl.conf
vm.swappiness=100
vm.vfs_cache_pressure=50
vm.panic_on_oom=0
vm.dirty_ratio=50
vm.dirty_background_ratio=30
vm.min_free_kbytes=10240
vm.max_map_count=262144
vm.dirty_expire_centisecs=3000
vm.dirty_writeback_centisecs=15000
net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.proxy_ndp=1
net.ipv6.conf.all.accept_ra=2
net.ipv4.ip_forward=1
net.core.somaxconn=2048
net.ipv4.tcp_max_syn_backlog=8192
net.core.netdev_max_backlog=32768
net.ipv4.tcp_keepalive_time=600
net.ipv4.icmp_echo_ignore_all=0
net.ipv4.tcp_abort_on_overflow=0
net.ipv4.tcp_fack=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_sack=1
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_fastopen=3
net.ipv4.tcp_slow_start_after_idle=0
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_intvl=30
net.ipv4.tcp_keepalive_probes=3
net.ipv4.ip_default_ttl=128
net.core.message_burst=10
net.core.busy_read=50
net.core.optmem_max=20480
net.ipv4.tcp_challenge_ack_limit=9999
net.ipv4.tcp_max_orphans=32768
net.ipv4.tcp_max_tw_buckets=32768
net.ipv4.udp_rmem_min=8192
net.ipv4.udp_wmem_min=8192
net.ipv4.ip_local_port_range=1024 65000
net.ipv4.tcp_mem=131072 262144 524288
net.ipv4.udp_mem=262144 524288 1048576
net.ipv4.tcp_wmem=8760 256960 4088000
net.ipv4.tcp_rmem=8760 256960 4088000
net.core.rmem_default=524288
net.core.rmem_max=8388608
net.core.wmem_default=524288
net.core.wmem_max=8388608
在修改 /etc/sysctl.conf 文件后,需要运行以下命令使其生效:
sysctl -p