ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Linux系统管理员必备:高频核心命令与实用技巧

Linux系统管理员必备:高频核心命令与实用技巧

1. Linux系统命令目录解析

作为一名Linux系统管理员,掌握常用命令是基本功。但面对数百个命令,新手常会感到无从下手。我将从实际运维角度,分类整理那些真正高频使用的核心命令,并附上我在生产环境中积累的实用技巧。

Linux命令通常存放在/bin、/sbin、/usr/bin等目录,通过which或whereis可以快速定位命令路径。比如查询ls的位置:

which ls # 输出:/bin/ls

2. 文件与目录操作命令

2.1 基础文件操作

ls命令的-lht组合是我最常用的参数:

  • -l长格式显示
  • -h人类可读的文件大小
  • -t按修改时间排序
ls -lht /var/log # 输出示例: # -rw-r--r-- 1 root root 2.3M Mar 12 10:20 syslog # -rw-r--r-- 1 root root 1.8M Mar 12 09:15 kern.log

注意:在脚本中避免直接使用ls解析文件列表,推荐使用find或数组操作,因为ls的输出可能包含特殊字符导致解析异常。

2.2 高级目录管理

find命令的-exec参数配合+替代\;能显著提升批量操作效率:

# 查找并压缩所有7天前的日志文件 find /var/log -name "*.log" -mtime +7 -exec gzip {} +

rsync是我进行目录同步的首选工具,关键参数组合:

rsync -avz --delete --progress /source/ user@remote:/destination/ # -a 归档模式 # -v 详细输出 # -z 压缩传输 # --delete 同步删除

3. 系统监控与进程管理

3.1 实时监控命令

htop比传统top更直观,安装后建议配置:

sudo apt install htop htop -d 10 # 设置10秒刷新间隔

nmon是性能分析的利器,启动后按:

  • c显示CPU
  • m显示内存
  • d显示磁盘
  • n显示网络

3.2 进程调试技巧

strace追踪系统调用时,我常用这些参数:

strace -ff -tt -T -o debug.log python script.py # -ff 跟踪子进程 # -tt 带时间戳 # -T 显示调用耗时

lsof排查文件占用问题示例:

lsof /var/lib/docker # 查看哪些进程在使用Docker目录

4. 网络配置与调试

4.1 网络状态分析

ss替代netstat的现代方案:

ss -tulnp # -t TCP连接 # -u UDP连接 # -l 监听状态 # -n 数字形式显示 # -p 显示进程信息

tcpdump抓包实战命令:

tcpdump -i eth0 -nn -s0 -w capture.pcap port 80 # -nn 不解析主机和端口名 # -s0 抓完整包 # -w 保存到文件

4.2 防火墙管理

ufw简化iptables配置:

sudo ufw allow 22/tcp sudo ufw enable

复杂规则仍需要iptables:

iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP # 限制单IP连接数

5. 包管理与系统服务

5.1 软件包管理

APT高级用法:

sudo apt-get --purge remove package # 彻底删除 sudo apt-cache search ^nginx # 正则搜索

YUM仓库配置技巧:

yum-config-manager --add-repo http://repo.example.com yum makecache fast

5.2 服务管理

systemctl的常用操作:

systemctl list-unit-files --type=service # 查看所有服务 systemctl edit --full servicename # 编辑服务配置 journalctl -u nginx -f # 跟踪服务日志

6. 文本处理三剑客

6.1 grep进阶技巧

grep -P 'pattern' file # 启用PCRE正则 grep -m 100 'error' logfile # 只匹配前100行 zgrep 'exception' /var/log/*.gz # 直接搜索压缩包

6.2 sed实战示例

批量替换文件内容:

sed -i.bak 's/old/new/g' *.conf # -i.bak 创建备份文件

6.3 awk数据分析

统计Nginx日志状态码:

awk '{print $9}' access.log | sort | uniq -c | sort -rn

7. 磁盘与存储管理

7.1 磁盘空间分析

ncdu交互式磁盘分析工具:

ncdu /var # 按d删除文件 # 按n按文件名排序

df的易读格式:

df -hT -x tmpfs -x devtmpfs # 排除临时文件系统

7.2 LVM日常操作

扩展逻辑卷步骤:

lvextend -L +10G /dev/vg00/lv_data resize2fs /dev/vg00/lv_data

8. 用户与权限控制

8.1 sudo精细配置

编辑/etc/sudoers推荐使用:

visudo

示例规则:

User_Alias ADMINS = user1, user2 ADMINS ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

8.2 ACL高级权限

设置目录默认ACL:

setfacl -d -m u:user:rwx,g:group:rx,o::- /shared getfacl /shared

9. 定时任务管理

9.1 crontab最佳实践

编辑用户crontab:

crontab -e

示例任务:

0 3 * * * /path/to/backup.sh >/dev/null 2>&1 10 4 * * 1 /usr/bin/certbot renew --quiet

重要:所有cronjob都应该重定向输出,避免系统邮件堆积

9.2 systemd定时器

替代cron的现代方案:

systemctl list-timers

10. 安全加固实践

10.1 SSH安全配置

/etc/ssh/sshd_config关键参数:

PermitRootLogin no PasswordAuthentication no AllowUsers admin

10.2 审计日志配置

安装auditd并添加规则:

sudo apt install auditd auditctl -a always,exit -F arch=b64 -S execve

11. 容器与虚拟化命令

11.1 Docker日常操作

清理无用容器和镜像:

docker system prune -af docker volume prune

11.2 KVM管理命令

创建虚拟机示例:

virt-install --name vm1 --ram 2048 --disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 --vcpus 2 --os-type linux --os-variant ubuntu20.04 --network bridge=br0 --graphics none --console pty,target_type=serial --location 'http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/' --extra-args 'console=ttyS0,115200n8 serial'

12. 开发调试工具链

12.1 编译安装通用流程

./configure --prefix=/usr/local/app make -j$(nproc) sudo make install

12.2 GDB调试示例

调试崩溃的程序:

gdb -ex run --args /path/to/program (gdb) bt full # 查看完整堆栈

13. 性能优化命令

13.1 内存分析

free的正确解读方式:

free -h # 重点关注available列

13.2 IO性能测试

fio基准测试示例:

fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting

14. 日志分析实战

14.1 日志实时监控

multitail多日志并行查看:

multitail -cS apache /var/log/apache2/access.log -cS mysql /var/log/mysql/error.log

14.2 日志统计分析

统计HTTP状态码分布:

cat access.log | awk '{count[$9]++} END {for(code in count) print code, count[code]}' | sort -n

15. 终端生产力工具

15.1 tmux会话管理

我的常用配置~/.tmux.conf:

set -g mouse on bind | split-window -h bind - split-window -v

15.2 命令行快捷键

提高效率的组合:

  • Ctrl + r反向搜索历史命令
  • Alt + .插入上条命令的最后一个参数
  • Ctrl + x + e用编辑器编辑当前命令

16. 系统救援与修复

16.1 单用户模式

GRUB进入救援模式:

  1. 启动时按住Shift
  2. 选择高级选项
  3. 选择recovery mode

16.2 文件系统修复

ext4文件系统修复:

fsck -y /dev/sda1

17. 环境配置管理

17.1 环境变量设置

推荐在/etc/profile.d/添加自定义配置:

echo 'export PATH=$PATH:/opt/bin' > /etc/profile.d/custom.sh

17.2 别名配置技巧

实用的.bashrc别名:

alias ll='ls -alF' alias grep='grep --color=auto' alias df='df -h'

18. 硬件信息查询

18.1 设备信息获取

查看PCI设备详情:

lspci -vvnn

18.2 温度监控

安装lm-sensors后:

sensors watch -n 2 sensors # 实时监控

19. 备份与恢复策略

19.1 增量备份方案

使用rsnapshot配置示例:

backup /etc/ localhost/ backup /home/ localhost/

19.2 数据库备份

MySQL热备份命令:

mysqldump --single-transaction -u root -p dbname > backup.sql

20. 跨平台操作命令

20.1 Windows互操作

通过smbclient访问共享:

smbclient //server/share -U user

20.2 编码转换技巧

处理Windows文本文件:

iconv -f GBK -t UTF-8 win.txt > linux.txt dos2unix script.sh
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进