温馨提示×

怎样测试Ubuntu触发脚本

小樊
39
2026-08-05 23:11:54
栏目: 智能运维

在 Ubuntu 里“触发脚本”有很多种含义,常见做法也不同。下面按最常见的几种触发方式给你一个清晰对照,你可以看看哪一种符合你的场景。


一、手动触发(最基础)

bash test.sh
# 或
./test.sh

前提:

chmod +x test.sh

✅ 适合:调试脚本是否正常执行


二、定时触发(cron)

1️⃣ 编辑定时任务

crontab -e

2️⃣ 示例(每分钟执行一次)

* * * * * /home/user/test.sh >> /home/user/test.log 2>&1

3️⃣ 查看是否执行

tail -f /home/user/test.log

✅ 适合:定时任务、自动化脚本


三、开机触发

方法一:crontab

@reboot /home/user/test.sh

方法二:systemd(推荐)

1️⃣ 创建服务

sudo nano /etc/systemd/system/test.service

内容:

[Unit]
Description=Test Script

[Service]
ExecStart=/home/user/test.sh
Restart=no

[Install]
WantedBy=multi-user.target

2️⃣ 启用

sudo systemctl daemon-reload
sudo systemctl enable test.service
sudo systemctl start test.service

✅ 适合:服务器、后台服务


四、文件/目录变化触发(inotify)

示例:文件变动触发脚本

sudo apt install inotify-tools
inotifywait -m /home/user/watchdir -e modify |
while read path action file; do
    /home/user/test.sh
done

✅ 适合:监控目录、自动处理新文件


五、网络/端口触发(socket 激活)

sudo apt install socat
socat TCP-LISTEN:12345,fork EXEC:/home/user/test.sh

✅ 适合:简单服务触发


六、事件触发(systemd 路径监控)

[Path]
PathModified=/home/user/watchfile

[Install]
WantedBy=multi-user.target
sudo systemctl enable test.path
sudo systemctl start test.path

✅ 适合:文件变化时自动执行


七、调试脚本是否真的被触发

1️⃣ 加日志

#!/bin/bash
echo "$(date) script triggered" >> /tmp/test.log

2️⃣ 模拟触发

bash test.sh

3️⃣ 查看结果

cat /tmp/test.log

八、最常见问题排查

❌ 脚本没执行?

  • 是否 chmod +x
  • cron 是否使用绝对路径
  • cron 环境变量不全(PATH 问题)
  • systemd 是否 enable

九、告诉我即可精准回答

你可以直接说:

  • 开机触发 还是 定时触发
  • 文件变化触发 还是 服务触发
  • 脚本内容是什么?

我可以帮你写完整可运行的示例

0