自己有几个需要定时运行的爬虫,用不到诸如 pyspider 之类的爬虫框架,但是又觉得 crontab 不太直观。所以找到了 jiacrontab,自带 web 界面,使用 Go 语言开发。
提供可视化界面的定时任务&常驻任务管理工具。
功能
- 允许设置每个脚本的超时时间,超时操作可选择邮件通知管理者,或强杀脚本进程
- 允许设置脚本的最大并发数。
- 一台 server 管理多个 client。
- 每个脚本都可在 server 端灵活配置,如测试脚本运行,查看日志,强杀进程,停止定时…。
- 允许添加脚本依赖(支持跨服务器),依赖脚本提供同步和异步的执行模式。
- 友好的 web 界面,方便用户操作。
- 脚本出错时可选择邮箱通知多人。
- 支持常驻任务,任务失败后可配置自动重启。
- 支持管道操作。
说明
jiacrontab 由 server,client 两部分构成,两者完全独立通过 rpc 通信。
server:向用户提供可视化界面,调度多个 client。
client:实现定时逻辑,隔离用户脚本,将 client 布置于多台服务器上可由 server 统一管理。 每个脚本的定时格式完全兼容 linux 本身的 crontab 脚本配置格式。
界面截图
下载安装并运行
Github 地址:https://github.com/iwannay/jiacrontab
最新版下载地址:https://jiacrontab.iwannay.cn/download/
1 2 3 4 5 6
| $ wget https://jiacrontab.iwannay.cn/download/jiacrontab-v1.4.5-linux-amd64.zip $ unzip jiacrontab-v1.4.5-linux-amd64.zip $ cd jiacrontab/server $ nohup ./jiaserver &> jiaserver.log & $ cd .. && cd client $ nohup ./jiaclient &> jiaclient.log &
|
之后,可以在浏览器中输入 http://YourServerIP:20000 进行访问。默认用户名为 admin
,密码是 123456
。
设置开机自启动
方法一:
在 /etc/init.d
新建开机启动脚本,命名为 jiacrontab
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $ vi /etc/init.d/jiacrontab
# 输入以下内容,:wq 保存
#!/bin/bash ### BEGIN INIT INFO # Provides: uznEnehC # Required-Start: $network $remote_fs $local_fs # Required-Stop: $network $remote_fs $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: jiacontab # Description: jiacontab startup ### END INIT INFO cd root/jiacrontab/server # 假设之前下载到 root 文件夹,根据自身情况修改 nohup ./jiaserver &> jiaserver.log & cd .. && cd client nohup ./jiaclient &> jiaclient.log & exit 0
|
给予脚本相应的权限
1
| $ chmod 777 /etc/init.d/jiacrontab
|
设置开机启动
1 2
| $ update-rc.d jiacrontab defaults # update-rc.d -f jiacrontab remove # 删除开机启动,添加 -f 参数强制删除
|
方法二:
新建客户端service
1
| vi /etc/systemd/system/jiaclient.service
|
写入如下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| [Unit] Description=jiacrontab
[Service] User=root Group=root Type=simple ExecStart=/data/app/jiacrontab/client/jiaclient ExecReload=/bin/kill -s HUP $MAINPID KillMode=control-group Restart=on-failure GuessMainPID=yes WorkingDirectory=/data/app/jiacrontab/client/ PIDFile=/data/app/jiacrontab/client/jiaclient.pid RestartSec=15
[Install] WantedBy=multi-user.target
|
新建服务端service
1
| vi /etc/systemd/system/jiaserver.service
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| [Unit] Description=jiacrontab
[Service] User=root Group=root Type=simple ExecStart=/data/app/jiacrontab/server/jiaserver ExecReload=/bin/kill -s HUP $MAINPID KillMode=control-group Restart=on-failure GuessMainPID=yes WorkingDirectory=/data/app/jiacrontab/server/ PIDFile=/data/app/jiacrontab/server/jiaserver.pid RestartSec=15
[Install] WantedBy=multi-user.target
|
启动jiacrontab以及设置开机启动:
1 2 3 4 5
| systemctl start jiaclient systemctl enable jiaclient
systemctl start jiaserver systemctl enable jiaserver
|