linux定时任务调度定系统——opencron

Opencron 介绍

一个功能完善真正通用的linux定时任务调度定系统,满足多种场景下各种复杂的定时任务调度,同时集成了linux实时监控,webssh,提供一个方便管理定时任务的平台.

你是否有定时执行任务计划的需求,需要在linux的crontab里一一定义任务?
 -  需要在每台linux服务器的crontab里一一定义任务
 -  任务的执行监控太不方便了
 -  得登录到每台机器查看定时任务的运行结果,机器一多简直是一种灾难
 -  对于多台机器协同处理一个任务很麻烦,如何保证多台机器上的任务按顺序依次执行?
 -  当任务运行失败,要重新执行,还得重新定义下执行时间,让其重跑,重跑完成了还得改回正常时间
 -  正在运行的任务要kill掉很麻烦,查看进程然后才能kill
......

opencron的出现将彻底的解决上面所有问题.功能如下:
 -  自动化管理任务,提供可操作的web图形化管理
 -  要当场执行只需点击执行即可,非常方便
 -  时间规则支持quartz和crontab,更强大更灵活
 -  非常方便的修改任务的执行时间
 -  任务的运行状态实时查看
 -  支持任务kill(包括由当前任务调起的其他子任务链,彻底kill)
 -  支持重新执行正在运行的任务
 -  出错后实时通知给任务人(超过重跑次数自动发送邮件,短信)
 -  支持任务超时设置,一旦超过预定运行时长自动kill,任务结束,防止僵尸任务
 -  支持流程任务(多台机器上协同完成一个大的任务,按任务分配的顺序依次执行每台机器上的任务)
 -  记录任务的运行日志,非常方便查看
 -  多用户多角色
 -  现场执行(选择N台机器同时执行一个命令或任务)
 -  webssh,在浏览器一键ssh登录到linux服务器
 -  提供服务器的性能实时监控
 

安装opencron 需要jdk1.7 或者更高的版本 & tomcat环境支持

opencron-agent 部署安装

下载源码

[root@cm-vpn1 ~]# cd /usr/local/src/
[root@cm-vpn1 src]# git clone https://github.com/wolfboys/opencron.git
Cloning into 'opencron'...
remote: Counting objects: 5168, done.
remote: Total 5168 (delta 0), reused 0 (delta 0), pack-reused 5168
Receiving objects: 100% (5168/5168), 6.77 MiB | 1.88 MiB/s, done.
Resolving deltas: 100% (2396/2396), done.
执行sh build编译

说明:编译报错没有安装maven

[root@cm-vpn1 ~]# cd /usr/local/src/
[root@cm-vpn1 src]# cd opencron/
[root@cm-vpn1 opencron]# ls
agent.sh  build.sh  checkstyle.xml  header.txt  LICENSE.txt  opencron-agent  opencron-common  opencron-server  pom.xml  README.md  server.sh
[root@cm-vpn1 opencron]# sh build.sh 


      --------------------------------------------
    /                                              \
   /   ___  _ __   ___ _ __   ___ _ __ ___  _ __    \
  /   / _ \| '_ \ / _ \ '_ \ / __| '__/ _ \| '_ \    \
 /   | (_) | |_) |  __/ | | | (__| | | (_) | | | |    \
 \    \___/| .__/ \___|_| |_|\___|_|  \___/|_| |_|    /
  \        |_|                                       /
   \                                                /
    \       --opencron,Let's crontab easy!         /
      --------------------------------------------


[opencron] WARNING:maven is not install!
[opencron] download maven Starting...
[opencron] checking network connectivity ... 
[opencron] network is connectioned,download maven Starting... 
--2018-06-12 02:02:34--  http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
Resolving mirror.bit.edu.cn (mirror.bit.edu.cn)... 2001:da8:204:2001:250:56ff:fea1:22, 202.204.80.77
Connecting to mirror.bit.edu.cn (mirror.bit.edu.cn)|2001:da8:204:2001:250:56ff:fea1:22|:80... failed: Connection timed out.
Connecting to mirror.bit.edu.cn (mirror.bit.edu.cn)|202.204.80.77|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2018-06-12 02:04:44 ERROR 404: Not Found.

[opencron] build opencron Starting...
build.sh: line 225: clean: command not found
[opencron] build opencron failed! please try again 


安装maven

[root@cm-vpn1 src ]#  wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz

[root@cm-vpn1 src ]# tar -xvf apache-maven-3.5.3-bin.tar.gz

[root@cm-vpn1 src ]# mv apache-maven-3.5.3 /usr/local/maven

配置maven 环境变量
[root@cm-vpn1 ~]#  vim /etc/profile

*************
*************
*************
export MAVEN_HOME=/usr/local/maven
export MAVEN_HOME
export PATH=$PATH:$MAVEN_HOME/bin


编译完成的文件在/usr/local/src/opencron 目录下有会生成dist目录

说明:部署agent,将opencron-agent-1.1.0-RELEASE.tar.gz包拷贝到要管理任务的目标服务器,解包后会看到以下目录

root@li1016-179 ~]# cd /usr/local/src/
[root@li1016-179 src]# ls
opencron-agent-1.1.0-RELEASE.tar.gz  s3cmd-2.0.1.tar.gz
[root@li1016-179 src]# tar -xvf opencron-agent-1.1.0-RELEASE.tar.gz 


[root@li1016-179 src]# cd opencron-agent
[root@li1016-179 opencron-agent]# ls *
bin:
kill.sh  monitor.sh  opencron.sh  setclasspath.sh  shutdown.sh  startup.sh

conf:
conf.properties  log4j.properties

lib:
commons-cli-1.4.jar        freemarker-2.3.20.jar                      junit-4.11.jar                    netty-handler-4.1.5.Final.jar                 protostuff-collectionschema-1.0.12.jar
commons-codec-1.10.jar     hamcrest-core-1.3.jar                      libthrift-0.10.0.jar              netty-resolver-4.1.5.Final.jar                protostuff-core-1.0.12.jar
commons-exec-1.3.jar       HikariCP-java6-2.3.13.jar                  log4j-1.2.16.jar                  netty-socketio-1.7.12.jar                     protostuff-runtime-1.0.12.jar
commons-io-2.4.jar         httpclient-4.5.3.jar                       maven-model-3.0.jar               netty-transport-4.1.5.Final.jar               quartz-2.3.0.jar
commons-lang-2.4.jar       httpcore-4.4.1.jar                         mchange-commons-java-0.2.11.jar   netty-transport-native-epoll-4.1.5.Final.jar  slf4j-api-1.7.21.jar
commons-lang3-3.1.jar      jackson-annotations-2.9.0.jar              netty-buffer-4.1.5.Final.jar      opencron-agent-1.1.0-RELEASE.jar              slf4j-log4j12-1.7.21.jar
commons-logging-1.1.1.jar  jackson-core-2.9.2.jar                     netty-codec-4.1.5.Final.jar       opencron-common-1.1.0-RELEASE.jar
cron4j-2.2.5.jar           jackson-databind-2.9.2.jar                 netty-codec-http-4.1.5.Final.jar  plexus-utils-2.0.4.jar
fastjson-1.2.31.jar        jackson-module-jaxb-annotations-2.9.2.jar  netty-common-4.1.5.Final.jar      protostuff-api-1.0.12.jar

logs:

temp:

 

启动opencron-agent

说明:进入opencron-agent/bin

说明:这里可以接受两个参数,分别是服务启动的端口和密码,默认端口是:1577,默认密码:opencron 如要指定参数启动命令如下

[root@li1016-179 ~ ]#/usr/local/src/opencron-agent/bin
[root@li1016-179 bin]# sh startup.sh 


      --------------------------------------------
    /                                              \
   /   ___  _ __   ___ _ __   ___ _ __ ___  _ __    \
  /   / _ \| '_ \ / _ \ '_ \ / __| '__/ _ \| '_ \    \
 /   | (_) | |_) |  __/ | | | (__| | | (_) | | | |    \
 \    \___/| .__/ \___|_| |_|\___|_|  \___/|_| |_|    /
  \        |_|                                       /
   \                                                /
    \       --opencron,Let's crontab easy!         /
      --------------------------------------------


[opencron] Using OPENCRON_BASE:   /usr/local/src/opencron-agent
[opencron] Using OPENCRON_HOME:   /usr/local/src/opencron-agent
[opencron] Using OPENCRON_TMPDIR: /usr/local/src/opencron-agent/temp
[opencron] Using JRE_HOME:        /usr/local/jdk1.8
[opencron] Using CLASSPATH:       /usr/local/src/opencron-agent/lib/opencron-agent-1.1.0-RELEASE.jar
[opencron] Using OPENCRON_PID:    /usr/local/src/opencron-agent/opencron.pid
[opencron] opencron port not input,will be used port:1577
[opencron] opencron password not input,will be used password:opencron
[opencron] opencron started.

停止opencron-agent 
[root@li1016-179 bin]# sh shutdown.sh 


      --------------------------------------------
    /                                              \
   /   ___  _ __   ___ _ __   ___ _ __ ___  _ __    \
  /   / _ \| '_ \ / _ \ '_ \ / __| '__/ _ \| '_ \    \
 /   | (_) | |_) |  __/ | | | (__| | | (_) | | | |    \
 \    \___/| .__/ \___|_| |_|\___|_|  \___/|_| |_|    /
  \        |_|                                       /
   \                                                /
    \       --opencron,Let's crontab easy!         /
      --------------------------------------------


[opencron] Using OPENCRON_BASE:   /usr/local/src/opencron-agent
[opencron] Using OPENCRON_HOME:   /usr/local/src/opencron-agent
[opencron] Using OPENCRON_TMPDIR: /usr/local/src/opencron-agent/temp
[opencron] Using JRE_HOME:        /usr/local/jdk1.8
[opencron] Using CLASSPATH:       /usr/local/src/opencron-agent/lib/opencron-agent-1.1.0-RELEASE.jar
[opencron] Using OPENCRON_PID:    /usr/local/src/opencron-agent/opencron.pid
Error: Could not find or load main class org.opencron.agent.AgentBootstrap
[opencron] The stop command failed. Attempting to signal the process to stop through OS signal.
[opencron] opencron stopped.


opencron-server 部署步骤

创建opencron库 &授权

[root@cm-vpn1 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 632
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database opencron;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on opencron.* to root@207.109.42.12 identified by 'root';
Query OK, 0 rows affected (0.00 sec)

 

配置opencron server 

说明:修改数据库密码 & IP

[root@cm-vpn1 ~ ]# vim  /usr/local/src/opencron/dist/opencron-server/WEB-INF/classes/config.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://207.109.42.12:3306/opencron?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root

#hibernate
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=true
hibernate.format_sql=false
hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
hibernate.cache.provider_class=net.sf.ehcache.hibernate.EhCacheProvider
hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
hibernate.cache.use_second_level_cache=false
hibernate.cache.use_query_cache=false
jdbc.use_scrollable_resultset=false

#单一登陆,同一用户只能在一处登陆,如多处登陆,后登陆的会把前面已经登陆的统统踢下线(为了安全考虑,默认是true,即不允许多段同时登陆)
opencron.singlelogin=true

#agent端自动注册的key
opencron.autoRegKey=opencron@2016

#agent监控服务端口
opencorn.monitorPort=17502


启动opencron server服务

说明:第一次部署执行server.sh. 报没java环境

[root@cm-vpn1 ~ ]# cd /usr/local/src/opencron
[root@cm-vpn1 opencron-server]# sh server.sh


      --------------------------------------------
    /                                              \
   /   ___  _ __   ___ _ __   ___ _ __ ___  _ __    \
  /   / _ \| '_ \ / _ \ '_ \ / __| '__/ _ \| '_ \    \
 /   | (_) | |_) |  __/ | | | (__| | | (_) | | | |    \
 \    \___/| .__/ \___|_| |_|\___|_|  \___/|_| |_|    /
  \        |_|                                       /
   \                                                /
    \       --opencron,Let's crontab easy!         /
      --------------------------------------------


[opencron] Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
[opencron] At least one of these environment variable is needed to run this program
解决
[root@cm-vpn1 opencron]# vim server.sh 

#!/bin/bash

#echo color
WHITE_COLOR="\E[1;37m";
RED_COLOR="\E[1;31m";
BLUE_COLOR='\E[1;34m';
GREEN_COLOR="\E[1;32m";
YELLOW_COLOR="\E[1;33m";
RES="\E[0m";

#指定java 路径
export JAVA_HOME='/usr/local/jdk1.8'
export JRE_HOME='/usr/local/jdk1.8/jre'

*******************
*******************


重新执行 

[root@cm-vpn1 opencron]# sh server.sh 


      --------------------------------------------
    /                                              \
   /   ___  _ __   ___ _ __   ___ _ __ ___  _ __    \
  /   / _ \| '_ \ / _ \ '_ \ / __| '__/ _ \| '_ \    \
 /   | (_) | |_) |  __/ | | | (__| | | (_) | | | |    \
 \    \___/| .__/ \___|_| |_|\___|_|  \___/|_| |_|    /
  \        |_|                                       /
   \                                                /
    \       --opencron,Let's crontab easy!         /
      --------------------------------------------


***************************************************
***************************************************
***************************************************

 

查看监听端口

#监听端口8080
[root@cm-vpn1 opencron]# !net
netstat -nvlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      31062/sshd          
tcp        0      0 0.0.0.0:600             0.0.0.0:*               LISTEN      14174/python        
tcp6       0      0 :::3306                 :::*                    LISTEN      7534/mysqld         
tcp6       0      0 :::8080                 :::*                    LISTEN      8093/java           
tcp6       0      0 :::22                   :::*                    LISTEN      31062/sshd          
启动 opencron

说明:第一次部署是执行server.sh,当部署成功后,启动是执行/usr/local/src/opencron/dist/opencron-server/startup.sh

[root@cm-vpn1 opencron-server]# sh startup.sh


      --------------------------------------------
    /                                              \
   /   ___  _ __   ___ _ __   ___ _ __ ___  _ __    \
  /   / _ \| '_ \ / _ \ '_ \ / __| '__/ _ \| '_ \    \
 /   | (_) | |_) |  __/ | | | (__| | | (_) | | | |    \
 \    \___/| .__/ \___|_| |_|\___|_|  \___/|_| |_|    /
  \        |_|                                       /
   \                                                /
    \       --opencron,Let's crontab easy!         /
      --------------------------------------------


[opencron]  server Starting.... 
[opencron]  please see log for more detail: /usr/local/src/opencron/dist/opencron-server/work/logs/opencron.out 
网页访问

第一次访问登录默认用户和密码是opencron,并且会提示修改密码

5c237e95cac5fff85099198599e31044afe.jpg
377d6eed0d9f414f92b230cbd89261fb4f6.jpg

转载于:https://my.oschina.net/AnnaWu/blog/1829089

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值