crontab 定时运行脚本程序

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://blog.csdn.net/longxibendi/article/details/6125075

      https://blog.csdn.net/p106786860/article/details/51318467

      https://www.jianshu.com/p/63ded646d4cd

   (3) 路径相关文章

      https://www.computerhope.com/unix/upwd.htm

      https://blog.csdn.net/10km/article/details/51906821

      https://my.oschina.net/leejun2005/blog/150662

      https://blog.csdn.net/diabloneo/article/details/7173438

猜你喜欢

转载自blog.csdn.net/try2find/article/details/80595600