定时任务调度系统 opencron
opencron:一个功能完善且通用的开源定时任务调度系统,拥有先进可靠的自动化任务管理调度功能,提供可操作的web图形化管理满足多种场景下各种复杂的定时任务调度,同时集成了linux实时监控
主要包括以下特点:
1、允许设置每个脚本的超时时间,超时操作可选择邮件通知管理者,或强杀脚本进程。
2、允许设置脚本的最大并发数。
3、一台server管理多个client。
4、每个脚本都可在server端灵活配置,如测试脚本运行,查看日志,强杀进程,停止定时…。
5、允许添加脚本依赖(支持跨服务器),依赖脚本提供同步和异步的执行模式。
6、友好的web界面,方便用户操作。
7、脚本出错时可选择邮箱通知多人。
8、支持常驻任务,任务失败后可配置自动重启。
9、支持管道操作。
前言:基础环境
jdk1.8.0以上
tomcat
maven
opencron-agent 部署安装
下载源码
[root@cm-vpn1 ~]# cd /usr/local/src/
[
[root@cm-vpn1 src]# git clone https://github.com/wolfboys/opencron.git
C
Cloning into 'opencron'...
r
remote: Counting objects: 5168, done.
r
remote: Total 5168 (delta 0), reused 0 (delta 0), pack-reused 5168
R
Receiving objects: 100% (5168/5168), 6.77 MiB | 1.88 MiB/s, done.
R
Resolving deltas: 100% (2396/2396), done.
执行sh build编译
说明:编译报错没有安装maven
[root@cm-vpn1 ~]# cd /usr/local/src/
[
[root@cm-vpn1 src]# ls
a
apache-tomcat-8.5.31.tar.gz jdk-8u131-linux-x64.tar.gz mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz opencron
[
[root@cm-vpn1 src]# cd opencron/
[
[root@cm-vpn1 opencron]# ls
a
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
R
Resolving mirror.bit.edu.cn (mirror.bit.edu.cn)... 2001:da8:204:2001:250:56ff:fea1:22, 202.204.80.77
C
Connecting to mirror.bit.edu.cn (mirror.bit.edu.cn)|2001:da8:204:2001:250:56ff:fea1:22|:80... failed: Connection timed out.
C
Connecting to mirror.bit.edu.cn (mirror.bit.edu.cn)|202.204.80.77|:80... connected.
H
HTTP request sent, awaiting response... 404 Not Found
2
2018-06-12 02:04:44 ERROR 404: Not Found.
[
[opencron] build opencron Starting...
b
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
*
*************
*
*************
*
*************
e
export MAVEN_HOME=/usr/local/maven
e
export MAVEN_HOME
e
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
o
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 *
b
bin:
k
kill.sh monitor.sh opencron.sh setclasspath.sh shutdown.sh startup.sh
c
conf:
c
conf.properties log4j.properties
l
lib:
c
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
c
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
c
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
c
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
c
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
c
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
c
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
c
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
f
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
l
logs:
t
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
E
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
E
Enter password:
W
Welcome to the MySQL monitor. Commands end with ; or \g.
Y
Your MySQL connection id is 632
S
Server version: 5.6.35 MySQL Community Server (GPL)
C
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
O
Oracle is a registered trademark of Oracle Corporation and/or its
a
affiliates. Other names may be trademarks of their respective
o
owners.
T
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
m
mysql> create database opencron;
Q
Query OK, 1 row affected (0.00 sec)
配置opencron server
说明:修改数据库密码即可
[root@cm-vpn1 ~]# vim /usr/local/src/opencron/opencron-server/target/classes/config.properties
j
jdbc.driver=com.mysql.jdbc.Driver
j
jdbc.url=jdbc:mysql://127.0.0.1:3306/opencron?useUnicode=true&characterEncoding=utf8&useCursorFetch=true&autoReconnect=true&failOverReadOnly=false
j
jdbc.username=root
j
jdbc.password=123456
#
#hibernate
h
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
h
hibernate.show_sql=true
h
hibernate.format_sql=false
h
hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
h
hibernate.cache.provider_class=net.sf.ehcache.hibernate.EhCacheProvider
h
hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
h
hibernate.cache.use_second_level_cache=false
h
hibernate.cache.use_query_cache=false
j
jdbc.use_scrollable_resultset=false
#
#单一登陆,同一用户只能在一处登陆,如多处登陆,后登陆的会把前面已经登陆的统统踢下线(为了安全考虑,默认是true,即不允许多段同时登陆)
o
opencron.singlelogin=true
#
#agent端自动注册的key
o
opencron.autoRegKey=opencron@2016
#
#agent监控服务端口
o
opencorn.monitorPort=17502
启动opencron server服务
[root@cm-vpn1 opencron]#cd /usr/local/src/opencron
[
[root@cm-vpn1 opencron]# sh server.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
#
#监听端口8080
[
[root@cm-vpn1 opencron]# !net
n
netstat -nvlpt
A
Active Internet connections (only servers)
P
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
t
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 31062/sshd
t
tcp 0 0 0.0.0.0:600 0.0.0.0:* LISTEN 14174/python
t
tcp6 0 0 :::3306 :::* LISTEN 7534/mysqld
t
tcp6 0 0 :::8080 :::* LISTEN 8093/java
t
tcp6 0 0 :::22 :::* LISTEN 31062/sshd
网页访问
第一次访问登录默认用户和密码是opencron,并且会提示修改密码