我在 /usr/local/1.sh 有这个 shell 脚本:
#!/bin/sh
wget -r -np --user=peter --password='123' ftp://67.225.87.95/ -p /test/
如果我使用来运行它
# sh 1.sh
脚本执行正常,并完成了它应该做的事情。
但如果我创建一个 cron 作业来执行完全相同的脚本:
1 2 * * * /usr/local/bin/1.sh
脚本根本没有执行。
可能出了什么问题?
答案1
- 在 cron 任务中执行某些操作时始终使用完整路径
- 将所有输出、错误重定向到日志文件以查看发生的情况:
1 2 * * * /usr/local/bin/1.sh > /var/log/1.log 2>&1
答案2
如果你要直接运行它而不调用 shell 解释器,则需要提供适当的权限:
chmod +x /usr/local/bin/1.sh
否则,运行针对其的解释器:
1 2 * * * /bin/sh /usr/local/bin/1.sh
答案3
代替:
1 2 * * * /usr/local/bin/1.sh
经过:
1 2 * * * /bin/bash /usr/local/bin/1.sh
或者
收下:
1 2 * * * /usr/local/bin/1.sh
并将以下内容添加到/usr/local/bin/1.sh
:
#!/bin/bash
(你可能需要/bin/bash
用任何which bash
告诉你的东西来替换)