一、文件操作命令
1. 基础文件操作
# 创建、删除mkdir dirname # 创建目录mkdir -p a/b/c # 创建多级目录rmdir dirname # 删除空目录rm -rf dirname # 强制递归删除目录及内容# 创建文件touch filename.txt # 创建空文件> filename.txt # 创建空文件(清空已有文件)echo "content" > file # 创建文件并写入内容# 删除文件rm filename # 删除文件rm -i filename # 交互式删除(询问)rm -f filename # 强制删除# 复制、移动、重命名cp source dest # 复制文件cp -r dir1 dir2 # 递归复制目录mv oldname newname # 重命名或移动mv file dir/ # 移动文件到目录
2. 查看文件内容
# 查看完整文件cat filename # 显示整个文件nl filename # 显示行号的文件内容# 分页查看less filename # 上下翻页查看(推荐)more filename # 向下翻页查看# 查看部分内容head -n 20 file # 查看前20行tail -n 20 file # 查看后20行tail -f logfile # 实时跟踪日志更新tail -100f app.log # 跟踪日志最后100行并实时更新# 其他查看方式tac filename # 反向显示(从最后一行开始)rev filename # 每行反向显示
3. 查找文件
# 按名称查找find /home -name "*.log" # 按文件名查找find . -iname "readme.md" # 忽略大小写find /var -type f -name "*.log" # 只查找文件find /tmp -type d -name "temp*" # 只查找目录# 按时间查找find . -mtime -1 # 1天内修改的文件find . -mtime +7 # 7天前修改的文件find . -amin -60 # 60分钟内访问的文件# 按大小查找find . -size +100M # 大于100M的文件find . -size -10k # 小于10K的文件# 查找并执行操作find . -name "*.tmp" -delete # 查找并删除find . -name "*.log" -exec ls -lh {} \; # 对找到的文件执行命令# locate命令(更快但需要更新数据库)locate filename # 快速查找文件updatedb # 更新locate数据库
4. 文件内容搜索
# grep文本搜索grep "error" logfile # 搜索包含error的行grep -i "error" logfile # 忽略大小写grep -r "pattern" dir/ # 递归搜索目录grep -n "error" logfile # 显示行号grep -v "success" logfile # 反向搜索(不包含的行)grep -c "error" logfile # 统计匹配行数grep -A 3 -B 2 "error" logfile # 显示匹配前后几行grep -E "error|warning" logfile # 正则表达式搜索# 组合使用示例ps aux | grep nginx # 查找nginx进程cat logfile | grep error | wc -l # 统计错误次数
二、系统指标监控命令
1. 系统概览
# 查看系统信息uname -a # 查看内核/系统信息hostnamectl # 查看主机信息cat /etc/os-release # 查看系统版本lsb_release -a # 查看发行版信息# 运行时间和负载uptime # 查看运行时间+负载w # 查看登录用户及负载who # 查看当前登录用户last # 查看登录历史
2. CPU监控
# top - 实时监控top # 动态查看进程和资源占用top -p PID # 监控指定进程top -u username # 监控指定用户进程top -d 5 # 5秒刷新一次top -b -n 1 > cpu.txt # 输出一次快照到文件# CPU详细信息lscpu # 查看CPU架构信息cat /proc/cpuinfo # 查看CPU详情mpstat -P ALL 2 # 每2秒查看所有CPU状态# 按CPU排序查看进程ps aux --sort=-%cpu | head -10 # 查看CPU占用前10的进程
3. 内存监控
# 查看内存使用free -h # 人性化显示内存(推荐)free -m # 以MB显示free -g # 以GB显示# 详细内存信息cat /proc/meminfo # 查看详细内存信息vmstat 2 # 每2秒显示内存、swap等统计# 查看内存占用进程ps aux --sort=-%mem | head -10 # 查看内存占用前10的进程
4. 进程管理
# 查看进程ps aux # 查看所有进程详细信息ps -ef # 查看完整格式进程信息ps aux | grep nginx # 查找特定进程ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -20 # 自定义格式# 实时进程监控htop # top的增强版(需安装)htop -u username # 按用户筛选# 进程树pstree # 显示进程树pstree -p # 显示进程树包含PID
5. 网络监控
# 网络统计netstat -tunlp # 查看所有监听端口(旧版)ss -tunlp # 查看所有监听端口(推荐,更快)ss -s # 查看socket统计netstat -s # 显示网络统计# 实时网络监控iftop # 实时监控网络流量(需安装)nethogs # 按进程显示网络流量(需安装)iptraf-ng # 交互式网络监控(需安装)
三、磁盘管理命令
1. 磁盘空间查看
# 查看磁盘使用情况df -h # 人性化显示所有磁盘(推荐)df -i # 查看inode使用情况df -T # 显示文件系统类型# 查看目录大小du -sh dirname # 查看目录总大小du -h --max-depth=1 /home # 查看一级目录大小du -ah dirname | sort -rh | head -20 # 查看目录下最大文件# 智能磁盘分析ncdu /home # 交互式磁盘分析工具(需安装)
2. 磁盘性能测试
# I/O性能测试iostat -x 2 # 每2秒显示磁盘I/O统计iotop # 类似top的I/O监控(需安装)# 磁盘基准测试dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct # 测试写性能hdparm -Tt /dev/sda # 测试磁盘缓存和缓冲读取速度
3. 挂载管理
# 查看挂载mount # 查看已挂载的文件系统findmnt # 显示挂载树cat /proc/mounts # 查看挂载信息# 挂载操作mount /dev/sdb1 /mnt # 挂载设备umount /mnt # 卸载设备mount -a # 挂载/etc/fstab中所有设备# 查看磁盘分区fdisk -l # 查看所有磁盘分区lsblk # 查看块设备树状图blkid # 查看块设备UUID
四、端口与网络命令
1. 端口占用查询
# 查看监听端口lsof -i:8080 # 查看8080端口被谁占用lsof -i tcp:80 # 查看TCP 80端口lsof -i udp:53 # 查看UDP 53端口lsof -i @192.168.1.1 # 查看指定IP的连接# 网络统计方式ss -tlnp | grep :8080 # 查看8080端口监听进程netstat -tlnp | grep :8080 # 同上(旧版)# 查看所有端口占用lsof -i # 查看所有网络连接lsof -i -P -n # 查看所有连接(不解析服务名和主机名)
2. 网络连接状态
# 查看连接状态ss -tan # 查看所有TCP连接ss -uan # 查看所有UDP连接ss -s # 查看socket统计# 状态筛选ss -tan state established # 查看已建立连接ss -tan state listening # 查看监听端口ss -tan state time-wait # 查看TIME-WAIT连接# 查看指定进程连接ss -tnp | grep nginx # 查看nginx相关连接
五、用户管理命令
1. 用户操作
# 用户管理useradd username # 添加用户userdel -r username # 删除用户及家目录usermod -s /bin/bash username # 修改用户shellchsh -s /bin/bash username # 修改用户shell# 查看用户信息id username # 查看用户ID信息whoami # 查看当前用户who # 查看登录用户w # 查看登录用户及活动lastlog # 查看所有用户最后登录时间# 用户组管理groupadd groupname # 添加用户组groupdel groupname # 删除用户组usermod -aG groupname username # 将用户添加到附加组groups username # 查看用户所在组
2. 密码管理
passwd username # 修改用户密码passwd -l username # 锁定用户账户passwd -u username # 解锁用户账户chage -l username # 查看密码过期信息chage -M 90 username # 设置密码90天后过期
3. 切换用户
su - username # 切换到用户(加载环境变量)su username # 切换到用户sudo -i # 切换到rootsudo -u username command # 以指定用户执行命令
六、权限管理命令
1. 权限基础
# 查看权限ls -l # 查看文件权限ls -la # 查看包括隐藏文件的权限stat filename # 查看文件详细信息# 修改权限(数字方式)chmod 755 filename # rwxr-xr-xchmod 644 filename # rw-r--r--chmod 777 filename # rwxrwxrwx# 修改权限(符号方式)chmod u+x filename # 给所有者添加执行权限chmod g-w filename # 移除组用户的写权限chmod o=r filename # 设置其他用户只读chmod a+x filename # 给所有人添加执行权限
2. 所有权管理
# 修改所有者chown username filename # 修改文件所有者chown :groupname filename # 修改文件所属组chown username:groupname filename # 同时修改chown -R username dir/ # 递归修改目录所有权# 修改所属组chgrp groupname filename # 修改文件所属组chgrp -R groupname dir/ # 递归修改目录所属组
3. 特殊权限
# SUID/SGID权限chmod u+s filename # 设置SUID(以所有者身份运行)chmod g+s dirname # 设置SGID(目录下新建文件继承组)ls -l /usr/bin/passwd # 查看SUID示例# 粘滞位(Sticky Bit)chmod +t dirname # 设置粘滞位(只有所有者能删除)ls -ld /tmp # 查看粘滞位示例# 默认权限umask # 查看当前umaskumask 022 # 设置umask(新文件权限=666-umask)
4. ACL权限
# 查看和设置ACLgetfacl filename # 查看ACL权限setfacl -m u:username:rwx filename # 设置用户ACLsetfacl -m g:groupname:r-x filename # 设置组ACLsetfacl -x u:username filename # 删除用户ACL条目setfacl -b filename # 删除所有ACL条目# 递归设置ACLsetfacl -R -m u:username:rwx dir/setfacl -R -d -m u:username:rwx dir/ # 设置默认ACL
七、扩展命令(实用工具)
1. 压缩解压
# tar命令tar -czvf archive.tar.gz dir/ # 压缩为gziptar -xzvf archive.tar.gz # 解压gziptar -cjvf archive.tar.bz2 dir/ # 压缩为bzip2tar -xjvf archive.tar.bz2 # 解压bzip2tar -cJvf archive.tar.xz dir/ # 压缩为xztar -xJvf archive.tar.xz # 解压xz# zip/unzipzip -r archive.zip dir/ # 压缩为zipunzip archive.zip # 解压zipunzip -l archive.zip # 查看zip内容# gzip/bzip2/xzgzip filename # 压缩文件(生成.gz)gunzip filename.gz # 解压.gzbzip2 filename # 压缩文件(生成.bz2)bunzip2 filename.bz2 # 解压.bz2xz filename # 压缩文件(生成.xz)unxz filename.xz # 解压.xz
2. 文本处理
# 排序去重sort filename # 排序文件内容sort -u filename # 排序并去重sort -n filename # 按数值排序sort -r filename # 反向排序uniq filename # 去除连续重复行uniq -c filename # 统计重复次数# 文本转换wc -l filename # 统计行数wc -w filename # 统计单词数wc -c filename # 统计字符数cut -d',' -f1 filename # 按逗号分隔取第一列awk '{print $1}' filename # 打印第一列sed 's/old/new/g' filename # 替换文本tr 'a-z' 'A-Z' < filename # 转为大写
3. 系统服务
# systemd系统systemctl status servicename # 查看服务状态systemctl start servicename # 启动服务systemctl stop servicename # 停止服务systemctl restart servicename # 重启服务systemctl enable servicename # 设置开机启动systemctl disable servicename # 禁用开机启动systemctl list-units --type=service # 列出所有服务journalctl -u nginx # 查看服务日志journalctl -f -u nginx # 实时查看服务日志# 旧版init系统(如CentOS 6)service servicename statusservice servicename startservice servicename stopchkconfig servicename on # 开机启动chkconfig servicename off # 关闭开机启动
4. 时间日期
date # 显示当前日期时间date "+%Y-%m-%d%H:%M:%S" # 格式化显示date -d "2024-01-01" +%s # 转换为时间戳date -d @1704067200 # 时间戳转日期cal # 显示日历cal -3 # 显示上月、本月、下月日历timedatectl # 查看和设置时间(systemd)timedatectl set-time "2024-01-01 12:00:00"
八、实用技巧组合
1. 常用管道组合
# 查看大文件并统计cat access.log | grep "404" | wc -l# 查找并处理文件find /var/log -name "*.log" -mtime +30 -exec rm {} \;# 监控日志变化tail -f app.log | grep --line-buffered "ERROR"# 查看进程内存占用ps aux --sort=-%mem | awk 'NR<=11 {print $0}'# 统计文件类型数量find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn
2. 性能问题排查流程
# 快速系统健康检查echo "=== 系统负载 ==="; uptimeecho "=== 内存使用 ==="; free -hecho "=== 磁盘空间 ==="; df -hecho "=== CPU占用前5 ==="; ps aux --sort=-%cpu | head -6echo "=== 内存占用前5 ==="; ps aux --sort=-%mem | head -6# 网络连接统计ss -snetstat -nat | awk '{print $6}' | sort | uniq -c | sort -rn
3. 安全相关
# 查看登录失败lastb # 查看失败登录尝试grep "Failed password" /var/log/auth.log # 查看密码失败# 查看sudo使用cat /var/log/auth.log | grep sudo# 查看历史命令history # 查看命令历史history | grep "rm" # 查找包含rm的历史命令!100 # 执行历史记录中第100条命令