CentOS7.x建议使用yum
yum -y install epel-release
yum remove epel-release
CentOS8.x建议使用dnf
dnf -y install epel-release
dnf remove epel-release
CentOS7.x建议使用yum
yum -y install vim iotop nload zip unzip bind-utils ntp psmisc net-tools bzip2 wget screen p7zip nc telnet connect-proxy lsof bash-completion
CentOS8.x建议使用dnf
dnf -y install vim iotop nload zip unzip bind-utils chrony psmisc net-tools bzip2 wget screen p7zip nc telnet bash-completion
export TMOUT=999999999
export HISTSIZE=1000
vim /etc/profile
底部增加一行
export HISTTIMEFORMAT="%F %T "
立即生效
source /etc/profile
vim /etc/sysctl.conf
修改配置文件,增加以下参数配置
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 2
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_fin_timeout = 5
net.ipv4.tcp_keepalive_intvl = 60
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_time = 1200
net.core.somaxconn = 4096
vm.swappiness = 0
使配置的参数生效
sysctl -p
df -hT
yum install smartmontools
查看sda磁盘信息
smartctl -a /dev/sda
lsblk -d -o name,rota
在输出中,如果 rota 列的值为 0,则表示磁盘是固态硬盘;如果值为 1,则表示是机械硬盘
以树状图完整展示参数
lsblk -t -m
对当前目录下文件夹统计显示
du -sh *
按统计从大到小排序
du -h --max-depth=1 | sort -hr
按统计从小到大排序
du -h --max-depth=1 | sort -h
find . -type f -name "*.php" -exec grep -H "请使用正式域名访问" {} \;
find . -type f -mtime -1
查找指定目录下大于50M且在600分钟内新增的文件
find /www/wwwroot/ -type f -size +50M -mmin -600
ln -s 原始文件夹 软连接名称
举例
ln -s /www/wwwroot/test /ruanlian
即把/www/wwwroot/test文件夹软链接到根目录/ruanlian文件夹
find . -name "*.png" | xargs tar -zcvf pngfiles.tar.gz
linux下
md5sum filename
sha1sum filename
sha256sum filename
sha512sum filename
windows下
certutil -hashfile filename md5
certutil -hashfile filename sha1
certutil -hashfile filename sha256
certutil -hashfile filename sha512
查看文件索引号
ls -i
详细可以使用
ls -lai
第一列即为索引号
查找索引号并执行删除操作,举例100985为索引号
find ./ -inum 100985 -exec rm {} \;
ps -eo pid,lstart,etime,cmd
ps -eo pid,comm,rss | grep php-fpm | awk '{sum+=$3} END {print sum/1024 " MB"}'
Ctrl + c ==> ^C的功能
Ctrl + v ==> ^V的功能
Ctrl + v + m ==> ^M的功能
Ctrl + v + n ==> ^N的功能
Ctrl + v 再按tab键 ==> 制表符
Ctrl + Insert ==> 复制
Shift + Insert ==> 粘贴
grep OR功能 可用grep -E "aaa|bb" 或者 egrep "aaa|bb"
grep NOT功能 可用grep -v "aaa"
grep AND功能 可直接使用管道命令
文件按行去重-使用awk命令
hhhh.txt 为去重前文件
nnnn.txt 为去重后文件
awk '!x[$0]++' hhhh.txt>nnnn.txt
tar -cvf etc.tar /etc 仅打包,不压缩
tar -xvf etc.tar 解压打包
tar -zcvf etc.tar.gz /etc 以gzip压缩
tar -zxvf etc.tar.gz 以gzip解压缩
tar -jcvf etc.tar.bz2 /etc 以bzip2压缩
tar -jxvf etc.tar.bz2 以bzip2解压
tar --exclude='./crmfrontend/web/upload' --exclude='./crmfrontend/runtime' --exclude='./api/runtime' -czvf testtar20251010.tar.gz .
查看80端口连接数
netstat -ant | grep $ip:80 | wc -l
查看当前80端口连接数
netstat -ant | grep $ip:80 | grep EST | wc -l
常看tcp各连接状态数量
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
常用的三个状态是
ESTABLISHED 表示正在通信
TIME_WAIT 表示主动关闭
CLOSE_WAIT 表示被动关闭
cat /etc/resolv.conf
返回样例如下
# Generated by NetworkManager
nameserver 10.0.0.1
nameserver 180.76.76.76
如果修改可以使用nmtui修改后重启网络
find /www/wwwroot -type f \( -name "*.zip" -o -name "*.rar" -o -name "*.tar.gz" \) -size +200M -exec ls -lh {} \;
find /www/wwwroot -type f \( -name "*.zip" -o -name "*.rar" -o -name "*.tar.gz" \) -size +200M -print0 | xargs -0 ls -l
#只取大小和文件路径(推荐)
find /www/wwwroot -type f \( -name "*.zip" -o -name "*.rar" -o -name "*.tar.gz" \) -size +200M -printf "%s\t%p\n"
tail -10000 default.eshetuan.cn.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20
yum install poppler-utils
安装后可以使用pdfinfo 查看pdf文件信息
只列出当前目录下的「加密的 PDF」
for f in *.pdf; do pdfinfo "$f" 2>/dev/null | grep -q 'Encrypted:\s*yes' && echo "$f"; done
su www
mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys && chown -R $USER:$USER ~/.ssh && echo "SSH配置已为当前用户 ($USER) 初始化完成:$HOME/.ssh"
iptables -L -n --line-numbers
firewall-cmd --list-all
安装 acme.sh
curl https://get.acme.sh | sh -s email=my@v235.top
或
wget -O - https://get.acme.sh | sh -s email=my@v235.top
DNS 手动验证 签发泛域名 *.inter.v235.top
acme.sh --issue --dns -d "*.inter.v235.top" --yes-I-know-dns-manual-mode-enough-go-ahead-please
然后,acme.sh 会生成相应的解析记录显示出来,你只需要在你的域名管理面板中添加这条 TXT 记录即可。
等待解析完成之后,执行以下命令重新生成证书:
acme.sh --renew -d "*.inter.v235.top" --yes-I-know-dns-manual-mode-enough-go-ahead-please
查看uuid
blkid /dev/vdx1
重置uuid
如果是EXT4/EXT3/EXT2格式
tune2fs -U random /dev/vdx1
报错可执行强制检查并修复
e2fsck -f /dev/vdx1
如果是XFS格式
使用xfs_admin命令配合uuidgen生成随机UUID:
sudo xfs_admin -U $(uuidgen) /dev/vdx1
ext4格式磁盘扩容
growpart 命令安装
yum install -y cloud-utils-growpart 或
dnf install -y cloud-utils-growpart
===========================================================================
【针对不是独立分区的】
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.8G 0 2.8G 0% /dev
tmpfs 2.8G 1.1M 2.8G 1% /dev/shm
tmpfs 2.8G 8.9M 2.8G 1% /run
tmpfs 2.8G 0 2.8G 0% /sys/fs/cgroup
/dev/mapper/centos-root 157G 80G 69G 54% /
/dev/sda1 283M 161M 103M 61% /boot
tmpfs 566M 0 566M 0% /run/user/1003
tmpfs 566M 0 566M 0% /run/user/1004
[root@localhost ~]# fdisk -l
Disk /dev/sda: 171.8 GB, 171798691840 bytes, 335544320 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x000c2471
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 616447 307200 83 Linux
/dev/sda2 616448 335544286 167463919+ 8e Linux LVM
Disk /dev/mapper/centos-root: 170.4 GB, 170406182912 bytes, 332824576 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/mapper/centos-swap: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
#自动扩展分区 磁盘sda的第2个分区
growpart /dev/sda 2
#刷新物理卷
pvresize /dev/sda2
#扩展逻辑卷
lvextend -l +100%FREE /dev/mapper/centos-root
#扩展文件系统
resize2fs /dev/mapper/centos-root
===========================================================================
【针对不是独立分区的】
#自动扩展分区 磁盘sdd的第1个分区
growpart /dev/sdd 1
#扩展文件系统
resize2fs /dev/sdd1
修改密码错误次数以及锁定时间
sudo vi /var/lib/deepin/authenticate/config.json
vi /etc/wgetrc
增加一行
check_certificate = off
#!/bin/bash
# 用法: sudo ./secure_mount.sh /dev/vdb
# 功能: 为全新无分区无数据的磁盘创建单分区、ext4格式化、UUID挂载到/www
set -e # 遇到错误退出
# 1. 检查参数
if [ -z "$1" ]; then
echo "错误: 请指定磁盘设备,例如: sudo $0 /dev/vdb"
exit 1
fi
DISK="$1"
PART="${DISK}1"
# 2. 检查磁盘是否存在
if [ ! -b "$DISK" ]; then
echo "错误: 磁盘 $DISK 不存在"
exit 1
fi
# 3. 检查磁盘是否已经被挂载(包括其分区)
mount | grep -q "^$DISK" && echo "错误: $DISK 或其分区已挂载" && exit 1
# 4. 检查磁盘上是否已有分区
if [ -b "$PART" ]; then
echo "错误: 分区 $PART 已存在,说明磁盘已有分区表。为避免数据丢失,退出。"
exit 1
fi
# 5. 使用 blkid 检查磁盘上是否已有文件系统或分区签名
BLKID_OUT=$(blkid "$DISK" 2>/dev/null || true)
if [ -n "$BLKID_OUT" ]; then
echo "错误: 磁盘 $DISK 上已有可识别的文件系统或分区签名,无法继续。"
echo "blkid 输出: $BLKID_OUT"
exit 1
fi
# 6. 最后确认(用户交互)
echo "=========================================="
echo "即将对 $DISK 执行以下操作:"
echo " - 创建 GPT 分区表,并建立一个从0%到100%的 ext4 分区"
echo " - 格式化分区为 ext4"
echo " - 挂载到 /www 并写入 /etc/fstab (使用 UUID)"
echo "⚠️ 该磁盘上的所有数据将被永久删除!"
echo "=========================================="
read -p "确认继续? (输入 yes 继续): " confirm
if [ "$confirm" != "yes" ]; then
echo "已取消操作。"
exit 0
fi
# 7. 执行分区
parted "$DISK" mklabel gpt mkpart primary ext4 0% 100% || { echo "分区失败"; exit 1; }
partprobe "$DISK"
# 等待分区设备出现
sleep 2
if [ ! -b "$PART" ]; then
echo "错误: 分区 $PART 未成功创建"
exit 1
fi
# 8. 格式化
mkfs.ext4 -F "$PART" || { echo "格式化失败"; exit 1; }
# 9. 获取 UUID
UUID=$(blkid -s UUID -o value "$PART")
if [ -z "$UUID" ]; then
echo "错误: 无法获取 UUID"
exit 1
fi
# 10. 挂载点
mkdir -p /www
# 11. 临时挂载
mount "$PART" /www || { echo "挂载失败"; exit 1; }
# 12. 写入 fstab(先备份)
cp /etc/fstab /etc/fstab.bak.$(date +%Y%m%d_%H%M%S)
echo "UUID=$UUID /www ext4 defaults 0 0" >> /etc/fstab
# 13. 验证
echo "=========================================="
echo "✅ 操作成功完成!"
df -h /www
echo "fstab 条目已添加:"
grep "UUID=$UUID" /etc/fstab
echo "=========================================="
#!/bin/bash
# ============================================================
# secure_mount.sh(最终锁死版)
# 用途:仅允许在【全新裸盘】上创建 ext4 分区并挂载 /www
# 策略:非全新裸盘 → 一律拒绝,不做任何处理
# ============================================================
set -euo pipefail
# ---------- 颜色 ----------
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m'
ok() { echo -e "${GREEN}✅ $*${NC}"; }
err() { echo -e "${RED}❌ $*${NC}"; exit 1; }
# ========== 1. 参数 ==========
DISK="${1:-}"
[ -z "$DISK" ] && err "用法: sudo $0 /dev/vdb | /dev/nvme1n1"
[[ "$DISK" =~ ^/dev/ ]] || err "磁盘路径必须以 /dev/ 开头"
[ -b "$DISK" ] || err "磁盘 $DISK 不存在"
# ========== 2. 分区名 ==========
if [[ "$DISK" =~ ^/dev/nvme ]]; then
PART="${DISK}p1"
else
PART="${DISK}1"
fi
# ========== 3. 强制白名单:仅允许全新裸盘 ==========
echo "→ 校验磁盘是否为全新裸盘..."
# 3.1 任何签名(GPT/MBR/ext4/xfs/LVM/RAID/ZFS/swap)
if wipefs "$DISK" 2>/dev/null | grep -q .; then
err "$DISK 检测到磁盘签名
→ 本脚本仅支持全新裸盘
→ 人工确认无误后可执行:wipefs -a $DISK"
fi
# 3.2 是否存在分区
if lsblk -n "$DISK" | grep -q '^├'; then
err "$DISK 已存在分区,仅支持全新裸盘"
fi
# 3.3 是否被识别为 LVM/RAID/加密/分区
if lsblk -ndo TYPE "$DISK" | grep -qE 'lvm|raid|crypt|part'; then
err "$DISK 被识别为非裸盘设备,仅支持全新裸盘"
fi
# 3.4 内核是否占用(挂载 / swap / PV)
if lsblk -ndo MOUNTPOINT "$DISK" | grep -q .; then
err "$DISK 正被内核占用,仅支持全新裸盘"
fi
# 3.5 parted 兜底:是否已有分区表
if parted -s "$DISK" print 2>&1 | grep -viq "unrecognised disk label"; then
err "$DISK 已有分区表,仅支持全新裸盘"
fi
# 3.6 系统盘防护
ROOT_PART=$(findmnt -no SOURCE /)
ROOT_PARENT=$(lsblk -ndo PKNAME "$ROOT_PART")
[ "/dev/$ROOT_PARENT" = "$DISK" ] && err "$DISK 是系统盘,禁止操作"
ok "磁盘 $DISK 确认为全新裸盘"
# ========== 4. /www 目录必须为空 ==========
if [ -d /www ] && [ -n "$(ls -A /www)" ]; then
err "/www 目录非空,禁止挂载"
fi
# ========== 5. 创建分区 ==========
echo "→ 创建 GPT 分区..."
parted -s "$DISK" mklabel gpt mkpart primary ext4 0% 100%
partprobe "$DISK"
udevadm settle
# 等待分区出现
for i in {1..20}; do
[ -b "$PART" ] && break
sleep 1
done
[ -b "$PART" ] || err "分区 $PART 创建失败(超时)"
ok "分区 $PART 创建成功"
# ========== 6. 格式化(无需 -F) ==========
echo "→ 格式化 ext4..."
mkfs.ext4 "$PART" >/dev/null
ok "格式化完成"
# ========== 7. UUID ==========
UUID=$(blkid -s UUID -o value "$PART")
[ -n "$UUID" ] || err "无法获取 UUID"
ok "UUID: $UUID"
# ========== 8. 挂载 ==========
mkdir -p /www
mount "$PART" /www
ok "挂载 /www 成功"
# ========== 9. fstab(安全写入) ==========
FSTAB_ENTRY="UUID=$UUID /www ext4 defaults,noatime 0 2"
cp /etc/fstab "/etc/fstab.bak.$(date +%Y%m%d_%H%M%S)"
sed -i 's|^\([^#].*[[:space:]]/www[[:space:]]\)|# &|' /etc/fstab
echo "$FSTAB_ENTRY" >> /etc/fstab
ok "fstab 已写入"
# ========== 10. 真实挂载验证 ==========
umount /www
mount /www
df -h /www >/dev/null
ok "fstab 挂载验证通过"
# ========== 11. 完成 ==========
echo "=========================================="
ok "🎉 操作完成(仅限全新裸盘)"
echo "挂载点: /www"
df -h /www
echo "fstab:"
grep "^UUID=$UUID" /etc/fstab
echo "=========================================="