linux自动实现项目跑,利用Linux中的crontab实现分布式项目定时任务功能
认识crond服务
1、crond是Linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而Linux任务调度的工作主要分为以下两类:
①系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
②个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
2、Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:
①/etc/cron.deny 该文件中所列的用户不允许使用Crontab命令
②/etc/cron.allow 该文件中所列的用户允许使用Crontab命令
3、/var/spool/cron/ 是所有用户的crontab文件
4、启动、停止、查看crond服务:
①启动:service crond start
②停止:service crond stop
③查看:service crond status
@Controller
@RequestMapping("/task/topic")
public class TopicQuartzController {
protected Logger logger = LoggerFactory.getLogger(TopicQuartzController.class);
@Autowired
private LiveTopicService liveTopicService;
@RequestMapping("execute")
@ResponseBody
public CommonResult execute(HttpServletRequest request,HttpServletResponse response,String type){
long t1 = System.currentTimeMillis();
logger.error("topic定时器执行开始"+type);
CommonResult result = new CommonResult();
if(QlchatUtil.isEmpty(type)){
result.setMsg("参数为空");
result.setSuccess(false);
return result;
}
try {
switch (type) {
case "autoEndTopic":
this.autoEndTopic();
break;
case "oneWeek":
this.endTopicOneWeek();
break;
default:
break;
}
result.setSuccess(true);
result.setMsg("执行完成" + type);
} catch (Exception e) {
logger.error("topic定时器执行异常" + type, e);
result.setMsg("topic定时器执行异常" + type);
result.setSuccess(false);
}
long t2 = System.currentTimeMillis();
logger.error("topic定时器执行结束"+type+",耗时="+(t2 - t1) + "ms");
return result;
}
private void autoEndTopic(){
String sql = "SELECT id_ topicId FROM skg_live_topic lt WHERE lt.`status_` = 'beginning' AND lt.end_time_ IS NOT NULL AND lt.`end_time_` < NOW()";
JdbcTemplate jdbcTemplate = SpringHelper.getBean(JdbcTemplate.class);
List> resultMap = jdbcTemplate.queryForList(sql);
for (Map map : resultMap) {
String topicId = String.valueOf(map.get("topicId"));
try {
LiveTopicPo liveTopicPo = liveTopicService.loadCache(topicId);
liveTopicService.endTopic(liveTopicPo, liveTopicPo.getCreateBy());
}catch (Exception e){
logger.error("autoEndTopic异常" + topicId, e);
}
}
}
/**
* 结束之前的没有结束时间的话题,只跑一周
*/
private void endTopicOneWeek(){
String sql = "SELECT id_ topicId FROM skg_live_topic lt WHERE lt.`status_` = 'beginning' AND lt.end_time_ IS NULL AND lt.start_time_ <= (NOW() - interval 48 hour)";
JdbcTemplate jdbcTemplate = SpringHelper.getBean(JdbcTemplate.class);
List> resultMap = jdbcTemplate.queryForList(sql);
for (Map map : resultMap) {
String topicId = String.valueOf(map.get("topicId"));
try {
LiveTopicPo liveTopicPo = liveTopicService.loadCache(topicId);
liveTopicService.endTopic(liveTopicPo, liveTopicPo.getCreateBy());
}catch (Exception e){
logger.error("autoEndTopic异常" + topicId, e);
}
}
}
}
像上面这样写好定时任务的逻辑类
创建一个contab.txt
*/30 * * * * curl 'http://10.47.161.40:8181/task/topic/execute.do?type=oneWeek'
*/30 * * * * curl 'http://10.47.161.40:8181/task/topic/execute.do?type=autoEndTopic'
里面这样调用方法去执行即可实现分布式项目的定时任务
上面即每30分钟执行一次
总结
以上所述是小编给大家介绍的利用Linux中的crontab实现分布式项目定时任务功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
linux自动实现项目跑,利用Linux中的crontab实现分布式项目定时任务功能相关推荐
- Linux内核中段伪例,利用Linux内核里的Use-After-Free(UAF)漏洞提权
*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担. * 作者:nickchang 上个月爆出的CVE-2016-0728 (http: ...
- 基于pxe技术实现linux自动安装原理,网络安装Linux的技术原理分析及实现
网络安装Linux的技术原理分析及实现 李怀刚;邱建新 [期刊名称]<计算机应用与软件> [年(卷),期]2006(023)009 [摘要]对自动化Linux网络安装所使用的相关技术原理进 ...
- Linux中使用crontab命令启用自定义定时任务
一 简介 Linux下的任务调度分为两类,系统任务调度和用户任务调度 系统任务调度:系统需要定期执行的任务,比如重启.日志清理等,其配置文件是:/etc/crontab 用户任务调度:某个用户需要定期 ...
- linux自动安装Java环境脚本,Linux 自动添加JAVA环境脚本
Linux 自动添加JAVA环境脚本 1. 删除原有的JAVA环境变量配置 ### --------------delete old config -------------------- ### ...
- linux自动同步onedrive,如何在Linux中同步微软OneDrive
1.在linux上安装onedrive-d 输入以下命令: $ git clone https://github.com/xybu92/onedrive-d.git $ cd onedrive-d $ ...
- linux自动挂起什么意思,Linux中进行挂起(待机)的命令说明
Node实践之二 先从一个简单的demo说起,用cmd打开命令提示符,输入echo Hello,大家是不是看到终端上显示出了Hello字样,事实上这就是一个简单的事件. 回到正题,相信提到node.j ...
- linux自动获取ip网卡配置文件,linux 命令行下配置网卡自动获取 IP
linux 下配置网络,最方便的还是用图形界面,然而有时候必须在命令行下操作,我知道可以通过 ifconfig 设置 ip (192.168.1.20) 和掩码,route 添加网关(192.168. ...
- linux 自动补全快捷键,day4 Linux下的快捷键和基本命令
一. 快捷键 tab 自动补全命令或路径 Ctrl + c 取消当前操作 --cancel Ctrl + l(小写L) 清屏 --clear Ctrl + a 返回行首 Ctrl + e 返回行尾 C ...
- linux自动电梯设计,基于嵌入式Linux电梯控制系统
摘要: 目前,我国电梯需求量已经超过了全球的一半,我国也成为世界上最大的电梯市场,并且伴随着我国经济的飞速发展,城市化进程的加快,住房需求持续增长,高层建筑不断涌现,电梯的需求量仍然在增加.与此同时, ...
- linux自动运行upan可执行文件脚本,linux下插入USB设备使用脚本实现自动挂载
某天客户要求说要想在linux OS上插入U盘,然后像和在windows上一样实现自动挂载,在网上没有搜索到有用的信息,有一个软件usbmount,但是试验用不了,有兴趣可以瞧瞧,地址如下 客户就是客 ...
最新文章
- TDD 与 BDD 仅仅是语言描述上的区别么?
- opengl三维图形绘制_Python matplotlib绘图示例 - 绘制三维图形
- linux将光驱挂载到目录下,Linux操作系统下关于光驱的挂载
- java基础入门答案谭晓芳,原理+实战讲解
- 吴恩达《机器学习》学习笔记九——神经网络相关(1)
- 盲审不到4分的论文竟中了ICLR 2019??!!ICLR 2019官方这样回应
- hdu 4496 D-City 并查集
- Phinx - 数据库迁移及版本控制介绍(内含中文文档翻译)
- Apache mod_rewrite规则重写的标志一览
- VB .NET-文本文件读写
- LayoutInflater.inflate()方法的深入理解
- 【建筑性能分析入门笔记】建筑能耗建模(1)
- petgo.jp狗粮
- 如何利用线性回归来建立收入预测模型?
- sonarqube如何导入规则_sonar如何添加自定义JAVA规则
- 达达,不能只做京东的达达
- 效用最大化问题中的三个函数——需求函数、间接效用函数、支出函数
- linux 命令之jq
- UE4大场景解决方案 ——Pak的打包与加载
- 计算机导论——信息安全基础06