Ubuntu触发脚本自动化执行的常见方法
这是最基础的触发方式,适用于临时需要运行的脚本。操作步骤如下:
cd命令导航到脚本所在目录(如cd /home/user/scripts)。chmod +x script.sh(script.sh为你的脚本文件名)。./script.sh(若脚本需要root权限,需用sudo ./script.sh)。Cron是Ubuntu系统自带的定时任务调度工具,适合按固定时间间隔重复执行脚本(如每天备份、每小时清理日志)。
crontab -e(若需root权限,用sudo crontab -e)。分钟 小时 日期 月份 星期 命令的格式添加一行。例如:0 3 * * * /home/user/backup.sh(每天凌晨3点执行backup.sh脚本);*/5 * * * * /home/user/cleanup.sh(每5分钟执行一次cleanup.sh)。Ctrl+X→Y→Enter确认保存。crontab -l查看当前用户的cron任务列表。Systemd是Ubuntu的系统和服务管理器,适合需要开机自启、按时间间隔重复执行或依赖其他服务的脚本(如数据库备份、服务监控)。
sudo nano /etc/systemd/system/myscript.service),内容如下:[Unit] Description=My Custom Script After=network.target # 可选:指定服务依赖(如网络就绪后启动) [Service] ExecStart=/home/user/script.sh # 脚本路径 Restart=always # 脚本异常退出时自动重启 User=user # 运行脚本的用户(避免权限问题) [Install] WantedBy=multi-user.target # 系统多用户模式启动 sudo systemctl enable myscript.service(设置开机自启);sudo systemctl start myscript.service(立即启动服务)。sudo systemctl status myscript.service(确认服务是否运行正常)。Inotifywait是inotify-tools包提供的工具,适合文件或目录发生变化时自动触发脚本(如新增文件时上传、修改配置文件时重启服务)。
sudo apt-get install inotify-tools。/home/user/documents),当有文件创建、修改或删除时执行脚本:inotifywait -m /home/user/documents -e create,modify,delete --format '%w%f' | while read file; do /home/user/script.sh "$file"; done-m表示持续监控,-e指定监控的事件类型,--format设置输出格式)。若使用Ubuntu的图形界面(如GNOME、KDE),可通过启动应用程序功能实现用户登录时自动执行脚本。
~/.config/autostart/目录下创建以.desktop结尾的文件(如nano ~/.config/autostart/myscript.desktop),内容如下:[Desktop Entry] Type=Application Name=My Script Exec=/home/user/script.sh Terminal=false # 是否显示终端窗口(false为隐藏) chmod +x ~/.config/autostart/myscript.desktop。