[Shell] swoole_timer_tick 与 crontab 实现定时任务和监控
手动完成 "任务" 和 "监控" 主要有下面三步:
1. mission_cron.php(定时自动任务脚本):
<?php
/**
* 自动任务 定时器 (5s 执行).
*
* swoole_timer_tick 解决秒级定时;
* 如需调整,注意配置路径 和 mission_cron_monitor.
*
* Daemon Run:
* ./mission_cron_monitor
*
* Foreground Run:
* php mission_cron.php
*
* Stop:
* kill -9 PID
*
* @farwish.com
*/ swoole_timer_tick(5000, function() {
// 查询结果
// 事务性更新
// 记录日志
// 输出结果
}
2. mission_cron_monitor (由 crontab 运行,监控上述脚本):
#/bin/bash
# 监控定时器,断掉重启.
#
# crontab used in /var/spoor/cron/
# ( crontab -e )
#
# @farwish.com phpbin=/usr/local/php7/bin/php
curdir=`dirname $`
script=${curdir}/mission_cron.php
process=`ps aux | grep -v grep | grep ${script}` if test -z "$process"; then
nohup ${phpbin} ${script} > /dev/null >& &
fi
这里 curdir 没有使用 `pwd`,原因在于 pwd 获取的是当前所在工作目录,非执行的脚本所在目录,你可以通过 man 获得详细解释。
pwd - print name of current/working directory
dirname - strip last component from file name
nohup的作用在于不受终端挂断影响,配合 & 后台运行,完美实现了 daemon.
3. 设置用户级 cron 脚本.
# 用户级运行cron.
# 分 时 日 月 周 命令
# @farwish.com # 每分钟执行
*/ * * * * /home/www/project/mission_cron_monitor
完成以上三步,主要工作就完了,可以运行查看效果了;
重申:mission_cron.php 任务不一定要包在 swoole_timer_tick 回调函数内,仅在执行 秒/毫秒 定时需要。
脚本虽然简单,但是有一些问题需要当心,如下:
1. 排错:任务有没有执行通过看日志 /var/log/cron 是否有执行记录,
有执行的话就是脚本问题,语法错误或者其它。注意,脚本中一律使用绝对路径。
2. 级别:系统级任务 /ect/crontab
用户级任务 直接用 crontab -e 编辑(存放位置 /var/spoor/cron/weichen)
程序级任务 swoole_timer_tick(1000, function() {});
3. 选项:crontab -e
crontab -l # 当前用户拥有的 cron
crontab -r # 删除当前用户的 cron
crontab -ri # 删除前先询问
更多 crontab -h
Link:http://www.cnblogs.com/farwish/p/6230728.html
[Shell] swoole_timer_tick 与 crontab 实现定时任务和监控的更多相关文章
- linux shell 之 crontab(定时任务)详解
1.定义: crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行.该词来源于希 ...
- crontab的定时任务不能自动执行,但是手动执行脚本一直能成功
crontab 问题小记: 环境变量问题, 养成良好的习惯, 在脚本开头export PATH 原因是 crontab 执行定时任务时,用的不是系统环境变量,而是自己的环境变量,可以把 echo $P ...
- shell实例利用crontab自动清除日志
shell实例利用crontab自动清除日志 程序运行会产生很多的日志,对于无用的日志手动删除比价麻烦,写一个自动执行的命令是很有必要的. 删除文件shell命令 find 对应目录 -mtime + ...
- linux利用crontab设置定时任务运行jar包
参考链接: 1.http://blog.csdn.net/javadhh/article/details/42779505 2.http://blog.csdn.net/cctv_liu/articl ...
- 第十五章 例行性工作(crontab)--循环执行的例行性工作调度 crontab(定时任务)
循环执行的例行性工作调度 crontab(定时任务) 15.1 例行性工作调度 不考虑硬件与服务器的链接状态,Linux帮助提醒很多任务. Linux例行性工作是如何进行调度的? Linux调度就是通 ...
- CentOS Linux使用crontab运行定时任务详解
参考博文: (总结)CentOS Linux使用crontab运行定时任务详解
- crontab部署定时任务
1.安装cron工具:apt-getinstall cron 2.开启定时任务:crontab –e 定时任务语句格式为:执行周期+命令. 周期有5个域,分别是分,时,日(day of month), ...
- 180605-Linux下Crontab实现定时任务
Linux下Crontab实现定时任务 基于Hexo搭建的个人博客,是一种静态博客页面,每次新增博文或者修改,都需要重新的编译并发布到Github,这样操作就有点蛋疼了,一个想法就自然而然的来了,能不 ...
- Ubuntu下使用crontab部署定时任务
Ubuntu下使用crontab部署定时任务 安装cron apt-get install cron 开启crontab日志 默认情况下的日志是没有开启的,我们需要找到 /etc/rsyslog.d/ ...
随机推荐
- tomcat日志文件定时清理备份
以下脚本主要备份的日志文件为tomcat的catalina.out.localhost_access_log.yyyy-mm-dd.log日志和项目的日志文件,其中项目的日志文件格式为"pr ...
- 动态设置和访问cxgrid列的Properties(转)
原文:http://www.cnblogs.com/hnxxcxg/archive/2010/05/24/2940711.html 动态设置和访问cxgrid列的Properties 设置: cxGr ...
- jenkins配置自动发送邮件
1.开通QQ的SMTP服务,需要发一条短信,qq会给你一个密码(不是你的QQ邮箱密码哦) 2.安装 Email Extension Plugin 插件 3.进入系统管理--系统设置 3.1按照如下图设 ...
- 9.openssl ca
用于签名证书请求.生成CRL.维护一个记录已颁发证书和这些证书状态的数据库. 证书请求私用CA的私钥签名之后就是证书. [root@xuexi tmp]# man ca SYNOPSIS openss ...
- window7下karma 报 nodejs request TypeError: The header content contains invalid characters BUG
这个BUG 估计只有中国人才 遇到 打开你的依赖node_modules\karma\node_modules\connect\lib\patch.js 将里面的setHeader方法改成下面这样,干 ...
- ASP.NET保存信息总结(Application、Session、Cookie、ViewState和Cache等) ZT
http://www.cnblogs.com/ranran/p/4065619.html http://www.cnblogs.com/jxlsomnus/p/4450911.html 以下是关于AS ...
- CentOS平台部署vsftp(基于虚拟用户)
1. 安装FTP 1 2 [root@task ~]# yum install vsftpd –y [root@task ~]# chkconfig vsftpd on # 配置开机 ...
- oracle建立数据库连接
除了全库拷贝,这个应该是oracle两个数据库之间进行数据迁移最快的方法了. CREATE PUBLIC DATABASE LINK zhengshi CONNECT TO 用户名 IDENTIFIE ...
- excel将单元格格式由数字转为文本
由于python读取excel数据时,整数总会变成浮点数,例如1会变成1.0,这时可以通过将excel里面的数字转化为文本,再读取出来就不会变成浮点数了.还有一种情况是excel里面的数字是由公式计算 ...
- 苹果手机overflow:auto的卡顿
如果你对某个div或模块使用了overflow: scroll属性,在iOS系统的手机上浏览时,则会出现明显的卡顿现象.但是在android系统的手机上则不会出现该问题 通过一个早上的百度搜索和与前端 ...