CronHub
CronHub is a better crontab, it is a web application which can schedule, monitor and control the crontabs of multiple machines from the web page.
Install / Use
/learn @machanic/CronHubREADME
CronHub
CronHub is a better crontab, it is a web application which can schedule, monitor and control the crontabs of multiple machines from the web page.
Introduction
Managing the UNIX/Linux crontabs in a large number of machines is a nasty thing, especially in the case that the system administrator must log in multiple machines to check whether the scheduled programs have been successfully executed. If the programs were failed to be done, the administrator has to re-execute them one by one. CronHub aims to ease this burden by offering a friendly web interface to manage such job. The users can schedule, monitor and control the programs by using the mouse click.
The cronhub system consists of 2 parts : the center server part and the slave part. The slave listens the instructions from the center server and then conducts actions. It is located in this repository: CronHub Daemon. Please go to there to download it.
NOTE: The language of this software is Chinese now, but the English version will be released soon.
Citation
I kindly ask anybody who uses this code cite the following BibTeX entry:
@software{CronHub,
title = {{CronHub}: Scheduling, Monitoring and Controlling the Programs in Cluster Servers via a Web Application.},
author = {Chen Ma},
url = {https://github.com/machanic/CronHub},
version = {1.0.0},
date = {2020-08-10},
}
Statement
Copyright
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Installation(Chinese)
调度系统的安装
安装cronhub非常简单。cronhub是java语言写成的系统,因此为了安装此软件,你需要有java语言运行环境作为支持.
此外,cronhub现在只支持linux/centos系统,未来的计划中会支持windows系统。
安装准备, 你需要以下东西
1.jdk 1.6,下载地址请访问jdk下载官方网站:oracle的jdk下载官方网站.
2.apache tomcat 6,下载地址请访问apache tomcat下载官方网站apache tomcat下载官方网站.
准备软件:中央服务器安装mysql,jdk6(官网下载www.oracle.com/technetwork/java/javase/downloads/jdk6-downloads-1637591.html),apache-tomcat 6.x
第一步:安装mysql
1.安装MySQL
[root@sample ~]# yum -y install mysql-server ← 安装MySQL
[root@sample ~]# yum -y install php-mysql ← 安装php-mysql
配置MySQL
[root@sample ~]# vim /etc/my.cnf ← 编辑MySQL的配置文件
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1 ← 找到这一行,在这一行的下面添加新的规则,让MySQL的默认编码为UTF-8
default-character-set = utf8 ← 添加这一行
然后在配置文件的文尾填加如下语句:
[mysql]
default-character-set = utf8
启动MySQL服务
[root@sample ~]# chkconfig mysqld on ← 设置MySQL服务随系统启动自启动
[root@sample ~]# chkconfig --list mysqld ← 确认MySQL自启动
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off ← 如果2--5为on的状态就OK
[root@sample ~]# /etc/rc.d/init.d/mysqld start ← 启动MySQL服务
Initializing MySQL database: [ OK ]
Starting MySQL: [ OK ]
MySQL初始环境设定
(1) 为MySQL的root用户设置密码
MySQL在刚刚被安装的时候,它的root用户是没有被设置密码的。首先来设置MySQL的root密码。
[root@sample ~]# mysql -u root ← 用root用户登录MySQL服务器
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> select user,host,password from mysql.user; ← 查看用户信息
+------+------------------------------+---------------+
| user | host | password |
+------+------------------------------+---------------+
| root | localhost | | ← root密码为空
| root | sample.centospub.com | | ← root密码为空
| | sample.centospub.com | |
| | localhost | |
|root | % |XXX |
| | | |
+------+------------------------------+---------------+
4 rows in set (0.00 sec)
mysql> set password for 在这里填入root密码'); ← 设置root密码
Query OK, 0 rows affected (0.01 sec)
mysql> set password for 在这里填入root密码'); ← 设置root密码
Query OK, 0 rows affected (0.01 sec)只有设置了这个才可以,才可以通过数据库来安装网址
mysql> set password for ); ← 设置root密码
Query OK, 0 rows affected (0.01 sec)
mysql> select user,host,password from mysql.user; ← 查看用户信息
+------+--------------------------------+--------------------------+
| user | host | password |
+------+--------------------------------+--------------------------+
| root | localhost | 19b68057189b027f | ← root密码被设置
| root | sample.centospub.com | 19b68057189b027f | ← root密码被设置
| | sample.centospub.com | |
| | localhost | |
+------+--------------------------------+--------------------------+
4 rows in set (0.01 sec)
mysql> exit ← 退出MySQL服务器
Bye
然后,测试一下root密码有没有生效。
[root@sample ~]# mysql -u root ← 通过空密码用root登录
ERROR 1045 (28000): Access denied for user (using password: NO) ← 出现此错误信息说明密码设置成功
[root@localhost ~]# mysql -u root -h sample.centospub.com ← 通过空密码用root登录
ERROR 1045 (28000): Access denied for user (using password: NO) ← 出现此错误信息说明密码设置成功
[root@sample ~]# mysql -u root -p ← 通过密码用root登录
Enter password: ← 在这里输入密码
Welcome to the MySQL monitor. Commands end with ; or \g. ← 确认用密码能够成功登录
Your MySQL connection id is 5 to server version: 4.1.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> exit
Bye
[root@sample ~]# mysql -u root -h sample.centospub.com -p ← 通过密码用root登录
Enter password: ← 在这里输入密码
Welcome to the MySQL monitor. Commands end with ; or \g. ← 确认用密码能够成功登录
Your MySQL connection id is 6 to server version: 4.1.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> exit ← 退出MySQL服务器
Bye
(2) 删除匿名用户
在MySQL刚刚被安装后,存在用户名、密码为空的用户。这使得数据库服务器有无需密码被登录的可能性。为消除隐患,将匿名用户删除。
[root@sample ~]# mysql -u root -p ← 通过密码用root登录
Enter password: ← 在这里输入密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 4.1.20
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> select user,host from mysql.user; ← 查看用户信息
+------+----------------------------+
| user | host |
+------+----------------------------+
| | localhost |
| root | localhost |
| | sample.centospub.com |
| root | sample.centospub.com |
+------+----------------------------+
4 rows in set (0.02 sec)
mysql> delete from mysql.user where user=''; ← 删除匿名用户
Query OK, 2 rows affected (0.17 sec)
mysql> select user,host from mysql.user; ← 查看用户信息
+------+----------------------------+
| user | host |
+------+----------------------------+
| root | localhost |
| root | sample.centospub.com |
+------+----------------------------+
2 rows in set (0.00 sec)
mysql> exit ← 退出MySQL服务器
Bye
2.新开通一个用户,使得可以远程链接该mysql,并拥有建表权限
新开通一个服务器远程连接mysql,使mysql授权办法
敲入mysql进入控制台
use mysql
show tables; //可以查看下有哪几张表
Insert INTO user(Host,User,Password) VALUES("124.205.148.226","root",password('123456'));//这样远程用SQLyog就能连接登录了。
GRANT ALL PRIVILEGES ON *.* TO root@124.205.148.226 identified by '123456';//这样就有建库的权限了
FLUSH PRIVILEGES; //令权限立即生效
第二步:mysql建表
3.在SQLyog等远程连接的GUI工具中建表,sql如下:
/*
SQLyog 企业版 - MySQL GUI v8.14
MySQL - 5.0.90-log : Database - cronhub_manage_system
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`cronhub_manage_system` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `cronhub_manage_system`;
/*Table structure for table `daemon` */
DROP TABLE IF EXISTS `daemon`;
CREATE TABLE `daemon` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`machine_ip` varchar(16) NOT NULL COMMENT '机器ip',
`machine_port` int(4) NOT NULL COMMENT '机器端口号',
`daemon_version_name` varchar(100) NOT NULL COMMENT 'daemon版本名',
`must_lostconn_email` tinyint(1) default NULL COMMENT 'bool.是否失去联络通信的通知email报警',
`lostconn_emailaddress` varchar(1000) NOT NULL COMMENT '失去联络通信的报警email,#隔开',
`conn_status` tinyint(1) default NULL COMMENT '通信状态:0通讯异常,1通信正常',
`comment` text NOT NULL COMMENT '简介',
`update_time` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
/*Table structure for table `task` */
DROP TABLE IF EXISTS `task`;
CREATE TABLE `task` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`daemon_id` bigint(20) unsigned NOT NULL COMMENT '执行此任务daemon执行器的id',
`cron_exp` varchar(16) NOT NULL COMMENT 'crontab表达式',
`shell_cmd` varchar(1000) NOT NULL COMMENT '运行的命令,原始命令,未替换参数前',
`must_replace_cmd` tinyint(1) NOT NULL COMMENT 'bool.是否需要替换`撇号中的命令为执行结果',
`run_mode` tinyint(1) NOT NULL COMMENT '0--被动模式,1--主动模式',
`run_start_reportaddress` varchar(500) default NULL COMMENT 'cmd命令开始执行的汇报地址',
`run_end_reportaddress` varchar(500) default NULL COMMENT 'cmd命令结束执行的汇报地址',
`is_process_node` tinyint(1) NOT NULL default '0' COMMENT '0--不是流程中的一个节点,1--是流程中的一个节点',
`is_process_chain` tinyint(1) default '0' COMMENT '0--不是流程链task,1--是流程链task',
`process_tasks` text COMMENT '流程链模式下的子链条task id集合',
`comment` text NOT NULL COMMENT '简介',
`operate_uid` bigint(20) default '-1' COMMENT '操作人的id号',
`update_time` datetime default NULL COMMENT '修改日期',
`is_re
