Total Pageviews

Friday, 30 November 2018

胡少江:习近平艰难的阿根廷之旅




明天(中国时间周六/12月1日),20国集团领导人将在阿根廷首都布宜诺斯艾利斯举行2018 G20峰会。但是,这次峰会注定会被美国总统特朗普和中国主席习近平抢去风头,因为特朗普和习近平将在峰会期间举行会晤,这次会晤的焦点,除了朝鲜、南海等国际热点问题之外,主要讨论如何处理两国过去近一年来在贸易问题上的争端。这场已经开始大半年的贸易战能不能结束?如果不能结束,将对两国经济乃至全球经济带来甚么样的影响?这个问题已经成为全球市场关注的焦点。

对于中国领导人习近平来说,这是一次注定无法成功的外交活动。如果他在贸易问题上向特朗普做出让步,那将进一步削弱他在国内的政治基础,甚至有可能动摇他在党内高层的地位。因为习近平本人所主导的中国政策的左转正是此次冲突的导火索,在他的主导之下,中国的外交部、外贸部调门一直很高调,反覆强调中国不怕贸易战,而且最终能够依靠自己的政治制度赢得这场贸易战云云。(用我的家乡话说,习近平就是一个不知天高地厚的“猛子”)

假如中国突然在这次谈判中作出明显让步,无异于是习近平和他的团队自打耳光。

但是,如果习近平和中国政府坚持在国际贸易中的不公平做法,拒绝在降低贸易壁垒和投资壁垒、尊重和保护知识产权、强迫外国投资企业技术转移、减少对国有企业的不公平补贴、网路入侵和网络盗窃等方面做出让步,美国则将从明年一月开始把2500亿中国出口商品的关税税率从现在的百分之十提高到百分之二十五,同时还将对另外的2670亿中国商品开征百分之二十五的关税。这对已经减速的中国经济将是雪上加霜,而经济进一步出现问题将是中国社会和政治稳定的不可承受之重。

根据中国各地上报的经济数据看,今年的出口贸易至今为止未见明显下降,这是因为各地抢在美国提高关税之前快速出口。但是,从明年第一季度开始,来自美国的订单已经明显减少,这些一定会对中国的出口生产、就业和人民币币值产生显著的负面影响,沿海城市的政府官员都在为此事忧心忡忡。这些影响与中国面临的房地产市场下滑、金融系统的债务危机、地方财政危机、民营企业的投资下降等现象叠加在一起,定将使得明年的中国经济增长速度急速下滑。

特朗普公开说,中国政府已经提出了包括140多项让步的清单,但是他表示这些让步还不够,他还期待从中国得到另外几项更为重要的妥协、。对特朗普的说辞,中国政府并没有公开反驳,这说明中国政府的确正在做出一些让步,也说明他们需要结束这场对自己损害极大的贸易战。从这个意义上讲,特朗普在与习近平的谈判中已经占了上风,习近平还未成行便已经屈居下风。两天的会议、几个小时的双边会谈究竟能够给习带来多少运气,人们对此很难持乐观态度。

当然,如果从中国长远的发展出发,习近平在此次与特朗普的谈判中是应该做出让步的,这个让步表面上看是对特朗普的让步,实际上是对中国市场化发展需要的让步,也是对中国主张改革的进步力量的让步。(所以说,特朗普无意之中,帮了中国人民一个大忙)

问题是,从习近平的立场出发,维护共产党一党专制的政体比中国的文明发展更重要,维护最高领导人的权威和面子比广大民众的福祉更重要,这正是当前美中贸易战难解的深层原因,也是中国执政党绑架中国社会,与全球自由、民主和文明力量进行对抗的深层原因。
---------

共匪这次还想“说一套,做一套”,恐怕难咯。共匪真当美国人是瞎子吗?美国人不会对共匪“听其言,观其行”吗?
共匪若想又来“说一套,做一套”,川大神恐怕立刻就会提高中国货的关税,玩死共匪,哈哈。。。

一键开启MacOS HiDPI

前言

作为一个黑苹果用户,追求黑果的体验是当然的,当各个硬件都驱动完善后,要做的就是细节的优化了,毕竟装上是拿来用的,可不能因为体验差苦了自己啊。机器毕竟便宜,从第一视觉上最重要的就是屏幕了,当然自带的屏幕素质没法改变,除非换屏了,然而换屏又违背了省钱的初衷,于是只能通过 UI 上的改变来提升体验了。

说明

项目地址:https://github.com/xzhih/one-key-hidpi
 此脚本的目的是为中低分辨率的屏幕开启 HiDPI 选项,并且具有原生的 HiDPI 设置,不需要 RDM 软件即可在系统显示器设置中设置.
MacOS 的 dpi 机制和 win 下不一样,比如 1080p 的屏幕在 win 下有 125%、150% 这样的缩放选项,而同样的屏幕在 MacOS 下,缩放选项里只是单纯的调节分辨率,这就使得在默认分辨率下字体和 UI 看起来很小,降低分辨率又显得模糊。
同时,此脚本也可以通过注入修补后的 EDID 修复闪屏,或者睡眠唤醒后的闪屏问题,当然这个修复因人而异.
开机的第二阶段 logo 总是会稍微放大,因为分辨率是仿冒的.
设置:

使用方法

在终端输入以下命令回车即可:
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/xzhih/one-key-hidpi/master/hidpi-zh.sh)"

恢复

如果使用此脚本后,开机无法进入系统,请到恢复模式中或使用 clover 的 -x 安全模式进入系统 ,使用终端删除 /System/Library/Displays/Contents/Resources/Overrides 下删除显示器 VendorID 对应的文件夹,并把 backup 文件夹中的备份复制出来。
具体命令如下:
$ cd /Volumes/你的系统盘/System/Library/Displays/Contents/Resources/Overrides
$ VendorID=$(ioreg -l | grep "DisplayVendorID" | awk '{print $8}')
$ Vid=$(echo "obase=16;$VendorID" | bc | tr 'A-Z' 'a-z')
$ rm -rf ./DisplayVendorID-$Vid
$ cp -r ./backup/* ./

TCP拥塞控制技术与BBR的加速原理

本文会简要的讲一下关于 TCP 拥塞控制技术 的由来与发展,以及现在很常见的 BBR 的加速原理

什么是拥塞

拥塞现象,是指数据到达通信子网的过程中,某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象。严重时会导致网络陷入死锁。
这种现象好比公路上常见的交通拥挤,当节假日公路车辆大量增加时,道路拥堵,使每辆车到达目的地的时间增加,即发生了拥塞。

什么是拥塞控制技术

拥塞控制(Tcp Congestion Control),就是针对此问题的控制技术(应对方案),但也不能说是应对,拥塞控制只能尽量缓解拥塞。
拥塞控制用于调整 TCP 连接单次发送的分组数量(单次发送量,在英文和代码中称做 cwnd),它通过逐步调整单次发送量,使其逼近当前网络的承载量。
拥塞控制的目标是最大限度地利用网络带宽,同时不产生数据流传输中的拥塞现象。
这也是 锐速 和 BBR 能起到明显加速效果的原因。

传统的TCP拥塞控制算法

传统的 TCP 拥塞控制主要是基于 Van Jacobson 博士提出的慢启动算法、拥塞避免算法和用于估计周转 RTT(Round Trip Time)的算法。
慢启动算法通过观察进入网络的速率应该与另一端返回确认的速率相同进行工作。慢启动为发送方增加了一个称为“拥塞窗口”(英文中称为 cwnd )的窗口,当与接收方建立 TCP 连接时,拥塞窗口被初始化为 1 个报文段(即另一端通告的报文段大小)。接收方每收到一个 ACK ,拥塞窗口就增加 1 个报文段( cwnd 以字节为单位,而慢启动以报文段大小为单位进行增加),发送方取拥塞窗口与通告窗口中的最小值作为发送上限,即拥塞窗口是发送方的流量控制,通告窗口是接收方的流量控制。发送方开始时发送一个报文段,然后等待 ACK ,收到 ACK 后拥塞窗口从 1 增加到 2 ,即可以发送两个报文段。当收到这两个报文段的 ACK 后拥塞窗口则增加为 4 ,拥塞窗口呈指数式增长。
然后,在某些传输段可能会达到容量上限,中间路由便开始丢弃分组。拥塞避免算法就是用于处理丢失分组的算法。
拥塞避免算法假定分组丢失是非常少的(远小于 1% ),因此认为分组丢失就意味着在发送方和接收方之间的某个传输段上发生了拥塞。
慢启动和拥塞避免算法是两个目的不同、独立的算法,但在实际中这两个算法通常在一起实现。当拥塞发生时,我们希望降低分组进入拥堵段的速率,于是设计了慢启动方式来做到这一点。
1990 年出现的 TCP Reno 版本,增加了快速重传算法和快速恢复算法,避免了当网络拥塞不够严重却因采用慢启动算法而造成过大地减小发送窗口尺寸的现象。
1.拥塞控制的四个阶段
  1. 慢启动阶段(Slow Start):发送方一开始便向网络发送多个报文段,直至达到接收方的通告窗口大小为止。当发送方和接收方处于同一局域网时这种方式值得采用。但假如在发送方和接收方之间存在多个路由或速率较低的链路时,就可能引起一些问题。某些中间路由必须缓存分组,并有可能耗尽存储空间。
  2. 拥塞避免阶段(Congestion Avoidance):当发现有超时或收到 3 个相同 ACK 确认帧时,认为有丢包发生,此时网络已发生拥塞现象,需进行相应的拥塞控制:将慢启动阈值设置为当前拥塞窗口的一半;若检测到超时,拥塞窗口就被置为 1 。假如拥塞窗口 <= 慢启动阈值,则重新进入慢启动阶段;假如拥塞窗口大于慢启动阈值,执行拥塞避免算法。
  3. 快速重传阶段(Fast Retransmit):当发送方收到三个相同的 ACK 副本时,认为有丢包发生,并迅速令发送方重传丢失的数据包,而不必等待 RTO 超时。同时将 ssthresh 设置为当前 cwnd 值的一半,并且将 cwnd 减为原先的一半。
  4. 快速恢复阶段(Fast Recovery):当旧数据包离开网络后,才能发送新数据包进入网络,即同一时刻在网络中传输的数据包数量是恒定的。假如发送方收到一个重复的 ACK ,则认为已经有一个数据包离开了链路,并将拥塞窗口加 1 。
2.对传统TCP拥塞控制机制的发展及改进
  1. 对慢启动的改进
    慢启动算法通过逐渐增加 cwnd 大小来探测可用的网络容量,防止连接一开始便采用过大发送量导致网络拥塞。然而有时该算法也会浪费可用的网络容量,因为慢启动算法总是从 cwnd = 1 开始,每收到一个 ACK ,cwnd 增加 1 ,对于高 RTT 网络,为使 cwnd 达到合适值,需要花费很长时间在探测上。因此可设置较大初始窗口,大的初始窗口避免了延迟 ACK 机制单个报文段初始窗口的等待超时问题,缩短了小 TCP 流的传输时间和大延迟链路上的慢启动时间。
  2. 对重传与恢复的改进
    为了避免不必要的重传超时,有人提出了一种受限传输机制:发送方接收到一个或两个重复 ACK 后,才继续传输新的数据报文段。从而避免了不必要的重传。
    有很多情况下,数据报文段并没有丢失,但发送方可能会误判数据报文段丢失,然后调用拥塞控制减小拥塞窗口大小。比如当重传定时过早溢出时,发送方在重传数据报文段时不必要地减小了拥塞窗口,而这时实际上并没有数据报文段丢失。假如是由于数据报文段的重新组织而不是数据报文段的丢失,导致 3 个重复确认,同样会导致发送方不必要地在快速重传数据报文段后减小拥塞窗口。
    假如发送方在重传数据报文段一个 RTT 后发现接收方接收到了重传数据报文段的两个拷贝,则可以推断重传是不必要的。这时,发送方可以撤销对拥塞窗口的减小。发送方可以通过将慢启动阀值增加到初始值,使拥塞窗口恢复至初始值。除了恢复拥塞窗口,发送方还可以调整重复确认阀值或者重传超时参数来避免多次不必要的重传。
  3. 对公平性的改进
    在拥塞避免阶段,假如没有发生丢包事件,则发送方的 cwnd 在每个 RTT 时间内大约可以增加一个报文段大小,但这样会造成具有不同 RTT 或窗口尺寸的多个连接在瓶颈处对带宽竞争的不公平性。大 RTT 或小窗口的连接,相应的 cwnd 增长速度也相对缓慢,所以只能得到很少一部分带宽。
    要解决上述问题,可以通过在路由处使用公平队列和 TCP 友好缓存来进行控制以增加公平性。假如没有路由的参与,要增加公平性,就要求发送方的拥塞控制进行相应的改变,在拥塞避免阶段使共享同一资源的各个 TCP 连接以相同速度发送数据,从而确保了各个连接间的公平性。

新的拥塞控制技术 – BBR

BBR 是谷歌内部员工开发的新 TCP 拥塞控制技术,和锐速一样属于激进算法
上文提到过,锐速和 BBR 加速的作用在于最大限度利用网络带宽,同时不产生数据流传输中的拥塞现象
但同时这也引起了 TCP 连接的公平性问题和可能的多余窗口发送

BBR 的组成

概括来讲,BBR 由 5 部分组成:
  1. 即时速率的计算
    计算一个即时的带宽,该带宽值是 BBR 后续一切计算的基准。BBR 会根据当前的即时带宽以及其所处的 pipe 状态来计算 pacing rate 以及 cwnd ,后面我会提到,这个即时带宽计算方法的突破式改进是 BBR 简单且高效的根源,计算方案按照数学计算,不再局限于数据的含义。在 BBR 运行过程中,系统会跟踪当前时段的最大即时带宽。
  2. RTT 的跟踪
    BBR 之所以可以获取高带宽利用率,是因为它可以非常奔放地探测到带宽的最大值以及 RTT 的最小值,这样计算出来的 BDP 就是目前为止 TCP 管道的最大容量。BBR 的目标就是充分利用这个最大容量,这个目标最终驱动了 cwnd 的计算。在 BBR 运行过程中,系统会跟踪当前时段最小 RTT 。
  3. pipe 状态机
    BBR 根据 TCP 的拥塞状况,有针对性地定义了 4 种状态,即 STARTUP ,DRAIN ,PROBE_BW ,PROBE_RTT 这四种状态。BBR 通过对上述计算的即时带宽 BW 和 RTT 的持续观察,在这四种状态之间自由切换,相比以前的所有拥塞控制算法,其革命性的改进在于 BBR 不再跟踪系统的 TCP 拥塞状态机,而旨在用统一且自由的方式来应对 pacing rate 和 cwnd 的计算,不管当前 TCP 是处在 Open 还是处在 Disorder 状态,抑或已到达 Recovery 状态。事实就是,BBR 忽略丢包的存在,只考虑对 BW 和 RTT 的观察。
  4. 输出:pacing rate 和 cwnd
    BBR 的输出并不仅仅是一个 cwnd ,更重要的是 pacing rate 。在传统算法中,cwnd 是 TCP 拥塞控制算法的唯一输出,但它仅仅规定了当前 TCP 最多可以发送多少数据流,它并没有规定怎么把这么多数据发送出去,在 Linux 中,如果发出这么多数据呢?简单而粗暴 – 突发!忽略接收端通告窗口的前提下,Linux 会把 cwnd 窗口数据全部突发出去,而这往往会造成路由的排队。BBR 在计算 cwnd 的同时,还计算了一个与之适配的 pacing rate ,该 pacing rate 规定 cwnd 指示的窗口数据的数据包之间以多大的时间间隔发送出去。
  5. 外部机制的利用
    BBR 可以高效地运行且如此简单,还在于很多机制并不是它本身实现的,而是利用了外部的已有机制。
    下文中将阐述它为什么在计算带宽 BW 时能做到如此奔放地将重传数据也计算在内。

带宽的计算

即时带宽 BW 的计算

BBR 完全忽略系统层面的 TCP 状态,计算带宽时它仅需要两个值:
  • 应答了多少数据,记为 delivered
  • 应答 delivered 所用的时间,记为 interval_us
将上述二者相除,就能得到带宽:
BW = delivered/interval_us
以上的计算完全是标量计算,只关注数据的大小,不关注数据的含义。例如 delivered 的采集中,BBR 根本不关心某个应答是重传后的 ACK 确认的、正常 ACK 确认的、还是 SACK 确认的。BBR 只关心被应答了多少。
这和 TCP/IP 网络模型是一致的,因为在中间链路上,路由交换机也不会去管这些数据包是重传的还是乱序的,然而拥塞也是在这些地方发生的,既然拥塞点都不关心数据的意义,TCP 为什么要关注呢?拥塞发生的原因,即数据量超过了路由带宽限制,利用这一点,只需要精心地控制发送数据量就好了,完全不用管什么乱序、重传之类的。

PACING RATE 以及 CWND 的计算

pacing rate 怎么计算?就是即时带宽 BW 。而即时带宽 BW 是上一次采样计算的结论,这次能否按照这个 BW 发送数据呢?这要看当前的增益系数的值,设为 G ,那么 G×BW 就是 pacing rate 的值。
至于 cwnd 的计算,cwnd 其实描述了一条网络管道(而 rwnd 描述了接收端缓冲区),因此 cwnd 其实就是这个管道的容量即 BDP 。BW 已经有了,还缺少 RTT 。BBR 一直在持续搜集最小 RTT ,BBR 并没有采用类似移动指数平均算法来猜测 RTT ,而是直接采集最小 RTT(这个 RTT 是 TCP 系统层面移动指数平均的结果,即 SRTT ,但 BBR 并不会对此结果再次做平均。最小 RTT 表示一个曾经达到的最佳 RTT ,既然曾经达到过,说明可以再次达到该 RTT ,这样有益于网络管道利用率最大化。通过 G’×BDP 就算出了 cwnd ,这里的 G’是 cwnd 的增益系数,与带宽增益系数 G 含义一样,根据 BBR 的状态机获取。

状态机

不断地基于当前带宽以及当前的增益系数计算 pacing rate 以及 cwnd ,以这 2 个结果作为拥塞控制算法的输出。在 TCP 连接的持续过程中,每收到一个 ACK ,都会计算即时带宽,然后将结果反馈给 BBR 的 pipe 状态机,不断地调节增益系数。
可以发现,它是一个典型的封闭反馈系统,与 TCP 当前处于什么拥塞状态完全无关。这非常不同于之前的所有拥塞控制算法,在之前的算法中,算法内部是受外部的拥塞状态影响的,比方说在 Recovery 状态下,甚至都不会进入拥塞控制算法。
在 BBR 问世前,Linux 使用 PRR 算法控制 Recovery 状态的窗口调整,即使这个时候网络已经恢复,TCP 也无法发现, 因为 TCP 的 Recovery 状态还未恢复到 Open.

过气的ifconfig命令,你还在用吗(我还在用)

今天看到有人说ifconfig、route、arp等命令已经过气了,我心里一惊。这些东西,我才刚刚学会,咋能说过气就过气了呢?不成,我得看个究竟。
经过多方查找,在Debian的网站上,我还真找到net-tools作者Martin Ferrari的一封公开信,发布于2009年3月15日。他信中说,net-tools不能支持Linux内核中的诸多现代功能,在自动化中应用起来非常困难。而另一方面,自2007年以来,一直随Linux 2.2版发行的iproute的功能已经完成覆盖net-tools,且性能更优。特别是,net-tools中的ipmaddr中的代码来自iproute中的ip maddr;iptunnel,则来自iproute中的ip tunnel。总的来说,他觉得有必要放弃net-tools,号召大家使用iproute。
在Linux CentOS 7里,运行man route,就能看到,命令简介下有一行字:
This program is obsolete. For replacement, check for ip route.(本程序已经过期,请使用ip route命令)
我一一查询了ifconfig、ipmaddr、iptunnel、nameif、arp等命令,个个都是如此。两组工具的对照表如下:
net-tools中被iproute2替代、过气的工具对照表
1)地址及链接配置
    ip addr, ip link, ip -s取代了ifconfig
2)查看路由表
    ip route取代了route
3)查看网络邻居
    ip neigh取代了arp
4)查看网络通道
    ip tunnel取代了iptunnel
5)网络接口更名
    ifrename, ip link set name取代了nameif
6)多播
    ip maddr取代了ipmaddr
7)多种网络统计数据
    ip -s, ss, ip route取代了nestat
8)用mii与网卡自动协商工作状态
    ethtool取代了mii-tool
Wikipedia上,把netstat也算作net-tools,也在过气之列。但权威的Linux基金会网站上没有netstat。查询netstat的帮助信息,也没有讲这个命令要obsolete。
iproute2,也称作iproute,是一个用户空间的工具集,可用来管理、监控Linux内核中的网络功能,包括路由、网络接口、通道、流量控制,以及网络相关的设备驱动等等。iproute2与Linux内核之间,通过netlink协议通信。
iproute2是一个开源项目,以GNU GPL 2许可发行。它的开发,紧跟Linux内核网络组件的步伐。2013年12月,其代码库由Stephen Hemminger来管理。原来的作者Alexey Kuznetsov在负责Linux内核质量管理(QoS)工作。
iproute2包括以下命令行工具:
  • ip
  • ss
  • bridge
  • rtacct
  • rtmon
  • tc (traffic control,流量控制)
  • ctstat
  • lnstat
  • nstat
  • routef
  • routel
  • rtstat
  • tipc
  • arpd
  • devlink
我现在还在使用ifconfig等命令。我们来试一试ip系列的命令:
  • ip addr/ ip a  #查看所有的网络设备
  • ip addr show eth0  #查看eth0的详细信息
  • ip route  #查看所有的路由
  • ip neigh #查看当前内核中记录的网络邻居,为ip neighbour的省略形式
  • ip link set eth0 up #启动网络接口eth0
  • ip link set br0 down #关闭网络接口br0
  • ip addr add 192.168.1.5 dev eth1  #为eth1添加ip地址
  • ip addr del 192.168.1.5/24 dev eth1 #删除eth1网卡的ip地址
  • ip route add 172.25.250.0/24 via 192.168.1.100 dev eth0 #添加固定路由
  • ip route del  172.25.250.0/24 #删除固定路由
  • ip route add default via 192.168.1.1  #添加缺省网关
  • ip route add default via 192.168.1.1  #删除固定网关
现在,也知道两组看似等效的命令之间有着很大的差别,以至于一个大红大紫,一个惨遭抛弃。这种差别具体又是什么?我也没有时间去深究。不过,要是你的工作跟这些相关,肯定会知道,在云计算等新兴的技术栈中,继续使用net-tools系列工具将不合时宜。必要的时候,还应该去阅读工具的源代码,以发现它们之间的区别。
意识到这个问题,我们应该尽可能不再发表跟哪些过气的命令相关的文章或博客,加速这些命令退出内核的步伐。那些拒不使用iproute之类新命令,仍然宣传如net-tool这类过气命令的人,是不是就成了技术领域内的保守力量?要知道,他们曾经也是很潮、很前卫的一群人。
最后,我要说的是:我竟然这么落伍,这么迟钝。那封信早在2009年就已经公开,而我在9年之后的2018年才读到。看来,我也有点过气了。

Jiacrontab:一个带Web面板的定时任务&常驻后台管理工具

说明:我们一般使用程序的时候,很多都需要使用定时任务来按时重启/执行应用,还有的也需要让程序一直常驻后台,对这类要求使用的基本上是crontab和Systemctl/Supervisor,不过对于很多人来说配置挺麻烦的,这里就分享一个带Web面板的定时任务&常驻后台工具,可以很方便设置定时任务和常驻后台操作,也可以同时管理多台服务器,很强大,使用起来很方便。

功能

  • 允许设置每个脚本的超时时间,超时操作可选择邮件通知管理者,或强杀脚本进程。
  • 允许设置脚本的最大并发数。
  • 一台server管理多个client。
  • 每个脚本都可在server端灵活配置,如测试脚本运行,查看日志,强杀进程,停止定时等。
  • 允许添加脚本依赖(支持跨服务器),依赖脚本提供同步和异步的执行模式。
  • 友好的web界面,方便用户操作。
  • 脚本出错时可选择邮箱通知多人。
  • 支持常驻任务,任务失败后可配置自动重启。
  • 支持管道操作。

原理

jiacrontab由server,client两部分构成,两者完全独立通过rpc通信。   
server:向用户提供可视化界面,调度多个client。   
client:实现定时逻辑,隔离用户脚本,将client布置于多台服务器上可由server统一管理。 
每个脚本的定时格式完全兼容linux本身的crontab脚本配置格式。   

安装

1、安装依赖
#CentOS系统   yum -y install unzip      #Debian/Ubuntu系统   apt install unzip -y   
2、运行Jiacrontab
先访问该地址→传送门,根据操作系统获取最新版本的Jiacrontab下载地址,然后使用命令:
#下载jiacrontab   
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 &   
然后还需要开放20000-20003端口,使用命令:
#CentOS 7   firewall-cmd --zone=public --add-port=20000-20003/tcp --permanent   firewall-cmd --reload      #CentOS 6(一般情况下,Debian和Ubuntu不需要开启,如果访问不了Web就需要开启了)   iptables -A INPUT -p tcp -dport 20000:20003 -j ACCEPT   iptables save   service iptables restart
然后访问http://IP:20000就可以看到jiacrontab WEB界面了,初始用户名为admin,密码为123456。

配置文件

服务端配置文件:server/server.ini,可以在里面修改用户名、密码,邮箱,允许使用的命令等信息。   
客户端配置文件:client/client.ini ,可以修改报警邮箱,开启日志及连接服务端地址。   

使用说明

#基本使用   1、定时任务   超时设置和超时操作   超时后会进行设置的超时操作 默认值为0 不判断超时      2、最大并发数   最大并发数 控制 同时有几个脚本进程   默认最大并发数为1,若不设置超时时间,当定时任务第二次执行时,若上一次执行还未完成   则会kill上一个脚本,进行本次执行。   防止脚本无法正常退出而导致系统资源耗尽      3、添加依赖   依赖就是用户脚本执行前,需要先执行依赖脚本,只有依赖脚本执行完毕才会执行当前脚本。   并发执行:并发执行依赖脚本,任意一个脚本出错或超时不会影响其他依赖脚本,但是会中断用户脚本   同步执行:同步执行依赖脚本,执行顺序为添加顺序,如果有一个依赖脚本出错或超时,则会中断后继依赖,以及用户脚本      脚本异常退出通知 如果脚本退出码不为0,则认为是异常退出      #常驻任务   常驻任务检查脚本进程是否退出,如果退出再次重启,保证脚本不停运行   其他同 定时任务