Debian 环境中脚本自动化的实用方案
一 定时任务
0 6 * * * /home/user/backup.sh
保存后可用 crontab -l 查看。系统级任务可编辑 /etc/crontab(需在命令前指定运行用户),或将脚本放入 /etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/ 目录,由系统按周期自动执行。适合周期备份、清理、拉取数据等例行作业。二 开机与守护进程自动化
[Unit]
Description=My Application
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/myapp --config /etc/myapp.conf
Restart=always
User=myapp
WorkingDirectory=/var/lib/myapp
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
启用与启动:sudo systemctl daemon-reload
sudo systemctl enable --now myapp.service
sudo systemctl status myapp.service
如需开机执行一次性命令,可启用 rc-local(若系统提供该服务):在 /etc/rc.local 的 exit 0 前添加命令,并确保文件可执行(如:sudo chmod +x /etc/rc.local)。适合守护进程、代理/客户端、开机初始化脚本等场景。三 systemd 定时器替代 cron
[Unit]
Description=My Scheduled Task
[Service]
Type=oneshot
ExecStart=/usr/local/bin/mytask.sh
[Unit]
Description=Timer for My Scheduled Task
[Timer]
OnCalendar=*:0/5
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now mytask.timer
systemctl list-timers --all
journalctl -u mytask.{service,timer}
适合精确到秒级、需要与日志/依赖单元联动、跨重启保持调度的任务。四 一次性任务与交互式自动化
echo "/home/user/backup.sh" | at now + 1 day
atq # 查看待执行任务
atrm <job_id> # 删除指定任务
适合临时维护、一次性数据迁移等。对于需要自动应答的交互式命令(如串口/终端交互),可使用 expect 编写自动化脚本,并通过 systemd 服务 在开机或按需启动。适合网络设备初始化、调制解调器/终端自动化等场景。五 图形会话自启动
[Desktop Entry]
Type=Application
Exec=/usr/bin/chromium --kiosk https://example.com
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Kiosk Browser
适合信息看板、展陈终端、浏览器 Kiosk 模式等。