欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

如下,我们成功的更改了路径。