Linux运维常用命令大全
1. 基础命令
文件操作
ls
-
概念:列出目录内容
-
示例:```
ls # 列出当前目录文件
ls -l # 详细列表(权限、所有者、大小、时间)
ls -a # 显示隐藏文件(以.开头的文件)
ls -lhS # 按大小降序排列,人类可读格式
ls -ltr # 按修改时间倒序排列
cp
-
概念:复制文件或目录
-
示例:```
cp file1.txt file2.txt # 复制文件
cp -r dir1 dir2 # 递归复制目录
cp -a source dest # 保留权限、属性的归档复制
cp -v file1.txt /path/to/dir/ # 显示复制过程
mv
-
概念:移动或重命名文件/目录
-
示例:```
mv oldname.txt newname.txt # 重命名文件
mv file.txt /path/to/dir/ # 移动文件到目录
mv -f file.txt /existing/path/ # 强制移动(覆盖不提示)
mv dir1 dir2 # 重命名目录
rm
-
概念:删除文件或目录
-
示例:```
rm file.txt # 删除文件
rm -r dir/ # 递归删除目录及其内容
rm -rf dir/ # 强制删除目录(无提示,危险操作)
rm *.log # 删除所有.log文件
touch
-
概念:创建空文件或更新文件时间戳
-
示例:```
touch newfile.txt # 创建空文件
touch file1.txt file2.txt # 创建多个文件
touch -t 202312312359 file.txt # 设置文件时间戳为指定日期时间
cat
-
概念:连接并显示文件内容
-
示例:```
cat file.txt # 显示文件内容
cat file1.txt file2.txt > combined.txt # 合并文件
cat -n file.txt # 显示行号
cat > newfile.txt # 从标准输入创建文件(Ctrl+D结束)
more/less
-
概念:分页查看文件内容(less支持前后滚动)
-
示例:```
more largefile.txt # 空格键翻页,q退出
less largefile.txt # 支持上下键滚动,/pattern搜索,q退出
less +G largefile.txt # 直接跳转到文件末尾
head/tail
-
概念:查看文件开头/结尾内容
-
示例:```
head file.txt # 查看前10行(默认)
head -n 20 file.txt # 查看前20行
tail file.txt # 查看最后10行
tail -n 15 file.txt # 查看最后15行
tail -f /var/log/messages # 实时跟踪日志文件更新
tail -F /var/log/messages # 跟踪文件,即使文件被轮转
目录管理
cd
-
概念:切换当前工作目录
-
示例:```
cd /path/to/dir # 进入指定目录
cd … # 返回上一级目录
cd # 回到当前用户家目录
cd ~username # 进入指定用户的家目录
cd - # 回到上一次工作目录
pwd
-
概念:显示当前工作目录的绝对路径
-
示例:```
pwd # 输出当前目录路径
mkdir
-
概念:创建目录
-
示例:```
mkdir newdir # 创建单个目录
mkdir -p dir1/dir2/dir3 # 创建多级目录(父目录不存在则自动创建)
mkdir -m 755 secure_dir # 创建指定权限的目录
rmdir
-
概念:删除空目录(非空目录需用rm -r)
-
示例:```
rmdir emptydir # 删除空目录
rmdir -p dir1/dir2 # 删除多级空目录
权限管理
chmod
-
概念︰修改文件/目录权限
-
示例:```
chmod u+x file.sh # 给所有者添加执行权限
chmod g+w file.txt # 给所属组添加写权限
chmod o-r file.txt # 移除其他用户的读权限
chmod 755 file.sh # 数字模式:rwxr-xr-x
chmod -R 770 dir/ # 递归修改目录及其内容权限
chmod u+s /usr/bin/program # 设置SUID权限
chown
-
概念:修改文件/目录的所有者和所属组
-
示例:```
chown user file.txt # 修改所有者
chown user:group file.txt # 修改所有者和所属组
chown -R user:group dir/ # 递归修改目录
chown :group file.txt # 只修改所属组
chgrp
-
概念:修改文件/目录的所属组(chown的简化版)
-
示例:```
chgrp group file.txt # 修改所属组
chgrp -R group dir/ # 递归修改目录所属组
2. 系统管理
用户管理
useradd
-
概念:创建新用户
-
示例:```
useradd -m username # 创建用户并自动创建家目录
useradd -s /bin/bash username # 指定登录shell
useradd -G group1,group2 username # 添加用户到多个附加组
useradd -d /home/custom username # 指定自定义家目录
userdel
-
概念:删除用户
-
示例:```
userdel username # 删除用户(保留家目录)
userdel -r username # 删除用户及家目录
usermod
-
概念:修改用户属性
-
示例:```
usermod -l newname oldname # 修改用户名
usermod -aG group username # 添加用户到附加组(不删除现有组)
usermod -d /new/home username # 修改家目录
usermod -L username # 锁定用户账号
usermod -U username # 解锁用户账号
passwd
-
概念:修改用户密码
-
示例:```
passwd username # 修改指定用户密码(需root权限)
passwd # 修改当前用户密码
passwd -l username # 锁定用户密码
passwd -u username # 解锁用户密码
passwd -d username # 删除用户密码(允许空密码登录,不推荐)
groupadd/groupdel
-
概念:创建/删除用户组
-
示例:```
groupadd groupname # 创建组
groupadd -g 1001 groupname # 指定GID创建组
groupdel groupname # 删除组
su/sudo
-
概念:切换用户身份/以超级用户权限执行命令
-
示例:```
su - root # 切换到root用户(带环境变量)
su username # 切换到普通用户
sudo command # 以root权限执行单个命令
sudo -i # 切换到root shell
sudo visudo # 安全编辑sudoers文件
service管理
systemctl
-
概念:管理systemd服务(CentOS 7+)
-
示例:```
sudo systemctl start httpd # 启动服务
sudo systemctl stop httpd # 停止服务
sudo systemctl restart httpd # 重启服务
sudo systemctl reload httpd # 重载配置(不中断服务)
sudo systemctl enable httpd # 设置开机自启
sudo systemctl disable httpd # 禁止开机自启
systemctl status httpd # 查看服务状态
systemctl list-unit-files --type=service # 列出所有服务状态
systemctl is-active httpd # 检查服务是否活跃
service
-
概念:管理SysV服务(兼容旧版本CentOS)
-
示例:```
sudo service httpd start # 启动服务
sudo service httpd stop # 停止服务
sudo service httpd restart # 重启服务
sudo service httpd status # 查看服务状态
进程管理
ps
-
概念:查看进程状态
-
示例:```
ps aux # 查看所有进程详细信息
ps aux | grep “nginx” # 查找特定进程
ps -ef # 显示进程树(父进程关系)
ps -eo pid,ppid,cmd # 自定义输出字段
ps aux --sort=-%cpu | head # 按CPU使用率排序前10
top/htop
-
概念:实时监控系统进程和资源占用
-
示例:```
top # 基本实时监控(按q退出)
top -p 1234 # 监控指定PID的进程
htop # 增强版top(需安装,支持鼠标操作)top交互命令:P(CPU排序)、M(内存排序)、N(PID排序)、k(终止进程)
kill/pkill
-
概念:终止进程
-
示例:```
kill 1234 # 发送SIGTERM信号终止进程
kill -9 1234 # 发送SIGKILL信号强制终止进程
kill -HUP 1234 # 发送SIGHUP信号重载配置
pkill nginx # 终止所有nginx进程
killall httpd # 终止所有httpd进程
pstree
-
概念:以树状图显示进程关系
-
示例:```
pstree # 显示简单进程树
pstree -p # 显示进程PID
pstree -u # 显示进程所属用户
pstree nginx # 显示特定进程的树状结构
jobs/bg/fg
-
概念:管理后台任务
-
示例:```
jobs # 查看后台任务
command & # 将命令放入后台执行
bg %1 # 将任务1放到后台运行
fg %1 # 将任务1调回前台
Ctrl+Z # 暂停当前前台任务
3. 网络管理
网络配置
ip
-
概念:查看/配置网络接口(替代ifconfig)
-
示例:```
ip addr # 查看所有网络接口信息
ip addr show eth0 # 查看指定接口
ip addr add 192.168.1.100/24 dev eth0 # 添加IP地址
ip addr del 192.168.1.100/24 dev eth0 # 删除IP地址
ip link set eth0 up/down # 启用/禁用接口
ip route # 查看路由表
ip route add default via 192.168.1.1 # 添加默认网关
ifconfig
-
概念:查看/配置网络接口(传统命令)
-
示例:```
ifconfig # 查看所有活动接口
ifconfig eth0 # 查看指定接口
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 # 设置IP和子网掩码
ifconfig eth0 up/down # 启用/禁用接口
netstat/ss
-
概念:查看网络连接状态
-
示例:```
netstat -tuln # 显示监听的TCP/UDP端口
netstat -an # 显示所有连接
netstat -p # 显示进程PID和名称(需root)
ss -tuln # 现代版netstat,更快
ss -o state established ‘( dport = :80 or sport = :80 )’ # 过滤80端口连接
hostname/hostnamectl
-
概念:查看/设置主机名
-
示例:```
hostname # 查看主机名
hostnamectl set-hostname newhostname # 设置主机名(永久生效)
hostnamectl # 查看详细主机信息
网络测试
ping
-
概念:测试网络连通性
-
示例:```
ping google.com # 测试到google.com的连通性
ping -c 4 192.168.1.1 # 发送4个ICMP包后停止
ping -i 2 -c 10 192.168.1.1 # 每2秒发送一个,共10个
traceroute/mtr
-
概念:跟踪数据包路径
-
示例:```
traceroute google.com # 跟踪到目标的路由路径
mtr google.com # 结合ping和traceroute的持续监控工具
curl/wget
-
概念:HTTP客户端/文件下载工具
-
示例:```
curl http://example.com # 获取网页内容
curl -I http://example.com # 只获取HTTP头信息
curl -O http://example.com/file.iso # 下载文件
wget http://example.com/file.iso # 下载文件
wget -c http://example.com/file.iso # 断点续传
ssh/scp/sftp
-
概念:远程登录/文件传输
-
示例:```
ssh username@remote_host # 远程登录
ssh -p 2222 username@host # 指定端口登录
scp file.txt username@host:/path/ # 本地文件复制到远程
scp username@host:/path/file.txt . # 远程文件复制到本地
scp -r dir/ username@host:/path/ # 递归复制目录
sftp username@host # SFTP交互式文件传输
防火墙管理
firewall-cmd
-
概念:firewalld防火墙管理工具(CentOS 7+)
-
示例:```
sudo firewall-cmd --state # 查看防火墙状态
sudo firewall-cmd --list-ports # 查看开放端口
sudo firewall-cmd --add-port=80/tcp --permanent # 永久开放80端口
sudo firewall-cmd --remove-port=80/tcp --permanent # 永久关闭80端口
sudo firewall-cmd --reload # 重新加载规则使其生效
sudo firewall-cmd --zone=public --add-service=http --permanent # 开放HTTP服务
iptables
-
概念:传统防火墙管理工具
-
示例:```
sudo iptables -L # 查看规则
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许80端口入站
sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT # 允许特定网段
sudo iptables-save > /etc/sysconfig/iptables # 保存规则
4. 存储管理
磁盘信息
df
-
概念:查看磁盘空间使用情况
-
示例:```
df -h # 人类可读格式显示
df -i # 显示inode使用情况
df -T # 显示文件系统类型
df /dev/sda1 # 查看指定分区
du
-
概念:查看目录/文件大小
-
示例:```
du -sh /path/to/dir # 显示目录总大小(人类可读)
du -h --max-depth=1 /path # 显示一级子目录大小
du -ah /path # 显示所有文件和目录大小
du -c file1 file2 # 显示多个文件总大小
lsblk
-
概念:列出块设备信息
-
示例:```
lsblk # 显示所有块设备
lsblk -f # 显示文件系统信息
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT # 自定义输出字段
fdisk/parted
-
概念:磁盘分区工具
-
示例:```
sudo fdisk -l # 列出所有磁盘分区
sudo fdisk /dev/sdb # 交互式分区/dev/sdb
sudo parted /dev/sdb # 高级分区工具(支持GPT)
挂载管理
mount/umount
-
概念:挂载/卸载文件系统
-
示例:```
mount /dev/sdb1 /mnt/data # 挂载分区到/mnt/data
mount -t ext4 /dev/sdb1 /mnt/data # 指定文件系统类型
mount -o ro /dev/sdb1 /mnt/data # 只读挂载
umount /mnt/data # 卸载分区
umount -l /mnt/data # 强制卸载(当文件被占用时)
mount -a # 挂载/etc/fstab中所有文件系统
/etc/fstab
-
概念:文件系统表,定义开机自动挂载项
-
示例配置:```
设备 挂载点 类型 选项 备份 检查
/dev/sdb1 /mnt/data ext4 defaults 0 2
UUID=xxx /boot xfs defaults 0 1 -
操作命令:```
sudo blkid # 获取设备UUID
sudo vim /etc/fstab # 编辑fstab文件
mount -a # 测试fstab配置是否正确
LVM管理
-
概念:逻辑卷管理,灵活管理磁盘空间
-
示例:```
创建物理卷
sudo pvcreate /dev/sdb1 /dev/sdc1
创建卷组
sudo vgcreate vg_data /dev/sdb1 /dev/sdc1
创建逻辑卷
sudo lvcreate -L 100G -n lv_data vg_data
格式化逻辑卷
sudo mkfs.ext4 /dev/vg_data/lv_data
扩展逻辑卷
sudo lvextend -L +50G /dev/vg_data/lv_data
sudo resize2fs /dev/vg_data/lv_data # ext4文件系统扩容
5. 包管理
yum/dnf
-
概念:RPM包管理工具(dnf是yum的下一代)
-
示例:```
安装软件包
sudo yum install nginx
sudo dnf install nginx # CentOS 8+推荐使用dnf卸载软件包
sudo yum remove nginx
sudo dnf remove nginx更新软件包
sudo yum update # 更新所有包
sudo yum update nginx # 更新指定包
sudo yum upgrade # 升级系统搜索软件包
yum search “web server”
dnf search nginx查看包信息
yum info nginx
dnf info nginx列出已安装包
yum list installed
dnf list installed | grep nginx清理缓存
sudo yum clean all
sudo dnf clean all重建缓存
sudo yum makecache
sudo dnf makecache
rpm
-
概念:直接操作RPM包的底层工具
-
示例:```
rpm -ivh package.rpm # 安装RPM包
rpm -Uvh package.rpm # 升级RPM包
rpm -e package # 卸载RPM包
rpm -qa # 列出所有已安装RPM包
rpm -qa | grep nginx # 查找特定包
rpm -ql package # 列出包安装的文件
rpm -qf /usr/bin/nginx # 查看文件属于哪个包
6. 日志管理
日志文件位置
/var/log/messages
:系统通用日志/var/log/secure
:安全相关日志(SSH登录等)/var/log/httpd/
:Apache日志/var/log/nginx/
:Nginx日志/var/log/mysql/
:MySQL日志/var/log/cron
:定时任务日志
日志查看命令
tail/journalctl
-
示例:```
tail -f /var/log/messages # 实时查看系统日志
tail -n 100 /var/log/secure # 查看最近100行安全日志systemd日志(CentOS 7+)
journalctl # 查看所有日志
journalctl -u nginx # 查看特定服务日志
journalctl -f # 实时跟踪日志
journalctl --since “1 hour ago” # 查看1小时前至今的日志
journalctl --until “2023-12-31” # 查看截止到指定日期的日志
journalctl -k # 查看内核日志
grep/awk在日志分析中的应用
-
示例:```
查找包含"error"的日志行
grep “error” /var/log/messages
统计特定IP的访问次数
grep “192.168.1.100” /var/log/httpd/access.log | wc -l
提取访问状态码为404的请求
awk ‘$9 == 404 {print $0}’ /var/log/httpd/access.log
统计不同状态码的数量
awk ‘{print $9}’ /var/log/httpd/access.log | sort | uniq -c
logrotate
-
概念:日志轮转工具,防止日志文件过大
-
配置文件位置:
/etc/logrotate.conf
和/etc/logrotate.d/
-
示例配置(
/etc/logrotate.d/nginx
):```
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 nginx nginx
sharedscripts
postrotate
/bin/kill -USR1cat /run/nginx.pid 2>/dev/null
2>/dev/null || true
endscript
}
7. 性能监控
CPU监控
top/htop/mpstat
-
示例:```
top -o %CPU # 按CPU使用率排序
mpstat -P ALL 2 # 每2秒显示所有CPU核心使用情况
sar -u 1 5 # 每1秒采样一次CPU,共5次(需安装sysstat)
内存监控
free/vmstat
-
示例:```
free -h # 人类可读格式显示内存使用
free -m # 以MB为单位显示
vmstat 2 # 每2秒显示内存和系统状态
vmstat -s # 显示内存统计摘要
磁盘I/O监控
iostat/iotop
-
示例:```
iostat -x 2 # 每2秒显示详细I/O统计
iostat -p sda 2 # 监控指定磁盘
iotop # 实时监控进程I/O(需安装,按q退出)
网络监控
iftop/nload
-
示例:```
sudo iftop -i eth0 # 监控eth0接口带宽
sudo nload # 实时监控网络流量(分上传/下载)
8. 文本处理
文本查看/编辑
vi/vim
-
概念:强大的文本编辑器
-
常用操作:```
vim file.txt # 打开文件编辑模式:按i进入插入模式
保存退出:Esc -> :wq -> 回车
不保存退出:Esc -> :q! -> 回车
查找:/pattern -> 回车(n下一个,N上一个)
替换::%s/old/new/g -> 回车(全局替换)
nano
文本搜索与过滤
grep/egrep
-
概念:在文件中搜索指定模式的文本
-
示例:```
grep “error” file.log # 搜索包含"error"的行
grep -i “Error” file.log # 忽略大小写
grep -n “error” file.log # 显示行号
grep -r “error” /var/log/ # 递归搜索目录
grep -v “info” file.log # 排除包含"info"的行
grep -E “error|warning” file.log # 搜索多个模式(egrep等价)
sed
-
概念:流编辑器,用于文本替换和处理
-
示例:```
sed ‘s/old/new/g’ file.txt # 全局替换old为new(不修改原文件)
sed -i ‘s/old/new/g’ file.txt # 直接修改原文件
sed ‘/^#/d’ file.txt # 删除注释行(以#开头的行)
sed ‘10d’ file.txt # 删除第10行
sed -n ‘5,10p’ file.txt # 只显示第5-10行
awk
-
概念:文本处理语言,用于数据提取和报告
-
示例:```
awk ‘{print $1, $3}’ data.txt # 打印第1和第3列
awk -F: ‘{print $1}’ /etc/passwd # 以:为分隔符,打印第1列(用户名)
awk ‘$3 > 1000 {print $0}’ /etc/passwd # 第3列(UID)大于1000的行
awk ‘{sum += $2} END {print sum}’ data.txt # 计算第2列的总和
文本处理工具链
cut/sort/uniq/wc
-
示例:```
提取第1列,排序,去重,统计数量
cut -d: -f1 /etc/passwd | sort | uniq | wc -l
统计访问日志中IP出现次数并排序
awk ‘{print $1}’ access.log | sort | uniq -c | sort -nr | head -10
查找占用空间最大的前10个文件
du -ah /path | sort -rh | head -10
9. 实用技巧
命令别名
-
概念:为常用命令创建简短别名
-
示例:```
alias ll=‘ls -lha’ # 临时别名(当前shell有效)
alias grep=‘grep --color=auto’ # 彩色显示grep结果永久别名(添加到/.bashrc或/.bash_profile)
echo “alias ll=‘ls -lha’” >> ~/.bashrc
source ~/.bashrc # 使别名立即生效
管道与重定向
-
概念:将命令连接起来或重定向输入输出
-
示例:```
管道:将前一个命令输出作为后一个命令输入
ps aux | grep nginx | wc -l #统计nginx进程数
重定向:>覆盖,>>追加
command > output.txt # 标准输出重定向到文件
command >> output.txt # 追加到文件
command 2> error.txt # 错误输出重定向
command &> all_output.txt # 所有输出重定向
command < input.txt # 从文件读取输入组合使用
grep “error” /var/log/* 2>/dev/null | tee errors.log # 查找错误并保存到文件同时显示
后台任务与进程管理
-
示例:```
后台运行命令
nohup ./long_running_script.sh & # 忽略挂断信号,后台运行
nohup command > output.log 2>&1 & # 重定向输出到日志文件终端复用(screen/tmux)
screen -S session1 # 创建会话
screen -ls # 列出会话
screen -r session1 # 恢复会话
Ctrl+A+D # 分离会话tmux new -s session1 # 创建tmux会话
tmux attach -t session1 # 恢复会话
Ctrl+B+D # 分离tmux会话
文件查找与处理
find
-
概念:强大的文件查找工具
-
示例:```
find / -name “.log" # 按名称查找
find /var -size +100M # 查找大于100MB的文件
find . -mtime -7 # 查找7天内修改的文件
find . -type d -name “.git” # 查找类型为目录且名称为.git的
find / -user root -perm 600 # 查找所有者为root且权限为600的文件
find . -name ".txt” -exec rm {} ; # 查找并删除.txt文件(谨慎使用)
find . -name “*.tmp” -delete # 查找并删除.tmp文件
locate
-
概念:快速文件查找(基于数据库)
-
示例:```
locate “*.log” # 快速查找.log文件
sudo updatedb # 更新数据库(默认每天自动更新)
locate -i “readme.md” # 忽略大小写查找
压缩与解压
-
示例:```
tar
tar -czvf archive.tar.gz dir/ # 打包并gzip压缩
tar -xzvf archive.tar.gz # 解压tar.gz
tar -cjvf archive.tar.bz2 dir/ # 打包并bzip2压缩
tar -xjvf archive.tar.bz2 # 解压tar.bz2zip
zip -r archive.zip dir/ # 创建zip压缩包
unzip archive.zip # 解压zipgzip
gzip file.txt # 压缩文件(生成file.txt.gz)
gunzip file.txt.gz # 解压gzip文件
系统信息查看
-
示例:```
uname -a # 查看内核版本和系统信息
cat /etc/redhat-release # 查看CentOS版本
lsb_release -a # 查看系统版本(需安装redhat-lsb)
hostnamectl # 查看主机信息
lscpu # 查看CPU信息
free -h # 内存信息
df -h # 磁盘信息
uptime # 系统运行时间和负载
10. 附录
常用快捷键
快捷键 | 功能描述 |
---|---|
Ctrl+C | 终止当前命令 |
Ctrl+Z | 暂停当前命令(可通过fg恢复) |
Ctrl+D | 退出当前shell(等价于exit) |
Ctrl+L | 清屏(等价于clear) |
Ctrl+A | 光标移到行首 |
Ctrl+E | 光标移到行尾 |
Ctrl+U | 删除光标前所有字符 |
Ctrl+K | 删除光标后所有字符 |
Ctrl+W | 删除光标前一个单词 |
Tab | 自动补全命令或路径 |
Ctrl+R | 搜索命令历史 |
通配符
通配符 | 含义 |
---|---|
* | 匹配任意字符序列(0个或多个) |
? | 匹配任意单个字符 |
[abc] | 匹配a、b或c中的任意一个 |
[a-z] | 匹配任意小写字母 |
[0-9] | 匹配任意数字 |
[^abc] | 匹配除a、b、c外的任意字符 |
{file1,file2} | 匹配file1或file2 |
特殊符号
符号 | 含义 |
---|---|
~ | 当前用户家目录 |
. | 当前目录 |
… | 父目录 |
/ | 根目录 |
$VAR | 引用变量VAR的值 |
# | 注释符号(一行中#后的内容被忽略) |
& | 将命令放入后台执行 |
; | 分隔多个命令,顺序执行 |
&& | 逻辑与,前一个命令成功才执行后一个 |
> | 输出重定向(覆盖) |
>> | 输出重定向(追加) |
< | 输入重定向 |
2> | 错误输出重定向 |
* | 通配符,匹配任意字符序列 |
文件操作扩展
rename
-
概念:批量重命名文件,支持字符串替换
-
示例:```
rename ‘s/old/new/’ *.txt # 将所有.txt文件中的"old"替换为"new"
rename ‘y/A-Z/a-z/’ *.TXT # 将所有.TXT文件转为小写后缀
tree
-
概念:以树状图显示目录结构
-
示例:```
tree # 显示当前目录树
tree -L 2 # 限制显示深度为2级
tree -d # 只显示目录
chattr/lsattr
-
概念:修改/查看文件扩展属性(如防删除、只读)
-
示例:```
chattr +i important.txt # 设置文件不可修改、删除
chattr -i important.txt # 取消不可修改属性
lsattr important.txt # 查看文件扩展属性
basename/dirname
-
概念:提取文件名或目录名
-
示例:```
basename /path/to/file.txt # 输出:file.txt
dirname /path/to/file.txt # 输出:/path/to
文本处理扩展
rev
-
概念:反转文件内容的每行字符
-
示例:```
rev file.txt # 反转显示file.txt内容
echo “hello” | rev # 输出:olleh
iconv/dos2unix
-
概念:文件编码转换/Windows换行符转Unix
-
示例:```
iconv -f GBK -t UTF-8 input.txt > output.txt # GBK转UTF-8
dos2unix winfile.txt # 将CRLF转换为LF格式
vimdiff
-
概念:可视化文件比较工具
-
示例:```
vimdiff file1.txt file2.txt # 分屏显示两个文件差异
系统监控高级命令
dmesg
-
概念:查看内核启动信息和硬件诊断
-
示例:```
dmesg | grep -i error # 查找内核错误信息
dmesg | less # 分页查看所有启动信息
sar
-
概念:系统活动报告,收集历史性能数据
-
示例:```
sar -u 5 3 # 每5秒采样一次CPU,共3次
sar -r 1 5 # 监控内存使用
sar -n DEV 2 # 监控网络接口流量
strace/ltrace
-
概念:跟踪进程系统调用/库函数调用
-
示例:```
strace -p 1234 # 跟踪PID 1234的系统调用
ltrace ls # 跟踪ls命令的库函数调用
网络诊断工具
nmap
-
概念:网络端口扫描和服务探测
-
示例:```
nmap 192.168.1.1 # 扫描目标主机开放端口
nmap -p 1-1000 192.168.1.1 # 扫描指定端口范围
nmap -sV 192.168.1.1 # 探测服务版本
tcpdump
-
概念:网络抓包工具,分析网络流量
-
示例:```
tcpdump -i eth0 port 80 # 抓取eth0上80端口流量
tcpdump -w capture.pcap # 保存抓包到文件
tcpdump -r capture.pcap # 读取保存的抓包文件
磁盘管理高级命令
parted
-
概念:支持GPT分区的磁盘分区工具(大于2TB磁盘)
-
示例:```
parted /dev/sdb # 交互式分区/dev/sdb
parted -s /dev/sdb mklabel gpt # 非交互式创建GPT标签
parted -s /dev/sdb mkpart primary 0% 100% # 创建整个磁盘分区
swapon/swapoff
-
概念:启用/关闭交换分区
-
示例:```
swapon /dev/sdb1 # 启用交换分区
swapon -s # 查看所有活动交换分区
swapoff /dev/sdb1 # 关闭交换分区
实用工具
watch
-
概念:周期性执行命令并全屏显示结果
-
示例:```
watch -n 1 ‘df -h’ # 每秒刷新磁盘使用情况
watch -d ‘ls -l’ # 高亮显示文件变化
bc
-
概念:高精度计算器工具
-
示例:```
bc -l # 启动交互式计算器(-l加载数学库)
echo “2^32” | bc # 计算2的32次方
echo “scale=2; 10/3” | bc # 设置小数位数计算除法
type
-
概念:判断命令类型(内置/外部/别名)
-
示例:```
type cd # 显示cd是shell内置命令
type ls # 显示ls是别名或外部命令路径
type -t python # 仅显示类型(alias/builtin/file)
SELinux管理
getenforce/setenforce
-
概念:查看/临时切换SELinux模式
-
示例:```
getenforce # 查看当前模式(Enforcing/Permissive/Disabled)
setenforce 0 # 临时切换到Permissive模式
setenforce 1 # 切换回Enforcing模式
永久修改SELinux配置
文件上传下载工具
sz/rz
-
概念:基于ZModem协议的文件传输工具
-
示例:```
yum install -y lrzsz # 安装lrzsz工具
sz filename # 下载文件到本地
rz # 上传本地文件到服务器(弹出文件选择窗口)
curl高级用法
REST API交互
-
概念:使用curl发送HTTP请求测试API
-
示例:```
POST请求
curl -H “Content-Type: application/json” -X POST -d ‘{“name”:“test”}’ http://api.example.com
GET请求带参数
curl “http://api.example.com/data?param1=value1¶m2=value2”
带认证信息
curl -u username:password http://api.example.com
文件下载与限速
-
示例:```
curl -O http://example.com/file.iso # 下载文件
curl --limit-rate 100k http://example.com/largefile.iso # 限速100KB/s
进程管理高级命令
pgrep/pkill
-
概念:通过进程名查找/终止进程
-
示例:```
pgrep nginx # 查找nginx进程PID
pkill -9 nginx # 终止所有nginx进程
pgrep -u root # 查找root用户的进程
ipcs/ipcrm
- 概念:管理进程间通信(IPC)资源
- 示例:```
ipcs -m # 显示共享内存
ipcs -s # 显示信号量
ipcrm -m shmid # 删除指定ID的共享内存
包管理差异(CentOS vs Ubuntu)
RPM包管理(CentOS)
-
概念:RedHat系系统的包管理工具
-
示例:```
安装RPM包
rpm -ivh package.rpm
升级RPM包
rpm -Uvh package.rpm
卸载RPM包
rpm -e package
查询已安装包
rpm -qa | grep package
DPKG包管理(Ubuntu)
-
概念:Debian系系统的包管理工具
-
示例:```
安装DEB包
dpkg -i package.deb
卸载DEB包
dpkg -r package
查看包信息
dpkg -s package
列出包内容
dpkg -L package
源码编译安装
-
概念:从源码编译安装软件的通用流程
-
示例:```
安装编译工具(CentOS)
yum groupinstall “Development Tools” -y
安装编译工具(Ubuntu)
apt install build-essential -y
通用编译流程
wget https://example.com/source.tar.gz
tar -zxvf source.tar.gz
cd source-dir
./configure --prefix=/usr/local/app
make
make install
12. 在线下载工具
wget高级用法
-
概念:功能强大的命令行下载工具
-
示例:```
断点续传
wget -c https://example.com/largefile.iso
后台下载
wget -b https://example.com/file.tar.gz
限速下载
wget --limit-rate=200k https://example.com/file.zip
指定User-Agent
wget -U “Mozilla/5.0” https://example.com
curl高级用法
-
概念:支持多种协议的URL传输工具
-
示例:```
下载文件并重命名
curl -o newname.zip https://example.com/file.zip
跟随重定向
curl -L https://example.com/redirect
发送表单数据
curl -d “username=admin&password=123” https://example.com/login
带Cookie请求
curl -b “sessionid=xxx” https://example.com/profile
axel多线程下载
-
概念:多线程下载工具,加速下载速度
-
示例:```
安装(CentOS)
yum install axel -y
安装(Ubuntu)
apt install axel -y
使用10线程下载
axel -n 10 https://example.com/largefile.iso
13. 压缩解压大全
支持多种格式的压缩解压命令
格式 | 压缩命令 | 解压命令 |
---|---|---|
.tar | tar -cvf file.tar dir/ | tar -xvf file.tar |
.tar.gz | tar -czvf file.tar.gz dir/ | tar -xzvf file.tar.gz |
.tar.bz2 | tar -cjvf file.tar.bz2 dir/ | tar -xjvf file.tar.bz2 |
.tar.xz | tar -cJvf file.tar.xz dir/ | tar -xJvf file.tar.xz |
.zip | zip -r file.zip dir/ | unzip file.zip |
.rar | rar a file.rar dir/ | rar x file.rar |
.7z | 7z a file.7z dir/ | 7z x file.7z |
安装额外压缩工具
# 安装rar(CentOS)
wget https://www.rarlab.com/rar/rarlinux-x64.tar.gz
tar -zxvf rarlinux-x64.tar.gz
cd rar
make install
# 安装p7zip(Ubuntu)
apt install p7zip-full -y
# 安装p7zip(CentOS)
yum install p7zip p7zip-plugins -y
高级压缩示例
# 压缩时排除特定文件
tar --exclude=*.log -czvf backup.tar.gz /data
# 分卷压缩
split -b 100M largefile.tar.gz "largefile.part-"
# 合并分卷并解压
cat largefile.part-* | tar -xzvf -
14. 性能监控高级命令
系统性能综合监控
sar详细用法
-
概念:系统活动报告工具,收集和报告系统活动
-
示例:```
安装sysstat(包含sar)
yum install sysstat -y # CentOS
apt install sysstat -y # Ubuntu监控CPU使用率(每5秒一次,共3次)
sar -u 5 3
监控内存使用
sar -r 1 5
监控磁盘I/O
sar -b 2 10
监控网络流量
sar -n DEV 1 5
Java内存监控工具
JDK自带工具
-
概念:JDK提供的Java进程监控工具集
-
示例:```
查看Java进程
jps -l
查看JVM内存使用
jstat -gc 12345 5000 10 # PID 12345,每5秒一次,共10次
生成堆转储文件
jmap -dump:format=b,file=heapdump.hprof 12345
查看线程状态
jstack 12345 > threaddump.txt
查看JVM参数
jinfo -flags 12345
第三方Java监控工具
# 安装jconsole(图形化,需X11转发)
yum install java-1.8.0-openjdk-devel -y # 包含jconsole
# 安装arthas(阿里开源Java诊断工具)
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar # 交互式选择进程
15. Ubuntu与CentOS命令差异对比
包管理差异
操作 | CentOS | Ubuntu |
---|---|---|
更新源 | yum update | apt update |
安装包 | yum install pkg | apt install pkg |
卸载包 | yum remove pkg | apt remove pkg |
搜索包 | yum search pkg | apt search pkg |
清理缓存 | yum clean all | apt clean |
服务管理差异
操作 | CentOS | Ubuntu |
---|---|---|
启动服务 | systemctl start service | systemctl start service |
停止服务 | systemctl stop service | systemctl stop service |
开机启动 | systemctl enable service | systemctl enable service |
查看状态 | systemctl status service | systemctl status service |
服务列表 | systemctl list-unit-files | systemctl list-unit-files |
防火墙差异
操作 | CentOS (firewalld) | Ubuntu (ufw) |
---|---|---|
查看状态 | firewall-cmd --state | ufw status |
启用 | systemctl enable --now firewalld | ufw enable |
开放端口 | firewall-cmd --add-port=80/tcp --permanent | ufw allow 80/tcp |
关闭端口 | firewall-cmd --remove-port=80/tcp --permanent | ufw deny 80/tcp |
重载规则 | firewall-cmd --reload | ufw reload |
16. iptables详细操作
基础规则管理
-
概念:Linux内核防火墙,通过规则链过滤网络流量
-
示例:```
查看所有规则
iptables -L -n --line-numbers
清空所有规则
iptables -F
保存规则(CentOS)
service iptables save
保存规则(Ubuntu)
iptables-save > /etc/iptables/rules.v4
恢复规则(Ubuntu)
iptables-restore < /etc/iptables/rules.v4
常用规则配置
# 允许SSH连接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许HTTP和HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 阻止特定IP
iptables -A INPUT -s 192.168.1.100 -j DROP
# 端口转发(将80端口转发到8080)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
规则持久化
# CentOS持久化
yum install iptables-services -y
systemctl enable iptables
service iptables save
# Ubuntu持久化
apt install iptables-persistent -y
netfilter-persistent save
netfilter-persistent reload
17. 进程管理高级操作
进程查找与过滤
-
概念:根据不同条件查找进程
-
示例:```
按名称查找进程
pgrep nginx
ps aux | grep nginx按端口查找进程
lsof -i:8080
netstat -tulnlp | grep 8080
ss -tulnlp | grep 8080按用户查找进程
ps -u root
按CPU/内存使用率排序
ps aux --sort=-%cpu | head -10 # CPU最高的10个进程
ps aux --sort=-%mem | head -10 # 内存最高的10个进程
进程终止操作
-
概念:终止进程的不同方式和信号
-
示例:```
正常终止(SIGTERM - 15)
kill 1234
强制终止(SIGKILL - 9)
kill -9 1234
重启进程(SIGHUP - 1)
kill -1 1234
终止指定名称的所有进程
pkill nginx
killall nginx终止占用端口的进程
fuser -k 8080/tcp
端口占用解决完整流程
# 1. 查找占用端口的进程
lsof -i:8080
# 或
netstat -tulnlp | grep 8080
# 2. 终止进程(假设PID为1234)
kill -9 1234
# 3. 强制释放端口(如果kill后端口仍被占用)
fuser -k 8080/tcp
# 4. 验证端口是否释放
ss -tuln | grep 8080
18. 线上问题排查方法论
系统资源瓶颈排查
CPU瓶颈
# 查看CPU使用率
top # 按P排序
htop # 更直观的CPU使用展示
# 查看每个CPU核心的使用情况
mpstat -P ALL 1
# 查看进程线程CPU占用
ps -Lp 1234 -o %cpu,pid,tid,comm # 查看进程1234的线程CPU占用
内存瓶颈
# 查看内存使用概况
free -h
vmstat 1
# 查看进程内存占用
top # 按M排序
ps aux --sort=-%mem | head -10
# 查看内存泄漏嫌疑
valgrind --leak-check=full ./program # C程序内存泄漏检测
jmap -histo:live 1234 # Java进程对象统计
磁盘I/O瓶颈
# 查看磁盘I/O负载
iostat -x 1
iotop # 按IO使用率排序进程
# 查看磁盘空间
df -h
du -sh /var/* | sort -rh # 按大小排序目录
# 查找大文件
find / -type f -size +100M -exec du -h {} \;
网络问题排查
# 检查网络连接
netstat -an | grep ESTABLISHED # 已建立连接
ss -ti # TCP连接详情
# 抓包分析
tcpdump -i eth0 port 80 -w capture.pcap
tcpdump -r capture.pcap host 192.168.1.1
# 路由追踪
traceroute example.com
mtr example.com # 结合ping和traceroute
# DNS排查
nslookup example.com
dig example.com
host example.com
日志分析技巧
# 实时跟踪日志
tail -f /var/log/application.log
# 查找错误日志
grep -i error /var/log/application.log
grep -iE "error|exception" /var/log/application.log
# 按时间范围过滤日志
sed -n '/2023-10-01 10:00:00/,/2023-10-01 11:00:00/p' /var/log/application.log
# 统计错误出现次数
grep -i error /var/log/application.log | wc -l
# 分析访问日志(按IP统计访问次数)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
19. 防火墙完整操作指南
firewalld(CentOS)详细配置
# 安装与启动
yum install firewalld -y
systemctl enable --now firewalld
# 基本操作
firewall-cmd --state # 查看状态
firewall-cmd --reload # 重载规则
firewall-cmd --complete-reload # 完全重启(中断连接)
# 管理端口
firewall-cmd --add-port=80/tcp --permanent # 永久开放80端口
firewall-cmd --remove-port=80/tcp --permanent # 永久关闭80端口
firewall-cmd --list-ports # 查看开放端口
# 管理服务
firewall-cmd --add-service=http --permanent # 开放HTTP服务
firewall-cmd --list-services # 查看开放服务
# 端口转发
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=8080 --permanent
# 区域管理
firewall-cmd --get-active-zones # 查看活动区域
firewall-cmd --zone=public --add-interface=eth0 --permanent # 接口加入区域
ufw(Ubuntu)详细配置
# 安装与启动
apt install ufw -y
ufw enable # 启用防火墙
ufw disable # 禁用防火墙
# 基本操作
ufw status verbose # 详细状态
ufw reload # 重载规则
# 管理端口
ufw allow 80/tcp # 允许80/tcp
ufw deny 22/udp # 拒绝22/udp
ufw delete allow 80/tcp # 删除规则
# 管理服务
ufw allow ssh # 允许SSH服务
ufw allow http # 允许HTTP服务
# 高级规则(允许特定IP)
ufw allow from 192.168.1.0/24 to any port 3306
ufw deny from 10.0.0.1 to any
# 端口转发(需先启用ipv4转发)
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sysctl -p
ufw route allow proto tcp from any to any port 8080 to 192.168.1.100 port 80
20. 常用服务运维命令
Redis运维
# 安装(CentOS)
yum install redis -y
systemctl enable --now redis
# 安装(Ubuntu)
apt install redis-server -y
# 基本操作
redis-cli ping # 测试连接
redis-cli info # 查看信息
redis-cli keys "*" # 列出所有键
redis-cli get key # 获取键值
redis-cli set key value # 设置键值
# 持久化操作
redis-cli save # 手动触发RDB持久化
redis-cli bgsave # 后台执行RDB持久化
redis-cli config set appendonly yes # 启用AOF
# 备份与恢复
cp /var/lib/redis/dump.rdb /backup/ # 备份RDB文件
redis-cli FLUSHALL # 清空数据库(谨慎操作)
# 恢复:停止Redis,替换dump.rdb,启动Redis
# 集群管理
redis-cli --cluster create 192.168.1.1:6379 192.168.1.2:6379 ...
redis-cli --cluster info 192.168.1.1:6379
MySQL运维
# 安装(CentOS)
yum install mysql-server -y
systemctl enable --now mysqld
# 安装(Ubuntu)
apt install mysql-server -y
# 基本操作
mysql -u root -p # 登录
mysqladmin -u root -p status # 查看状态
mysql -e "show databases;" # 执行SQL命令
# 备份与恢复
mysqldump -u root -p --all-databases > all_db_backup.sql # 全库备份
mysqldump -u root -p dbname > dbname_backup.sql # 单库备份
mysql -u root -p dbname < dbname_backup.sql # 恢复数据库
# 主从复制配置
# 主库:
vi /etc/my.cnf
server-id=1
log_bin=mysql-bin
binlog_do_db=testdb
# 从库:
vi /etc/my.cnf
server-id=2
replicate_do_db=testdb
# 从库连接主库:
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G
Java项目部署与监控
# 运行Java项目
java -jar app.jar
nohup java -jar app.jar > app.log 2>&1 & # 后台运行
# 设置JVM参数
java -Xms512m -Xmx1024m -jar app.jar
# 查看Java进程详细信息
jinfo -flags 1234 # 查看JVM参数
jstat -gcutil 1234 1000 # 每1秒输出GC信息
# 分析堆内存
jmap -heap 1234 # 查看堆配置及使用情况
jmap -dump:format=b,file=heap.hprof 1234 # 生成堆转储文件
jhat heap.hprof # 启动堆分析服务器(访问7000端口)
# 查看线程状态
jstack 1234 > threads.txt
grep -A 10 "BLOCKED" threads.txt # 查找阻塞线程
21. crontab定时任务完全指南
基本格式与语法
* * * * * command
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 6) (星期天=0或7)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)
特殊符号用法
符号 | 含义 | 示例 |
---|---|---|
* | 所有值 | * * * * * 每分钟 |
, | 分隔多个值 | 0 8,18 * * * 每天8点和18点 |
- | 范围 | 0 9-17 * * 1-5 工作日9到17点每小时 |
/ | 间隔 | */15 * * * * 每15分钟 |
@reboot | 启动时 | @reboot /script/start.sh |
@daily | 每天 | @daily /script/backup.sh |
常用示例
# 编辑定时任务
crontab -e
# 查看定时任务
crontab -l
# 删除定时任务
crontab -r
# 每分钟执行
*/1 * * * * /path/to/script.sh
# 每天凌晨3点执行
0 3 * * * /path/to/backup.sh
# 每周日23点执行
0 23 * * 0 /path/to/cleanup.sh
# 每月1号和15号中午12点执行
0 12 1,15 * * /path/to/report.sh
# 工作日8:00-18:00每小时执行
0 8-18 * * 1-5 /path/to/check.sh
# 每15分钟执行并输出日志
*/15 * * * * /path/to/script.sh >> /var/log/script.log 2>&1
定时任务管理与日志
# 查看cron服务状态
systemctl status crond # CentOS
systemctl status cron # Ubuntu
# 查看cron日志(CentOS)
tail -f /var/log/cron
# 查看cron日志(Ubuntu)
grep CRON /var/log/syslog
# 设置定时任务权限(限制用户)
vi /etc/cron.allow # 仅允许文件中列出的用户使用crontab
vi /etc/cron.deny # 禁止文件中列出的用户使用crontab
# 定时任务环境变量问题解决
# 在脚本中使用绝对路径或在crontab中定义PATH
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
*/1 * * * * /path/to/script.sh
22. 系统状态全面监控命令
系统运行状态
uptime详细解读
uptime
# 输出示例:15:45:30 up 2 days, 3:10, 2 users, load average: 0.88, 0.65, 0.50
# 解读:当前时间 运行时间 用户数 1/5/15分钟负载
# 查看更详细的启动时间
who -b
last reboot
系统信息综合查看
# 查看内核版本
uname -a
cat /proc/version
# 查看操作系统版本
cat /etc/redhat-release # CentOS
cat /etc/lsb-release # Ubuntu
# 查看硬件信息
lscpu # CPU信息
lsmem # 内存信息
lsblk # 磁盘信息
# 查看系统资源概览
inxi -Fxz # 需要安装:yum install inxi / apt install inxi
磁盘与文件系统
高级磁盘监控
# 查看磁盘I/O性能
iostat -x 1
iotop -oP # 只显示有I/O活动的进程
# 文件系统详细信息
df -Th # 显示文件系统类型
blkid # 查看块设备UUID和类型
# 磁盘分区详情
fdisk -l /dev/sda
parted /dev/sda print
# 查找大文件和目录
du -Sh /var | sort -rh | head -10 # 目录大小排序
find / -type f -size +100M -print0 | xargs -0 du -h | sort -rh # 大文件查找
网络状态深度分析
# 网络连接统计
ss -s # 连接摘要
ss -tuln # 监听TCP/UDP端口
ss -ti # TCP连接详情(包含RTT信息)
# 网络流量实时监控
iftop -i eth0 # 按带宽排序
nload # 分上下行显示流量
# 网络接口详细信息
ethtool eth0 # 链路状态、速度等
ip -s link show eth0 # 接口统计信息
# 路由表和ARP缓存
ip route show
arp -n
这两年,IT行业面临经济周期波动与AI产业结构调整的双重压力,确实有很多运维与网络工程师因企业缩编或技术迭代而暂时失业。
很多人都在提运维网工失业后就只能去跑滴滴送外卖了,但我想分享的是,对于运维人员来说,即便失业以后仍然有很多副业可以尝试。
运维副业方向
运维,千万不要再错过这些副业机会!
第一个是知识付费类副业:输出经验打造个人IP
在线教育平台讲师
操作路径:在慕课网、极客时间等平台开设《CCNA实战》《Linux运维从入门到精通》等课程,或与培训机构合作录制专题课。
收益模式:课程销售分成、企业内训。
技术博客与公众号运营
操作路径:撰写网络协议解析、故障排查案例、设备评测等深度文章,通过公众号广告、付费专栏及企业合作变现。
收益关键:每周更新2-3篇原创,结合SEO优化与社群运营。
第二个是技术类副业:深耕专业领域变现
企业网络设备配置与优化服务
操作路径:为中小型企业提供路由器、交换机、防火墙等设备的配置调试、性能优化及故障排查服务。可通过本地IT服务公司合作或自建线上接单平台获客。
收益模式:按项目收费或签订年度维护合同。
远程IT基础设施代维
操作路径:通过承接服务器监控、日志分析、备份恢复等远程代维任务。适合熟悉Zabbix、ELK等技术栈的工程师。
收益模式:按工时计费或包月服务。
网络安全顾问与渗透测试
操作路径:利用OWASP Top 10漏洞分析、Nmap/BurpSuite等工具,为企业提供漏洞扫描、渗透测试及安全加固方案。需考取CISP等认证提升资质。
收益模式:单次渗透测试报告收费;长期安全顾问年费。
比如不久前跟我一起聊天的一个粉丝,他自己之前是大四实习的时候做的运维,发现运维7*24小时待命受不了,就准备转网安,学了差不多2个月,然后开始挖漏洞,光是补天的漏洞奖励也有个四五千,他说自己每个月的房租和饭钱就够了。
为什么我会推荐你网安是运维人员的绝佳副业&转型方向?
1.你的经验是巨大优势: 你比任何人都懂系统、网络和架构。漏洞挖掘、内网渗透、应急响应,这些核心安全能力本质上是“攻击视角下的运维”。你的运维背景不是从零开始,而是降维打击。
2.越老越吃香,规避年龄危机: 安全行业极度依赖经验。你的排查思路、风险意识和对复杂系统的理解能力,会随着项目积累而愈发珍贵,真正做到“姜还是老的辣”。
3.职业选择极其灵活: 你可以加入企业成为安全专家,可以兼职“挖洞“获取丰厚奖金,甚至可以成为自由顾问。这种多样性为你提供了前所未有的抗风险能力。
4.市场需求爆发,前景广阔: 在国家级政策的推动下,从一线城市到二三线地区,安全人才缺口正在急剧扩大。现在布局,正是抢占未来先机的黄金时刻。
运维转行学习路线
(一)第一阶段:网络安全筑基
1. 阶段目标
你已经有运维经验了,所以操作系统、网络协议这些你不是零基础。但要学安全,得重新过一遍——只不过这次我们是带着“安全视角”去学。
2. 学习内容
**操作系统强化:**你需要重点学习 Windows、Linux 操作系统安全配置,对比运维工作中常规配置与安全配置的差异,深化系统安全认知(比如说日志审计配置,为应急响应日志分析打基础)。
**网络协议深化:**结合过往网络协议应用经验,聚焦 TCP/IP 协议簇中的安全漏洞及防护机制,如 ARP 欺骗、TCP 三次握手漏洞等(为 SRC 漏扫中协议层漏洞识别铺垫)。
**Web 与数据库基础:**补充 Web 架构、HTTP 协议及 MySQL、SQL Server 等数据库安全相关知识,了解 Web 应用与数据库在网安中的作用。
**编程语言入门:**学习 Python 基础语法,掌握简单脚本编写,为后续 SRC 漏扫自动化脚本开发及应急响应工具使用打基础。
**工具实战:**集中训练抓包工具(Wireshark)、渗透测试工具(Nmap)、漏洞扫描工具(Nessus 基础版)的使用,结合模拟场景练习工具应用(掌握基础扫描逻辑,为 SRC 漏扫工具进阶做准备)。
(二)第二阶段:漏洞挖掘与 SRC 漏扫实战
1. 阶段目标
这阶段是真正开始“动手”了。信息收集、漏洞分析、工具联动,一样不能少。
熟练运用漏洞挖掘及 SRC 漏扫工具,具备独立挖掘常见漏洞及 SRC 平台漏扫实战能力,尝试通过 SRC 挖洞搞钱,不管是低危漏洞还是高危漏洞,先挖到一个。
2. 学习内容
信息收集实战:结合运维中对网络拓扑、设备信息的了解,强化基本信息收集、网络空间搜索引擎(Shodan、ZoomEye)、域名及端口信息收集技巧,针对企业级网络场景开展信息收集练习(为 SRC 漏扫目标筛选提供支撑)。
漏洞原理与分析:深入学习 SQL 注入、CSRF、文件上传等常见漏洞的原理、危害及利用方法,结合运维工作中遇到的类似问题进行关联分析(明确 SRC 漏扫重点漏洞类型)。
工具进阶与 SRC 漏扫应用:
-
系统学习 SQLMap、BurpSuite、AWVS 等工具的高级功能,开展工具联用实战训练;
-
专项学习 SRC 漏扫流程:包括 SRC 平台规则解读(如漏洞提交规范、奖励机制)、漏扫目标范围界定、漏扫策略制定(全量扫描 vs 定向扫描)、漏扫结果验证与复现;
-
实战训练:使用 AWVS+BurpSuite 组合开展 SRC 平台目标漏扫,练习 “扫描 - 验证 - 漏洞报告撰写 - 平台提交” 全流程。
SRC 实战演练:选择合适的 SRC 平台(如补天、CNVD)进行漏洞挖掘与漏扫实战,积累实战经验,尝试获取挖洞收益。
恭喜你,如果学到这里,你基本可以下班搞搞副业创收了,并且具备渗透测试工程师必备的「渗透技巧」、「溯源能力」,让你在黑客盛行的年代别背锅,工作实现升职加薪的同时也能开创副业创收!
如果你想要入坑黑客&网络安全,笔者给大家准备了一份:全网最全的网络安全资料包需要保存下方图片,微信扫码即可前往获取!
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
(三)第三阶段:渗透测试技能学习
1. 阶段目标
全面掌握渗透测试理论与实战技能,能够独立完成渗透测试项目,编写规范的渗透测试报告,具备渗透测试工程师岗位能力,为护网红蓝对抗及应急响应提供技术支撑。
2. 学习内容
渗透测试核心理论:系统学习渗透测试流程、方法论及法律法规知识,明确渗透测试边界与规范(与红蓝对抗攻击边界要求一致)。
实战技能训练:开展漏洞扫描、漏洞利用、电商系统渗透测试、内网渗透、权限提升(Windows、Linux)、代码审计等实战训练,结合运维中熟悉的系统环境设计测试场景(强化红蓝对抗攻击端技术能力)。
工具开发实践:基于 Python 编程基础,学习渗透测试工具开发技巧,开发简单的自动化测试脚本(可拓展用于 SRC 漏扫自动化及应急响应辅助工具)。
报告编写指导:学习渗透测试报告的结构与编写规范,完成多个不同场景的渗透测试报告撰写练习(与 SRC 漏洞报告、应急响应报告撰写逻辑互通)。
(四)第四阶段:企业级安全攻防(含红蓝对抗)、应急响应
1. 阶段目标
掌握企业级安全攻防、护网红蓝对抗及应急响应核心技能,考取网安行业相关证书。
2. 学习内容
护网红蓝对抗专项:
-
红蓝对抗基础:学习护网行动背景、红蓝对抗规则(攻击范围、禁止行为)、红蓝双方角色职责(红队:模拟攻击;蓝队:防御检测与应急处置);
-
红队实战技能:强化内网渗透、横向移动、权限维持、免杀攻击等高级技巧,模拟护网中常见攻击场景;
-
蓝队实战技能:学习安全设备(防火墙、IDS/IPS、WAF)联动防御配置、安全监控平台(SOC)使用、攻击行为研判与溯源方法;
-
模拟护网演练:参与团队式红蓝对抗演练,完整体验 “攻击 - 检测 - 防御 - 处置” 全流程。
应急响应专项: -
应急响应流程:学习应急响应 6 步流程(准备 - 检测 - 遏制 - 根除 - 恢复 - 总结),掌握各环节核心任务;
-
实战技能:开展操作系统入侵响应(如病毒木马清除、异常进程终止)、数据泄露应急处置、漏洞应急修补等实战训练;
-
工具应用:学习应急响应工具(如 Autoruns、Process Monitor、病毒分析工具)的使用,提升处置效率;
-
案例复盘:分析真实网络安全事件应急响应案例(如勒索病毒事件),总结处置经验。
其他企业级攻防技能:学习社工与钓鱼、CTF 夺旗赛解析等内容,结合运维中企业安全防护需求深化理解。
证书备考:针对网安行业相关证书考试内容(含红蓝对抗、应急响应考点)进行专项复习,参加模拟考试,查漏补缺。
运维转行网络攻防知识库分享
网络安全这行,不是会几个工具就能搞定的。你得有体系,懂原理,能实战。尤其是从运维转过来的,别浪费你原来的经验——你比纯新人强多了。
但也要沉得住气,别学了两天Web安全就觉得自己是黑客了。内网、域渗透、代码审计、应急响应,要学的还多着呢。
如果你真的想转,按这个路子一步步走,没问题。如果你只是好奇,我劝你再想想——这行要持续学习,挺累的,但也是真有意思。
关于如何学习网络安全,笔者也给大家整理好了全套网络安全知识库,需要的可以扫码获取!
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
1、网络安全意识
2、Linux操作系统
3、WEB架构基础与HTTP协议
4、Web渗透测试
5、渗透测试案例分享
6、渗透测试实战技巧
7、攻防对战实战
8、CTF之MISC实战讲解
关于如何学习网络安全,笔者也给大家整理好了全套网络安全知识库,需要的可以扫码获取!
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取