zoukankan      html  css  js  c++  java
  • linux使用shell脚本定时执行python代码

    在linux上设置定时任务或者使用shell脚本都可以执行python代码;其中定时任务的设置在命令 crontab -e 中可以查看和设置。

    假设目前有一个python脚本:

    import numpy as np
    
    print('------')
    aa = [[1,2,3],[4,5,6]]
    print('aa is:',aa)
    bb = np.array(aa)
    print('bb is:',bb)
    print('------')
    • 方法一:直接在定时任务中设置执行 *.py 文件,但是要先在python代码中指定解释器路径,该路径会覆盖默认路径。
    #!/root/anaconda3/envs/my_env/bin/python3
    
    import numpy as np
    
    print('------')
    aa = [[1,2,3],[4,5,6]]
    print('aa is:',aa)
    bb = np.array(aa)
    print('bb is:',bb)
    print('------')

    上述代码就是test.py文件,需要在第一行指定执行脚本的应用。

    然后,crontab -e 中编辑定时任务,例如(每5分钟执行一次):

    */5 * * * * /home/test_python/test.py && echo "runing succeed!" >> /home/test_python/test.log 2>&1

    如果出现 permission denied 错误,就要先使用 chmod u+x test.py 来使得python代码可执行。

    • 方法二:使用shell脚本进行批处理,vim test.sh文件
    #!/bin/bash
    
    vardate=$(date +%c)
    cd /home/test_python
    ./test.py && echo "${vardate}: runing succeed!" >> /home/test_python/test.log 2>&1

    然后 chmod u+x test.sh,命令行也可直接执行:

    sh test.sh
    或者
    ./test.sh

    设置定时任务 crontab -e,则可以更简单(因为很多设置或者输入输出都可以在 *.sh 文件中):

    */5 * * * * /home/test_python/test.sh

    注意:此时的 test.py文件还是方法一中的,在第一行有写python解释器位置。

    • 方法三:如果在test.py文件中没有指定第一行的python解释器,而是直接使用 /bin/bash,则 *.sh 文件中需要用绝对路径指定python路径。

    此时python代码是纯python文件 test_2.py:

    import numpy as np
    
    print('------')
    aa = [[1,2,3],[4,5,6]]
    print('aa is:',aa)
    bb = np.array(aa)
    print('bb is:',bb)
    print('------')

    那么,test_2.sh 文件就要写:

    #!/bin/bash
    
    cd /home/test_python
    /root/anaconda3/envs/my_env/bin/python3 test_2.py && echo "runing succeed!" >> /home/test_python/test_2.log 2>&1

    然后赋予执行权限:chmod u+x test_2.sh

    设置定时任务:

    */5 * * * * /home/test_python/test_2.sh

    附加:

    如果要命令行执行 hive 或 spark-sql 脚本(例如要设置定时任务,操作hive表),可在 *.sh 文件中使用:hive -e "insert into ...... "或者 spark-sql -e " insert into ...... "等命令。

    #

  • 相关阅读:
    c++函数模板
    C++左移运算符重载
    and or bool and a or b 原理解释
    Python的垃圾回收机制
    《C++ 101条建议》学习笔记——第一章快速入门
    在应用中嵌入Python:转
    使用C++扩展Python的功能 转自:http://blog.csdn.net/magictong/article/details/8897568#comments
    python扩展实现方法--python与c混和编程 转自:http://www.cnblogs.com/btchenguang/archive/2012/09/04/2670849.html
    python文件头的#-*- coding: utf-8 -*- 的作用
    Pythhon 字典 key in dict 比 dict.has_key (key)效率高 为什么?
  • 原文地址:https://www.cnblogs.com/qi-yuan-008/p/13586945.html
Copyright © 2011-2022 走看看