cron 让脚本每天凌晨自己跑,journalctl 让日志有处查。
cron 表达式详解
crontab -e
分 时 日 月 周 命令
* * * * * command
0 3 * * * /backup/backup.sh # 每天凌晨 3 点
*/10 * * * * /opt/check.sh # 每 10 分钟
0 0 1 * * /opt/monthly.sh # 每月 1 号午夜
30 8 * * 1 /opt/weekly.sh # 每周一 8:30
crontab 常见坑
crontab -l # 看当前用户的任务
crontab -r # 删除所有任务(危险!)
cron 环境变量极简,脚本里写绝对路径
%在 cron 里是换行,要用转义\%输出没地方去会发邮件,加
>/dev/null 2>&1丢掉或重定向到日志改完用
crontab -l确认
0 3 * * * /backup/backup.sh >> /var/log/backup.log 2>&1
journalctl:查系统日志
journalctl -u nginx # 看 nginx 服务的日志
journalctl -u nginx -f # 实时跟(像 tail -f)
journalctl --since "1 hour ago" # 最近一小时
journalctl -p err # 只看错误级别
journalctl --disk-usage # 日志占了多少磁盘
logrotate:日志轮转
日志不切会撑爆磁盘。/etc/logrotate.d/ 里配:
/var/log/nginx/*.log {
daily
rotate 7
compress
missingok
}
每天切一次,留 7 份,压缩旧的。
实战:每天凌晨备份
# 1. 确认脚本可执行
chmod +x /backup/backup.sh
# 2. 加 cron
crontab -e
# 加一行:
0 3 * * * /backup/backup.sh >> /var/log/backup.log 2>&1
# 3. 第二天查日志确认跑了
grep "备份完成" /var/log/backup.log
小结
下一篇 L14:搭建 Web 服务——nginx 虚拟主机实战,从外网访问。