Linux常用操作

红帽系系统安装和卸载epel源

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

Linux临时设置ssh不断开连接&history历史1000条

export TMOUT=999999999
export HISTSIZE=1000

全部用户永久增加history操作时间记录

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

linux查看磁盘smart信息

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查找指定目录下指定后缀的指定内容文件

find . -type f -name "*.php" -exec grep -H "请使用正式域名访问" {} \;

find查找最近1天修改的文件

find . -type f -mtime -1

find命令查找最近新增的文件

查找指定目录下大于50M且在600分钟内新增的文件
find /www/wwwroot/ -type f -size +50M -mmin -600

linux下创建文件夹对应软链接

ln -s 原始文件夹  软连接名称

举例
ln -s /www/wwwroot/test /ruanlian
即把/www/wwwroot/test文件夹软链接到根目录/ruanlian文件夹

linux下压缩指定后缀文件

find . -name "*.png" | xargs tar -zcvf pngfiles.tar.gz

使用命令行查看文件hash签名

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

linux下删除无法删除的特殊乱码文件名文件

查看文件索引号
ls -i
详细可以使用
ls -lai
第一列即为索引号

查找索引号并执行删除操作,举例100985为索引号
find ./ -inum 100985 -exec rm {} \;

PS查看进行执行与运行时间

ps -eo pid,lstart,etime,cmd

统计php-fpm一共占了多少内存

ps -eo pid,comm,rss | grep php-fpm | awk '{sum+=$3} END {print sum/1024 " MB"}'

linux下的特殊按键和快捷键

Ctrl + c  ==>  ^C的功能
Ctrl + v  ==>  ^V的功能

Ctrl + v + m ==>  ^M的功能
Ctrl + v + n ==>  ^N的功能

Ctrl + v   再按tab键  ==>  制表符

Ctrl + Insert  ==>  复制
Shift + Insert  ==>  粘贴

linux字符串查找备忘

grep  OR功能  可用grep -E "aaa|bb" 或者 egrep "aaa|bb"
grep  NOT功能  可用grep -v "aaa"
grep  AND功能  可直接使用管道命令

linux下文件按行去重命令

文件按行去重-使用awk命令
hhhh.txt  为去重前文件
nnnn.txt  为去重后文件

awk '!x[$0]++' hhhh.txt>nnnn.txt

linux下使用tar打包压缩和解压文件

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排除指定目录后对当前目录进行打包

tar --exclude='./crmfrontend/web/upload'  --exclude='./crmfrontend/runtime'  --exclude='./api/runtime' -czvf testtar20251010.tar.gz .

tcp连接数查看统计

查看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 表示被动关闭

CentOS查看修改DNS

cat /etc/resolv.conf

返回样例如下
# Generated by NetworkManager
nameserver 10.0.0.1
nameserver 180.76.76.76

如果修改可以使用nmtui修改后重启网络

使用find查找指定目录下超过200M的压缩文件

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"

对nginx日志文件提取第一列ip并去重统计数量排序取前20个

tail -10000 default.eshetuan.cn.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20

对当前用户初始化ssh公钥存放文件

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查看当前规则

iptables -L -n --line-numbers

firewalld查看当前规则

firewall-cmd --list-all

acme.sh泛域名证书签发

安装 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重置

查看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

初始化数据盘(Linux)
扩容云盘(Linux)

磁盘扩容

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

wget命令直接屏蔽https证书验证

vi /etc/wgetrc

增加一行
check_certificate = off

新服务器磁盘分区、格式化为ext4、挂载到/www脚本

#!/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 "=========================================="
目录
冀ICP备2021025979号-1