1 编写crontab文件,设定启动时间,执行脚本
2 第三方软件所需的环境变量
(1) crontab启动命令
(2) shell脚本内容
PATH定义了命令行输入命令的搜索路径,因此将python命令的安装路径放入PATH变量中。
export命令 用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。
source命令 在当前Shell环境中从指定文件读取和执行命令,命令返回退出状态。
source filename 与 sh filename 及./filename执行脚本的区别在那里呢?
1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表 示当前目录的。
2.sh filename 重新建立一个子shell,在
子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带 回父shell,除非使用export。
3.source filename:这个命令其实只是简单地读取脚本里面的语句依次在当
前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改 变变量的语句都会保存在当前shell里面。
(3) shell 脚本路径对比
输出结果:
pwd prints the full pathname of the current working directory.
执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。
readlink 输出符号链接值或者权威文件名
-f 选项可以递归跟随给出文件名的所有符号链接以标准化,除最后一个外所有组件必须存在。
简单地说,就是一直跟随符号链接,直到直到非符号链接的文件位置,限制是最后必须存在一个非符号链接的文件。
符号链接:就是软连接,即windows中的快捷方式
上面更直白的解释是:跟随快捷方式,找到最终的实际文件,而且该实际文件必须存在。
维基百科对dirname的解释:
dirname是一个标准UNIX程序。给予dirname一个路径名时,它会删除最后一个斜线('/'
)后的任何后缀,并返回结果。
$0
Shell本身的文件名
3 crontab如何成功执行python脚本
test_crontab.sh的内容:
aaa.py 的内容:
python脚本生成的日志如下:
aaa.log的内容:
说明15:37定时任务执行了,crontab执行的脚本找到了python编译器。
只要保证当前shell 的PATH中能够有/usr/bin目录就能运行python程序。
环境变量配置:
方法1:shell启动时加载
方法2:shell子进程启动时export
方法3:使用绝对路径
4 参考文章:
(1) crontab使用参考文章
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
(2) shell环境变量设置参考文章
https://www.jianshu.com/p/63ded646d4cd
(3) 路径相关文章
https://www.computerhope.com/unix/upwd.htm