mud_sanc 板


LINE

根据鸟哥的 Linux 私房菜 http://linux.vbird.org/linux_basic/0430cron.php#whatiscron_type > crontab -e # 此时会进入 vi 的编辑画面让您编辑工作!注意到,每项工作都是一行。 0 12 * * * mail -s "at 12:00" dmtsai < /home/dmtsai/.bashrc #分 时 日 月 周 |<==============指令串========================>| 这部份就类似 note change 指令,会进入 note 的编辑画面,使用者可以 add/del/insert/edit 任何一行或是增删掉一行。 换言之 crontab 也可以参考 note 的写法,关键就是每一个排程一行。 范例 59 23 1 5 * mail kiki < /home/dmtsai/lover.txt 5/1 23:59,执行 mail kiki 的动作,mail 的内容写在 lover.txt 内。 所以若是 sanc 的黑市拍卖会的话,就可能是这样 59 23 1 5 * /cmds/std/_blarket < 执行哪一个脚本档进来 写成这样是可以的,流控可以完全交给脚本档,这样 crontab 实际上只 管理排程以及对 times_check 的设定。 不过上面的显示格式我会改一下,会增加「谁是排程设定者」。 > crontab -l 就是像 note 指令或 note -list 指令看到的显示结果。 > crontab -r 这个是清掉所有 crontab,不会写。 > crontab -u username 这个就是列出哪些排程是 username 这个使用者设定的。 语法就上面四个而已,所以关键在於理解下面的东西 59 23 1 5 * blarket < 执行哪一个脚本档进来 然後编辑时照规定的栏位填入资料即可。 字串处理时: sscanf(str,"%s %s %s %s %s %s < %s", min,hour,day,mon,week,ob_files,script_files); 设定时 times=依 ({min,hour,day,mon,week}) 综合计算後得出的时间数值 times_check->set_times_check(names,files, ({min,hour,day,mon,week,script_files}), times ); // 然後如果有 loop 的情况时就在这个地方也顺便做 loop 的设定 times=依 ({min,hour,day,mon,week}) 综合计算後得出的下一 loop 设定时间 times_check->set_times_check(names,files, ({min,hour,day,mon,week,script_files}), times ); 这样就设好了,crontab -e 也可以看到该行设定。 接着是 times_check 的处理,理论上会长这样 int times_check(string names,string files,mixed tmps,int times) { 先读出 tmps[5] 以得到脚本档内容,包含该呼叫的函数; (该呼叫的函数也可以统一,比方叫做 exec_crontab) ob=find_object_or_load(files); call_other(ob,该呼叫的函数,...); 只要确定 call_other 的呼叫型式即可。 不过最难的就是这个 * 判断了,crontab 的核心就在这里,编写很简单, 後端的程式判断就很困难,随便举几个 1 * * * * 每个小时的 "1分" 的时候 loop 一次 = 3600秒loop一次 * 1 * * * 每天的 "1点" 的时候 loop 一次 = 86400秒loop一次 * * 1 * * 每个月的 "1号" 的时候 loop 一次 = 无规律,依月份决定 * * * 1 * 每年的 "1月" 的时候 loop 一次 * * * * 1 每周的 "星期一" 的时候 loop 一次 这五种都是理论上可能存在的,这四种也不难写,难的是 * 小於 4 个的 情况,且有使用到 - 的情况,例如 00 09 * * 1-5 星期一到五,每天的 9:00 10 12 29 9 * 每年的 9/29 12:10 分 15 5-7 * * * 每天的 5:15、6:15、7:15 分 而且是五个栏位都可以用 - 的场合。 要完全具现 * 及 - 的使用并不是不行,但是以这个为例 15 5-7 * * * ----------> 每天的 5:15、6:15、7:15 分 如何写判断 linux 用的是很笨的方法,每一分都去找 crontab 里面有没有 match 到的排程,所以它的 crontab 写越多行,loading 就越大,但判断却 会比较简单。若是写判断式去判断要 set_times_check 哪些东西,判 断就会很复杂。 总之,这部份的判断式是商业机密,就不写在 bbs 了。 Laechan --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.253.164.127
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud_sanc/M.1514725122.A.0DB.html
1F:→ typers : crontab 最小单位是分, 不是秒喔 01/01 12:11
2F:→ laechan : 啊对厚 01/01 12:38
错误的地方已修正,感谢。 ※ 编辑: laechan (122.117.106.224), 01/01/2018 15:48:28







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP