go中使用cmd与cron

Python015

go中使用cmd与cron,第1张

/bin/bash -c "ls -l"

cmd->golang->pipe

pipe()创建2个文件描述符,fd[0]可读,fd[1]可写

fork() 创建子进程 fd[1]被继承到子进程

dup2() 重定向子进程 stdout/stderr到fd[1]

exec() 在当前进程内,加载并执行二进制程序

模拟一下cmd调用

模拟调用cmd时,杀死bash进程

go开源Cronexpr库

Parse() 解析与校验Cron表达式

Next() 根据当前时间,计算下一次调度时间

模拟一下cron调用

执行结果

模拟多个cron调用

执行结果

利用 Etcd 的Lease租约特性来实现定时功能,同时通过Watch机制来实现多节点情况下只有一个节点执行该任务。通过定时任务库 Cron 的时间字符串解析器Parser来解析任务执行时间。

Etcd

Cron

源码链接