adventure part3 03 shell脚本和py文件的定时执行

一、shell脚本定时执行步骤:

1.crontab -e进入当前用户的定时任务编辑模式:
分 时 日 月 周 解释器绝对路径 脚本绝对路径
2.保存,退出,脚本即可按照指定的时间去执行脚本

shell脚本的自动执行,由于没有crontab权限,暂时无法设置。转载一篇文章保存。

(1)时间的格式

command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用或者 /1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
5个*表示每分钟
*表示每分钟/时/日/月/周
*/n表示每隔n分钟/时/日/月整/周
每个时间位多个数值用逗号隔开:* * * * 0,1,2,3,4,5就表示除了周六以外的每一分钟
即记住几个特殊符号的含义:

 “*”代表取值范围内的数字,

 “/”代表”每”,

 “-”代表从某个数字到某个数字,

 “,”分开几个离散的数字

1-10 16 * * 1-5 :周一到周五的每天16点的前10分钟

(2)一些小例子 ( 命令的顺序是 分钟/时/日/月/周 ,当相应位置空缺时可以用*代替)

/2 * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh
上面的例子是每隔2min执行一次上面的shell脚本
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。
* /1 * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

(3)解释器的绝对路径:

which+python3 ===> /usr/local/bin/python3
which+osascript ===> /usr/bin/osascript
which+sh=========>/bin/sh

(4)crontab的一些参数

ps aux | grep cron :查看服务是否已经运行用
crontab -e:编辑当前用户crontab任务,保存退出后自动加到crontab列表中执行
crontab -l :查看当前用户所有crontab 列表
crontab -r :删除当前用户所有crontab 列表

(5)禁止Crontab产生邮件(默认每执行一次发一封邮件)

方法一:在每一条crontab命令末尾加上

/dev/null 2>&1.
或者&> /dev/null
例如:
0 1 5 10 * /path/to/script.sh >/dev/null 2>&1
0 1 5 10 * /path/to/script.sh &> /dev/null

方法二:另外一种方法是编辑crontab
crontab -e
在第一行加入
MAILTO=””
保存退出
这样做的好处是,可以避免 /var/mail/root 体积快速增长

原文链接:https://blog.csdn.net/py_tester/article/details/78272006

二、py文件的定时执行步骤:

(1) 调度模块:schedule
import schedule
import time
import datetime
import os
import requests

schedule是一个第三方轻量级的任务调度模块,可以按照秒,分,小时,日期或者自定义事件执行时间

常用方法:
schedule.every().seconds每秒运行一次
schedule.every(2).seconds 每2秒运行一次
schedule.every(1).to(5).seconds 每1-5秒运行一次
schedule.every().minutes 每分钟运行一次
schedule.every().hour 每小时运行一次
schedule.every().day 每天运行一次如果后面没有at表示每天当前时间执行一次
schedule.every().day.at("00:00"). 每天凌晨运行一次
schedule.every().week每周凌晨运行一次
schedule.every().wednesday.at("00:00") 每周三凌晨运行一次

(2) 定义job函数
  • 定义函数使用到os.system:
    os模块中的system()函数可以方便地运行其他程序或者脚本。
    语法如下:os.system(command)

其参数含义如下所示:
command 要执行的命令,相当于在Windows的cmd窗口中输入的命令。如果要向程序或者脚本传递参数,可以使用空格分隔程序及多个参数;

  • 执行py文件, 并指定输出到log文件中:command='/path/python3 /path/name.py>> /path/ name.log 2>&1 &'
  • 其中path 是据对路径,示例如下:
import os
os.system("python ./1.py 1>>log.txt")
os.system("python ./2.py 1>>log.txt")
os.system("python ./4.py 1>>log.txt")

至于Linux nohup、&、 2>&1是什么,参考链接:https://blog.csdn.net/lovewebeye/article/details/82934049

定义job

def job1():
    """
    dw_dim_df 时间维度表
    """
    print('Job1:每天19:00执行一次')
    print('Job1-startTime:%s' % (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
    os.system(
        "/home/anaconda3/bin/python3 /home/frog005/adventure_mdx/create_dim_date.py >> 
/home/frog005/adventure_mdx/mdx/mdx_logs/create_dim_date_schedule.log 2>&1 &")
    time.sleep(20)
    print('Job1-endTime:%s' % (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
    print('------------------------------------------------------------------------')

定时运行job 保存得到schedule.py文件

if __name__ == '__main__':
    schedule.every().day.at('19:00').do(job1)
    schedule.every().day.at('19:02').do(job2)
    schedule.every().day.at('19:05').do(job3)
    schedule.every().day.at('19:07').do(job4)
(3) linux 不间断任务
  • 在相应的schedule.py文件下运行nohup python -u name.py > xxx.log 2>&1 &, 得到进程号 大功告成
  • 查看进程:ps -e
  • 关闭进程: kill -9 进程号
    linux查看进程

shell脚本同样可以用schedule执行

其他方法:
https://www.cnblogs.com/linuxprobe/p/11261690.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容