作为一名长期与Linux打交道的运维工程师,我整理了日常工作中最高频使用的六大核心技能模块。这些内容不是教科书式的理论讲解,而是经过生产环境验证的实战心得,每个命令背后都有血泪教训。下面就以问题导向的方式,分享如何快速掌握这些必备技能。
很多人对crontab的五个星号感到困惑,其实它们分别对应:
bash复制* * * * *
│ │ │ │ │
│ │ │ │ └─ 星期几 (0-7) 0和7都代表周日
│ │ │ └─── 月份 (1-12)
│ │ └───── 日期 (1-31)
│ └─────── 小时 (0-23)
└───────── 分钟 (0-59)
特别提醒:星期字段中,0和7都表示周日,这是很多新手容易混淆的地方
这些是我在服务器上真实使用的定时任务配置:
bash复制# 每天午夜执行清理脚本
0 0 * * * /root/scripts/clean-es-posts.sh
# 每周一凌晨3点执行备份
0 3 * * 1 /root/scripts/weekly-backup.sh
# 每月1号凌晨3点执行统计任务
0 3 1 * * /root/scripts/monthly-report.sh
# 每天下午3点执行数据同步
0 15 * * * /root/scripts/data-sync.sh
# 每小时执行一次监控检查
0 * * * * /root/scripts/health-check.sh
日志记录:建议所有定时任务都重定向输出到日志文件,例如:
bash复制0 * * * * /root/scripts/task.sh >> /var/log/task.log 2>&1
环境变量问题:cron执行环境与用户shell环境不同,建议在脚本中显式设置PATH等变量
权限控制:不要用root运行所有任务,应该为不同任务创建专用用户
锁机制:长时间运行的任务需要加锁,防止重复执行
755这个数字是怎么来的?
常用权限设置:
bash复制chmod 750 file.txt # rwxr-x--- (所有者可读写执行,组用户可读执行)
chmod 644 file.txt # rw-r--r-- (常规文件权限)
chmod 700 script.sh # rwx------ (私有脚本)
除了基本的rwx,还有三个特殊权限位:
bash复制chmod 4755 /usr/bin/passwd
bash复制chmod 2775 /shared_dir
bash复制chmod 1777 /tmp
umask计算:新建文件的默认权限是666-umask,目录是777-umask。查看当前umask:
bash复制umask
ACL高级控制:当基本权限不够时,使用ACL:
bash复制setfacl -m u:user1:rwx /path/to/file
getfacl /path/to/file
root目录的特殊性:即使给/root目录设置777权限,非root用户仍然无法访问,这是Linux的安全机制
bash复制sleep 1000 & # 后台运行
jobs -l # 查看当前终端后台任务
fg %1 # 将任务1调回前台
Ctrl+Z # 暂停当前任务并放入后台
bg %1 # 让暂停的任务在后台继续运行
普通后台任务在终端退出时会终止,nohup可以解决这个问题:
bash复制nohup ./long-running-script.sh > script.log 2>&1 &
关键点:
| 命令 | 作用范围 | 显示内容 | 适用场景 |
|---|---|---|---|
| jobs | 当前终端启动的任务 | 仅后台/暂停任务 | 终端内任务管理 |
| ps aux | 系统所有进程 | 完整进程信息 | 系统级监控 |
| top | 实时进程状态 | 动态更新的进程列表 | 性能分析 |
| htop | 增强版top | 彩色交互式界面 | 更友好的监控 |
bash复制sudo ufw status # 查看状态
sudo ufw allow 80/tcp # 开放80端口
sudo ufw allow 443 # 默认允许tcp
sudo ufw deny 22 # 拒绝SSH连接
sudo ufw enable # 启用防火墙
sudo ufw reload # 重载配置
限制IP范围:
bash复制sudo ufw allow from 192.168.1.0/24 to any port 22
应用配置文件:
bash复制sudo ufw app list
sudo ufw allow 'Nginx Full'
日志查看:
bash复制sudo tail -f /var/log/ufw.log
重要提示:在远程服务器上配置防火墙时,一定要先允许当前SSH连接端口,否则可能被锁在外面
检查端口占用:
bash复制sudo lsof -i :80
sudo ss -tulnp | grep 80
sudo netstat -tulnp | grep 80 # 旧版系统使用
测试端口连通性:
bash复制telnet example.com 80
nc -zv example.com 80
Nmap基础扫描:
bash复制nmap -sV -p 80,443,22 example.com
常用参数:
Curl高级用法:
bash复制curl -I http://example.com # 仅显示响应头
curl -L http://example.com # 跟随重定向
curl -v http://example.com # 显示详细过程
curl -o output.html http://example.com # 保存到文件
curl -X POST -d 'data' http://example.com/api # POST请求
bash复制nslookup example.com # 基础查询
dig example.com # 详细信息
host example.com # 简化版dig
Linux系统:
bash复制ip addr show # 显示所有接口
ip route show # 显示路由表
Mac系统:
bash复制ifconfig en0 # 查看en0接口
ipconfig getifaddr en0 # 获取en0的IP地址
ip addrping 8.8.8.8dig example.comtelnet example.com 80traceroute example.com在实际运维工作中,我发现这些工具组合使用效率最高:
htop + nmoncurl + telnet + tcpdumpgetfacl/setfacl配合传统权限对于想深入学习Linux系统管理的同学,我建议:
strace和ltrace命令分析程序行为systemd管理服务awk和sed进行日志分析SELinux和AppArmor等安全模块记住,真正的Linux高手不是记住所有命令,而是知道在什么场景下使用什么工具,并能够快速找到解决方案。这些笔记只是起点,真正的学习来自于实践中的不断尝试和总结。