定时执行运维 Shell 脚本,常见做法取决于操作系统和执行环境。下面按场景给你一个实用总结。
cron(推荐,标准方案)crontab -e
# 每天凌晨 2 点执行
0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
# 每 5 分钟执行一次
*/5 * * * * /opt/scripts/check_service.sh
chmod +x /opt/scripts/backup.sh
#!/bin/bash
crontab -l
tail -f /var/log/cron
systemd timer(现代服务器推荐)适合需要精确控制、依赖管理的场景。
service 文件
# /etc/systemd/system/ops-check.service
[Unit]
Description=Ops Check Script
[Service]
Type=oneshot
ExecStart=/opt/scripts/check.sh
timer 文件
# /etc/systemd/system/ops-check.timer
[Unit]
Description=Run ops check daily
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
systemctl daemon-reload
systemctl enable --now ops-check.timer
systemctl list-timers
C:\Git\bin\bash.exe
参数:C:\scripts\ops.sh
apiVersion: batch/v1
kind: CronJob
metadata:
name: ops-job
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: ops
image: alpine:latest
command: ["/bin/sh", "/scripts/ops.sh"]
restartPolicy: OnFailure
exec 9>/var/lock/ops.lock
flock -n 9 || exit 1
如果你愿意,可以告诉我:
我可以直接帮你写一套可落地的定时方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。