crontab的默认执行路径问题
程序员文章站
2022-04-21 20:06:38
...
在Linux下,执行路径经常会影响一个程序的执行结果,最近用到crontab命令,好奇crontab的默认执行路径。
结论:
crontab的默认执行路径为:当前用户的根路径。
如果希望改变执行路径,可以通过简单的shell编程的方式(见下文)。
如果不确定执行的路径,可以通过shell编程的方式去调用程序。
1. 实验测试
1.1 查看我们的根路径:
# cd ~
# pwd
这里的根路径:/root
1.2 然后我们在根路径创建一个测试目录:
# mkdir -p d1/d2/d3
1.3 在该路径下,我们写一个python程序,输出当前路径。
# vim test.py
import os
print(os.getcwd())
1.4 运行该程序:
# python test.py >> out.log
1.5 查看输出结果:
# cat out.log
输出结果如下:
/root/d1/d2/d3
1.6 然后我们在crontab中定时调度该脚本,并把结果打印到another.log中:
*/1 * * * * python /root/d1/d2/d3/test.py >> /root/d1/d2/d3/another.log
1.7 一分钟后查看another.log的结果:
/root
发现路径是/root,也就是当前用户的根路径。
验证了 crontab的默认执行路径为:当前用户的根路径。
那么接下来,我们如何切换crontab执行的路径呢?
2. 更改程序在crontab中的执行路径
其实很简单,通过简单的shell编程即可:
2.1 我们在 /root/d1/d2/d3 路径下,在创建一个start_test.sh(注意增加可执行权限 chmod 777 start_test.sh)文件:
cd /root/d1/d2/d3
python test.py >> sh.log
2.2 然后配置到crontab中:
*/1 * * * * sh /root/d1/d2/d3/start_test.sh
2.3 一分钟后查看sh.log,发现打印的是我们想要的文件路径:
/root/d1/d2/d3
如下,我们成功的更改了路径。
下一篇: SQL函数说明大全(一)