Git Hooks

Hook可以在版本库提交,补丁等去构建一个,或多个脚本。一个事件可以分解很多步骤,用脚本控制发生的事…

比如,git commit -m “xxxx” 这一步会触发钩子,检测它的commit message是否遵循规则等等….  提交和创建分枝可以用钩子检测是否规范等,了解Hook是必不可缺的

.

1.2种钩子

  • 客户端钩子
  • 服务端钩子

2.hook存在.git/hooks中是单独存在,不会随clone复制,所以团队使用的时候要复制.git/hooks来使用(git clone, git fetch不能复制钩子)

3.钩子2种

  • 前置pre:钩子在动作前触发(进行检测,批准等)
  • 后置post:钩子在动作后触发(如发邮件通知,关闭bug)

4. exit 0 成功状态退出,exit 1 (非0)失败状态退出

5.使用钩子会变慢?思考5分钟 如果一个坏的钩子会严重影响工作效率,应立马禁止

6.钩子不会自动复制,处于安全。另一个原因是Git没有机制去复制出了Blob,树和提交之外的任何东西


二.安装钩子

1.每个钩子都是脚本,版本库的钩子都集合在.git/hooks目录下

2.每个钩子都是关联的事件来命名,比如: 在git commit操作前执行的钩子是.git/hooks/pre-commit

3.每个钩子必须遵循UNIX脚本基本规范,必须是可执行的(chmod u+x .git/hooks/pre-commit)这里如果对权限不理解可以看这遍文章《User,File权限管理》, 同时必须在首行改脚本语言解释(如:#!/bin/bash 或#!/bin/perl)

4.钩子必须有正确名字和授权可执行权限

5.创建钩子的时候会自动复制到Git目录下,例如:在Debian和Ubuntu系统中,钩子自动复制/user/share/git-core/templates/hooks

6.钩子自动创建,但默认都是禁止的。如果开启后要禁止  a)可以移除可执行权限   b)或者在.git/hooks/xx 指定的脚本添加 .sample后缀禁止

7.启动钩子直接移除文件.sample后缀(mv .git/hooks/pre-commit.sample .git/hooks/pre-commit),并且具有可执行权限(chmod u+x .git/hooks/pre-commit)

8.windows中默认是可执行的


续写…..

 

 

【shell】获取用户名和Ip (0/1000)

对脚本中的命令解释:

1.-c:以字符为单位进行分割 (6-21 是从6到21个字符截取)

-b:以字节为单位进行分割

-d:自定义分隔符,默认为制表符

-f:与-d一起使用,指定显示哪个区域

-n:取消分割多字节字符。仅和-b标志一起使用


2.grep -w “inet 或者 ” grep “\<inet\>”

-w, –word-regexp 强制 PATTERN 仅完全匹配字词


3.echo -e “\033[41;36m something here \033[0m”

文字颜色 30-37:

文字背景颜色范围 40-47:

快速解读网站统计ip,uv,pv

网站统计是每个站长都关心的一个事,其中有几个点来衡量你网站访问每日增减情况

0.有效时间24小时(00:00-24:00)

1.uv(unique visitor):在24小时内,cookie唯一的设备数之和

独立访客(cookie为标记的设备数),在24小时内(00:00-24:00),同一个设备(cookie)来计数(大多数是以cookie计算),但它这种方式并非真的唯一性

依据访客的浏览器、设备型号等信息,为访客分配一个Cookie (若访客换了浏览器和设备,cookie也会随着变化)

🌰: 比如一台电脑在00:00-24:00一直访问网站,cookie没清,那他这24小时uv算为1

2.IP(Internet Protocol)在24小时内,访问的唯一ip之和

只要设备ip不变,访问你网站的ip算为1

🌰:比如一直在拨号,一直在改ip后都去访问你的网站,ip也在随着ip数增加

🌰:局域网内有8台设备在访问你的网站,那么ip为1,因为局域网ip是同一个

3.pv(page view)在24小时内,浏览页面的数之和(24小时内访问网页浏览量总和,重复也算,它包含vv,)

🌰:比如一共刷新了3次页面(不管那个页面都行),pv就是3 ,vv 也是3

🌰:比如一个页面一直打开,过几分钟在访问,pv+1,vv不变,因为只是看之前缓存的页面,没有加载网页

4.vv (visit view) 在24小时内网站被成功加载次数

🌰:刷了网站3次 成功加载出来了,vv是3


例子uv>ip :说明在同一个ip下有多个设备(cookie唯一,没有清空的cookie下)访问你的网站

            ip>uv: 同一个设备多次更好ip

【linux】wget (1/100)

wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。

wget 这个名称来源于 “World Wide Web” 与 “get” 的结合。

所谓自动下载,是指 wget 可以在用户退出系统的之后在继续后台执行,直到下载任务完成。

wget遵守Robot Exclusion Standard(robots.txt)标准的工具。

wget支持不稳定网络下载,下载失败时,wget会重试直到把文件下载下来为止。

wget支持断点续传功能,当你下载的很大的文件失败时,就可以使用断点来继续下载。

1.基本参数
-V–version 显示软件版本号然后退出
-e–execute=COMMAND 执行一个 “.wgetrc”命令
注意这里的-e参数是执行一个.wgettrc的命令,.wgettrc命令其实是一个参数列表,直接将软件需要的参数写在一起就可以了
2.文件参数 (log输出方式)
-o–output-file=FILE 将软件输出信息保存到文件
-a–append-output=FILE将软件输出信息追加到文件
-d–debug显示输出信息
-q–quiet 不显示输出信息
-i–input-file=FILE 从文件中取得URL

 

 wget在下载robots.txt全禁怎么办?

可以使用“–execute 选项加参数”,它和把参数放到.wgetrc里的效果是一样的。使用–execute robots=off就可以躲开robots.txt

 


更新中…


 

【linux】Ping (0/100)

Ping是Linux、Windows、Unix系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。可以通过防火墙和内核参数禁止ping获取状态

Ping发送一个ICMP(Internet Control Messages Protocol)即因特网信报控制协议;回声请求消息给目的地并报告是否收到所希望的ICMPecho (ICMP回声应答)。它是用来检查网络是否通畅或者网络连接速度的命令。

ping 命令每秒发送一个数据报并接收到的响应输出

原理:利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少

ping指的是端对端连通,通常用来作为可用性的检查, 但是某些病毒木马会强行大量远程执行ping命令抢占你的网络资源,导致系统变慢,网速变慢。严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。通常的情况下你如果不用作服务器或者进行网络测试,可以放心的选中它,保护你的电脑。

命令解释
-c发送指定数后停止
-d用socket SO_DEBUG
-f大量并快速发送数据表给服务器,接受反应
-t存活数值,存活数值TTL大小
-n只输出数值
-q只显示最后结果,不显示传送信息
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题
-R记录路由过程
-v详细显示指令执行过程
-i秒数;设定间隔几秒送一个网络封包给一台机器,默认是一秒送一次
-l网络界面;使用指定的网络界面送出数据包
-p范本样式:设置填满数据包的范本样式
-s字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节
-ballow pinging abroadcast address(广播ip地址)

0.control+c (或-c参数)停止

1. ping 182.92.121.222

2.ping -b 182.92.121.222  网关

3.ping间隔和次数限制

4.ping指定次数(3次后停止)

5.ping自定义间隔,数据包大小和ttl峰值


简单shell脚本

wordpress访问巨慢

下载了几个插件后,这个网站访问速度巨慢,观察一直在访问http://fonts.googleapis.com/,还有一个情况是更新文章和发布,操作“All in seo”这个插件就执行不能访问的问题…

☁️分析:1.head加载太多 2.缓存问题

屏蔽方式一:

下载插件  Useso take over Google(现在发现这个插件也扯淡)Disable Google Fonts 来替换或者关闭

屏蔽方式二:在functions.php中加一段代码,就可以屏蔽谷歌代码

访问速度受限,除了上面屏蔽方式外,看下是不是哪个不用的插件或者引入了google字体,没有的就直接删掉。

五.【bash】函数定义

  • 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
  • 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
  • 所有函数在使用前必须定义

1.无参

2.有参

  • 函数返回值在调用该函数后通过 $? 来获得

3.函数传参

和外部一样的方式,

  • $0是脚本名
  • $n来标示, n>=10,用${10}标示,
  • $#表示参数个数,
  • $*是总参数
  • 其中全部参数转为数组用arr=$*   ${arr[*]}

四.【bash】流程控制

shell流程控制不可为空,else没有语句执行就不能写else

1. if ..elif.. else

2.if else 和test结合

3.for循环

4.while (使用了 Bash let 命令,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量)

while循环可用于读取键盘信息。下面的例子中,输入信息被设置为变量MAN,按结束循环

死循环:

5.until循环 (和while相反)

6.case..in 取值后用in,

a)每一模式必须以右括号结束。其间所有命令开始执行直至 ;;

b)如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令

7.跳出循环break

8.跳出当前循环continue

【bash】语法注意点

1. =不能分开 如: val=expr $a + $b`

2.[空格  ***  空格]条件判断要有空格 如: if [ $a ==$b ]

3.表达式和运算符之间要有空格, $a空格 + 空格 $b写成$a+$b不行

4.case..in 取值后用in, esac作为结束标记 ;;标示break

a)每一模式必须以右括号结束。其间所有命令开始执行直至 ;;

b)如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令

5. EOF要紧在左边,不能有空格syntax error: unexpected end of file

三.【bash】基本运算符

  • 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awkexpr,expr 最常用 是一款表达式计算工具,使用它能完成表达式的求值操作。
  • 注意使用的反引号
  • 表达式和运算符之间要有空格$a + $b写成$a+$b不行
  • 条件表达式要放在方括号之间,并且要有空格[ $a == $b ]写成[$a==$b]不行 乘号(*)前边必须加反斜杠()才能实现乘法运算

1. +   –   \*   /


2.关系运算符

运算符说明
-eq等于
-ne不等于
-gt大于
-lt小于
-ge大于等于
-le小于等于


3.逻辑运算符

运算符说明
&&and
||or


4.字符串运算符

运算符说明
=字符串是否相等
!=字符串不相等
=-z字符串长度为0
=-N字符串长度不为0
str字符串是否是空,不空为true


5.文件运算符

操作符说明
-e文件存在 (-a:被弃用
-f是一般文件
-s文件大小不为0
-d目录
-b块设备
-c字符设备(键盘,modem,声卡等)
-p管道
-h符号链接
-L符号链接
-Ssocket
-t文件描述符被关联到终端设备上,一般测 stdin([-t 0]) 或stdout([-t 1])是否来一个终端
-r具有可读权限
-w具有可写权限
-x具有可执行权限
-gset-group-id(sgid)标记被设置到文件或目录上
-k设置粘贴位
-o判断拥有文件
-G文件的group-id是否与你的相同
-N从文件上次读取至今,文件是佛被修改过
f1 -nt f2f1比f2新
f1 -on f2f1比f2旧
f1 -ef f2f1和f2是相同文件的硬链接

( )1.先计算小括号里面的内容

2.数组

3.匹配分组

(( ))1.表达式,不支持-eq这类的运算符。不支持-a和-o,支持<=、>=、<、>这类比较符和&&、||

2.C语言风格的for(())表达式

$( )执行Shell命令,与反撇号等效
$(( ))1.简单算数运算

2.支持三目运算符 $(( 表达式?数字:数字 ))

[ ]条件表达式,里面不支持逻辑判断符
[[ ]]条件表达式,里面不支持-a和-o,不支持<=和>=比较符,支持-eq、<、>这类比较符。支持=~模式匹配,也可以不用双引号也不会影响原意,比[]更加通用
$[ ]简单算数运算
{ }对逗号(,)和点点(…)起作用,比如touch {1,2}创建1和2文件,touch {1..3}创建1、2和3文件
${ }1.引用变量

2.字符串处理

6.开始转义

7.格式化

%-8s 指为8个字符(-表示左对齐,默认右对齐),如果不足则自动以空格填充,超过也会将内容全部显示出来

序列说明
\a警告字符,通常为ASCII的BEL字符
\b后退
\c输出结果中任何结尾的换行字符
\f换页(formfeed)
\n换行
\r回车(Carriage return)
\t水平制表符
\v垂直制表符
\\一个字面上的反斜杠字符
\ddd表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd表示1到3位的八进制值字符