Cron执行bash脚本未按指定路径创建文件的问题求助
解决Cron执行脚本时文件路径异常的问题
问题原因
Cron的默认工作目录是用户主目录(/home/user),而你在终端直接执行脚本时,当前工作目录是Downloads(因为你在该目录下运行bash myCron.sh)。如果脚本里的命令存在路径解析问题(比如误用相对路径、环境变量未正确加载),就会导致文件生成位置不一致。
解决方案
这里提供三种可靠的解决方法,任选其一即可:
1. 在脚本开头切换工作目录
修改/home/user/Downloads/myCron.sh,在开头添加目录切换命令,确保后续操作都在目标目录下执行:
#!/bin/bash # 切换到Downloads目录,切换失败则直接退出脚本 cd /home/user/Downloads || exit 1 touch myFile.txt
之后给脚本添加执行权限:
chmod +x /home/user/Downloads/myCron.sh
2. 确保所有命令使用绝对路径并指定脚本解释器
如果坚持使用绝对路径,需在脚本开头指定bash解释器,避免Cron用默认shell(sh)执行导致的差异:
#!/bin/bash touch /home/user/Downloads/myFile.txt
同样给脚本添加执行权限,Cron任务表达式保持不变即可。
3. 在Cron任务中直接指定工作目录
修改Cron定时任务的表达式,先切换到目标目录再执行脚本:
* * * * * cd /home/user/Downloads && ./myCron.sh
内容的提问来源于stack exchange,提问作者Armando Manalaotao
相关产品推荐
相关产品推荐

