本站提供Linux服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme
如果您使用过Windows计划任务或Linux的crontab
,那么对“定时任务”这个名词可能并不陌生。简言之就是在设定好的时间去执行一个任务或者根据条件循环的执行一个或多个任务。Linux下的crontab需要通过命令行操作,有了jiacrontab就可以通过WEB界面来创建计划任务,比直接使用crontab
简单很多。
jiacrontab主要功能
- 允许设置每个脚本的超时时间,超时操作可选择邮件通知管理者,或强杀脚本进程。
- 允许设置脚本的最大并发数。
- 一台server管理多个client。
- 每个脚本都可在server端灵活配置,如测试脚本运行,查看日志,强杀进程,停止定时...。
- 允许添加脚本依赖(支持跨服务器),依赖脚本提供同步和异步的执行模式。
- 友好的web界面,方便用户操作。
- 脚本出错时可选择邮箱通知多人。
- 支持常驻任务,任务失败后可配置自动重启。
- 支持管道操作。
运行原理
- jiacrontab由server,client两部分构成,两者完全独立通过rpc通信。
- server:向用户提供可视化界面,调度多个client。
- client:实现定时逻辑,隔离用户脚本,将client布置于多台服务器上可由server统一管理。 每个脚本的定时格式完全兼容linux本身的crontab脚本配置格式。
Linux安装jiacrontab
jiacrontab使用golang开发,作者已经提供编译好的二进制包,直接下载解压使用,非常方便。
#安装unzip
yum -y install unzip
#下载jiacrontab
wget https://jiacrontab.iwannay.cn/download/jiacrontab-v1.4.5-linux-amd64.zip
#如果下载速度过慢,可替换为xiaoz软件库地址
wget http://soft.xiaoz.org/linux/jiacrontab-v1.4.5-linux-amd64.zip
#解压
unzip jiacrontab-v1.4.5-linux-amd64.zip
#运行服务端
cd app/jiacrontab/server
nohup ./jiaserver &> jiaserver.log &
#运行客户端
cd app/jiacrontab/client
nohup ./jiaclient &> jiaclient.log &
放行端口,jiacrontab服务端和客户端监听了20000 - 20003
,输入下面的命令放行:
#firewalld放行端口
firewall-cmd --zone=public --add-port=20000-20003/tcp --permanent
firewall-cmd --reload
#如果使用的iptables
iptables -I INPUT -p tcp --dport 20000 -j ACCEPT
iptables -I INPUT -p tcp --dport 20001 -j ACCEPT
iptables -I INPUT -p tcp --dport 20002 -j ACCEPT
iptables -I INPUT -p tcp --dport 20003 -j ACCEPT
iptables save
service iptables restart
然后访问http://IP:20000
就可以看到jiacrontab WEB界面了,初始用户名为admin
,密码为123456
配置文件
- 服务端配置文件位于
server/server.ini
里面包含了用户名、密码,STMP设置等信息,建议修改。 - 客户端配置文件位于
client/client.ini
,主要修改默认报警邮件接收人。 - 修改后需要kill杀掉对应进程,然后重新用
nohup
命令重新运行。
其它说明
- Demo:https://jiacrontab.iwannay.cn/login ,用户名:
admin
,密码:123456
- Github项目地址:https://github.com/iwannay/jiacrontab
能否跨主机执行任务
好像可以,很长一段时间没用了,记不清了,不知道现在咋样。
#运行客户端
cd app/jiacrontab/client
nohup ./jiaclient &> jiaclient.log &
客户端启动后 隔一段时间会挂掉,用的是腾讯云,可能原因是什么呢
应该是进程被杀了,尝试用systemd来运行吧。
添加依赖咋用啊
啥意思,你要添加什么依赖?
这个好,之前试过Cloudtask ,要使用Zookeeper和MongoDB ,太庞大了