[实践OK]修改错fstab后出现无法个性/etc/fstab出现无法读取磁盘的问题,centos进入救援模式,修复fstab错误
Unix/LinuxC技术 jackxiang 2019-4-21 19:07
在centos数秒启动页面,按e,进入编辑模式
找到2步中的ro,修改成:rw init=/sysroot/bin/sh,然后按ctrl+x重启
执行chroot /sysroot获取root权限,使用vi /etc/fstab编辑fstab配置文件
来自:https://blog.csdn.net/laotoumo/article/details/82746131
找到2步中的ro,修改成:rw init=/sysroot/bin/sh,然后按ctrl+x重启
执行chroot /sysroot获取root权限,使用vi /etc/fstab编辑fstab配置文件
来自:https://blog.csdn.net/laotoumo/article/details/82746131
如下所示,文件hello.txt中有5行数据,要将这5行数据在一行中显示出来,并用空格分隔。
jie$ cat hello.txt
1
2
3
4
5
从下方法均可实现:
方法1.
$ echo `cat hello.txt`
1 2 3 4 5
cat hello.txt | xargs
1 2 3 4 5
$a=$(cat hello.txt)
cat "$a"
1
2
3
4
5
原文:https://blog.csdn.net/guoyajie1990/article/details/73692526
jie$ cat hello.txt
1
2
3
4
5
从下方法均可实现:
方法1.
$ echo `cat hello.txt`
1 2 3 4 5
cat hello.txt | xargs
1 2 3 4 5
$a=$(cat hello.txt)
cat "$a"
1
2
3
4
5
原文:https://blog.csdn.net/guoyajie1990/article/details/73692526
[实践OK]AWK增加列分割符号,增加一列相同的值。
Unix/LinuxC技术 jackxiang 2019-4-17 16:36
一)AWK增加列分割符号:
| awk -v 'OFS=:' '{print $1,$1,$1}'
二)增加一列相同的值,如何用awk在每行最后添加字段:
awk '{print $0, 新字段}' 文件名
https://zhidao.baidu.com/question/2121603287620619987.html
| awk -v 'OFS=:' '{print $1,$1,$1}'
二)增加一列相同的值,如何用awk在每行最后添加字段:
awk '{print $0, 新字段}' 文件名
https://zhidao.baidu.com/question/2121603287620619987.html
ip_local_port_range: prefer different parity for start/end values.
Unix/LinuxC技术 jackxiang 2019-4-9 23:01
Linux increase ip_local_port_range TCP port range using sysctl.conf
Finally, edit /etc/sysctl.conf file, to make changes to /proc filesystem permanently i.e. append the following line to your /etc/sysctl.conf file:
# increase system IP port limits
net.ipv4.ip_local_port_range = 1024 65535
来自:https://www.cyberciti.biz/tips/linux-increase-outgoing-network-sockets-range.html
Finally, edit /etc/sysctl.conf file, to make changes to /proc filesystem permanently i.e. append the following line to your /etc/sysctl.conf file:
# increase system IP port limits
net.ipv4.ip_local_port_range = 1024 65535
来自:https://www.cyberciti.biz/tips/linux-increase-outgoing-network-sockets-range.html
[实践OK]linux下修改fstab的只读问题,linux下修改fstab后出现只读问题。
Unix/LinuxC技术 jackxiang 2019-4-9 22:12
今天自己已开始做在虚拟机上做实验,增加了一个磁盘sdb1,而且也增加了自动挂载的功能/etc/fstab里增加了记录。后来自己把这个磁盘给删除了,再次重新启动服务器的时候,系统启动不了了。
系统提示:
按提示 输入 root的密码,进入以Repair filesystem 为提示符的界面。
vi /etc/fstab后 提示,只读,也就是没权限修改。
解决方案如下:
于是输入 mount -o remount,rw /
逗号前面无空格(切记),而且一定要有/这个
表示重新挂载为读写模式。
这个时候再 vi /etc/fstab 发现已经可以修改了,修改完毕,重启,正常。
---------------------
原文:https://blog.csdn.net/waterxcfg304/article/details/49766467
系统提示:
按提示 输入 root的密码,进入以Repair filesystem 为提示符的界面。
vi /etc/fstab后 提示,只读,也就是没权限修改。
解决方案如下:
于是输入 mount -o remount,rw /
逗号前面无空格(切记),而且一定要有/这个
表示重新挂载为读写模式。
这个时候再 vi /etc/fstab 发现已经可以修改了,修改完毕,重启,正常。
---------------------
原文:https://blog.csdn.net/waterxcfg304/article/details/49766467
[转]【swoole4.0】一次qps提升之旅(一)
Swoole专题研究 jackxiang 2019-4-9 10:21
背景:PHP在跨版本升级时一些扩展没跟上,跨的步子不是小而是不够大,跟不上的问题只好swoole来帮其迈步大一些,但是毕竟相关配套还是没有来得及跟上,有观望的,有踟蹰不前的,有换Go的,总之,这个过程是艰难,王导的这篇文章就是一个对swoole的性能再次作优化的一个不错的分享,君子身非异也,善假于物也,说白了就是工具配套很重要的,希望周边的扩展能跟上,特转之。
源起
最近基于swoole的一个mvc开发框架做了一个项目,完成之后对其中一个接口例行做了一次压测,本机上得到qps是3600,由于接口功能比较简单,所以又花了点时间用beego和spring boot实现了相同的功能,也压测了一下,最终对比如下:
swoole: 3600qps
beego: 2200 qps
spring: 600qps
(ps: 无意比较优劣,应该是用beego和spring boot的姿势不对)
swoole的结果符合预期,后来经过一翻折腾(加了一些逻辑,完善了一些底层框架代码),再一压这个接口,qps下降到了2300
真是一顿操作猛如虎,性能下降35%啊
优化
做为一个有追求的phper,这是不能忍的,必需找到原因并解决之,但光喊口号是不行的,必需有方法,一般我们会通过几种方式分析:
日志法:通过各种日志,查看耗时,找出相应的问题,但这种方法有几个缺点:
粒度太粗,不好控制
侵入性太强,需要人工打点
性能指标不够,只能分析出大致的耗时,但不能分区i/o, cpu时间乖
xdebug:是我认为目前最牛逼的性能分析工具,可以无侵入式的详细的记录完整的调用链,唯一的遗憾是与swoole不兼容
xhprof: facebook出口的一款性能分析工具,简单易用,问题是:后期不维护了,对现在的php版本以及swoole支持度都不好
第三方的apm工具: 不可控,也不如前面2位,对swoole支持也不好
除了打日志,好像在swoole下陷入的僵局了,一翻寻觅,发现了一个网站:https://tideways.com/,维护并持续更新xhprof,使之能支持php7,又一翻折腾,发现也支持在swoole下跑
安装 tideways_xhprof
github: https://github.com/shenzhe/php-xhprof-extension
clone代码到本地
执行:
phpize
./configure
make
make install
标准的安装过程,产生tideways_xhprof.so,加入到php.ini中
判断有没有安装成功:
php -m |grep xhprof
输出
tideways_xhprof, 表示安装成功
使用 tideways_xhprof
也比较简单
在onRequest回调最开始一行输入:
tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_MEMORY
| TIDEWAYS_XHPROF_FLAGS_CPU);
表示开启分析,
中间执行你的业务逻辑
在最后一行输入
file_put_contents(
'/tmp/xhprof/' . uniqid() . '.msg-api.xhprof',
serialize(tideways_xhprof_disable())
);
把分析的结果存入到文件中,以待分析
其中:
'/tmp/xhprof/' . uniqid() . '.msg-api.xhprof'
是最终分析文件的地址,可自行修改
然后执行你的接口,最后会在 /tmp/xhprof 文件夹下看到如下的文件:

这些文件记录的就是这个接口整体的分析数据
找出最新的文件,用vim打开一看:

肉眼肯定是没法看,这就需要借助可视化的工具了:
可视化 tideways_xhprof
由于输出的文件格式和之前的xhprof完全一样,所以我这边直接借助了原本xhprof提供的工具
github:https://github.com/phacility/xhprof
最终上面的分析文件可视化后如下:
https://mmbiz.qpic.cn/mmbiz_png/LHDiahSVnXhs4fa6cxh7fpapG6H17PNhg6IlUhPtFdfd2Owb70WRtt31Ecg4gRTJODxXgt4xjeSRtOqerNcVvoA/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
下一篇,将详细介绍如何安装xhprof可视化工具,以及我们要看什么指标,怎么通过这些指标来指导来做优化,并最终提升的程序的性能
查看原文,可获取我修改版的tideways_xhprof,增加了两个方法,以支持RINIT和RSHUTDOWN中做的一些事情:
tideways_xhprof_swoole_init();
tideways_xhprof_swoole_end();
这样可以更好的支持swoole, readme里有介绍使用方法
原文:https://mp.weixin.qq.com/s/uekLWuXz5i2OBDsnYhwShw
源起
最近基于swoole的一个mvc开发框架做了一个项目,完成之后对其中一个接口例行做了一次压测,本机上得到qps是3600,由于接口功能比较简单,所以又花了点时间用beego和spring boot实现了相同的功能,也压测了一下,最终对比如下:
swoole: 3600qps
beego: 2200 qps
spring: 600qps
(ps: 无意比较优劣,应该是用beego和spring boot的姿势不对)
swoole的结果符合预期,后来经过一翻折腾(加了一些逻辑,完善了一些底层框架代码),再一压这个接口,qps下降到了2300
真是一顿操作猛如虎,性能下降35%啊
优化
做为一个有追求的phper,这是不能忍的,必需找到原因并解决之,但光喊口号是不行的,必需有方法,一般我们会通过几种方式分析:
日志法:通过各种日志,查看耗时,找出相应的问题,但这种方法有几个缺点:
粒度太粗,不好控制
侵入性太强,需要人工打点
性能指标不够,只能分析出大致的耗时,但不能分区i/o, cpu时间乖
xdebug:是我认为目前最牛逼的性能分析工具,可以无侵入式的详细的记录完整的调用链,唯一的遗憾是与swoole不兼容
xhprof: facebook出口的一款性能分析工具,简单易用,问题是:后期不维护了,对现在的php版本以及swoole支持度都不好
第三方的apm工具: 不可控,也不如前面2位,对swoole支持也不好
除了打日志,好像在swoole下陷入的僵局了,一翻寻觅,发现了一个网站:https://tideways.com/,维护并持续更新xhprof,使之能支持php7,又一翻折腾,发现也支持在swoole下跑
安装 tideways_xhprof
github: https://github.com/shenzhe/php-xhprof-extension
clone代码到本地
执行:
phpize
./configure
make
make install
标准的安装过程,产生tideways_xhprof.so,加入到php.ini中
判断有没有安装成功:
php -m |grep xhprof
输出
tideways_xhprof, 表示安装成功
使用 tideways_xhprof
也比较简单
在onRequest回调最开始一行输入:
tideways_xhprof_enable(TIDEWAYS_XHPROF_FLAGS_MEMORY
| TIDEWAYS_XHPROF_FLAGS_CPU);
表示开启分析,
中间执行你的业务逻辑
在最后一行输入
file_put_contents(
'/tmp/xhprof/' . uniqid() . '.msg-api.xhprof',
serialize(tideways_xhprof_disable())
);
把分析的结果存入到文件中,以待分析
其中:
'/tmp/xhprof/' . uniqid() . '.msg-api.xhprof'
是最终分析文件的地址,可自行修改
然后执行你的接口,最后会在 /tmp/xhprof 文件夹下看到如下的文件:
这些文件记录的就是这个接口整体的分析数据
找出最新的文件,用vim打开一看:
肉眼肯定是没法看,这就需要借助可视化的工具了:
可视化 tideways_xhprof
由于输出的文件格式和之前的xhprof完全一样,所以我这边直接借助了原本xhprof提供的工具
github:https://github.com/phacility/xhprof
最终上面的分析文件可视化后如下:
https://mmbiz.qpic.cn/mmbiz_png/LHDiahSVnXhs4fa6cxh7fpapG6H17PNhg6IlUhPtFdfd2Owb70WRtt31Ecg4gRTJODxXgt4xjeSRtOqerNcVvoA/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1
下一篇,将详细介绍如何安装xhprof可视化工具,以及我们要看什么指标,怎么通过这些指标来指导来做优化,并最终提升的程序的性能
查看原文,可获取我修改版的tideways_xhprof,增加了两个方法,以支持RINIT和RSHUTDOWN中做的一些事情:
tideways_xhprof_swoole_init();
tideways_xhprof_swoole_end();
这样可以更好的支持swoole, readme里有介绍使用方法
原文:https://mp.weixin.qq.com/s/uekLWuXz5i2OBDsnYhwShw
[实践OK]PHP Curl Problem with the SSL CA cert (path? access rights?) 解决PHP Problem with the SSL CA cert (path? access rights?)
Php/Js/Shell/Go jackxiang 2019-4-8 17:43
背景:前些天安全说是OpenSSL在CentOS6.X里面有漏洞,于是乎,就更新了OpenSSL,没有想到会在PHP-FPM里调用譬如 七牛的SSL出现问题PHP Problem with the SSL CA cert (path? access rights?),说白了就是得重启一下php-fpm一下,其它的也还好,如果是Nginx出现这样的问题,处理办法一样。
关于这方面的知识有:
1)厉害了,一篇漫画终于让我看懂了HTTPS协议的学习笔记。图解ssl 图文https。: https://jackxiang.com/post/10110/
2)rpm -q --changelog openssl | grep CVE-2014-0160
- fix CVE-2014-0160 - information disclosure in TLS heartbeat extension 参考:
https://jackxiang.com/post/9882/
以下摘录自网络:
开发遇到问题,直接使用系统的curl命令正常,使用php的curl模块报错
错误:PHP Problem with the SSL CA cert (path? access rights?)
解决方法:
1.安装
yum reinstall openssl ca-certificates -y
2.重启php
来自:https://cloud.tencent.com/developer/article/1097683
===========================根本原因是没有没有重新启动PHP-FPM========================
问题背景:
早上起床收到短信提醒,WEB服务器集群发现漏洞,于是更新服务, 其中一条是: yum update openssl
问题现象:
1. 命令行直接使用系统的curl命令一切正常
2. LAMP环境中调用curl则报错: Curl Problem with the SSL CA cert (path? access rights?)
问题原因:
更新openssl后, 证书也跟着更新了, 但是apache容器【旧进程】无法正确读取到新的证书以及权限
解决方案:
1. yum reinstall openssl ca-certificates -y && service httpd restart
From:http://www.blogdaren.com/post-2357.html
关于这方面的知识有:
1)厉害了,一篇漫画终于让我看懂了HTTPS协议的学习笔记。图解ssl 图文https。: https://jackxiang.com/post/10110/
2)rpm -q --changelog openssl | grep CVE-2014-0160
- fix CVE-2014-0160 - information disclosure in TLS heartbeat extension 参考:
https://jackxiang.com/post/9882/
以下摘录自网络:
开发遇到问题,直接使用系统的curl命令正常,使用php的curl模块报错
错误:PHP Problem with the SSL CA cert (path? access rights?)
解决方法:
1.安装
yum reinstall openssl ca-certificates -y
2.重启php
来自:https://cloud.tencent.com/developer/article/1097683
===========================根本原因是没有没有重新启动PHP-FPM========================
问题背景:
早上起床收到短信提醒,WEB服务器集群发现漏洞,于是更新服务, 其中一条是: yum update openssl
问题现象:
1. 命令行直接使用系统的curl命令一切正常
2. LAMP环境中调用curl则报错: Curl Problem with the SSL CA cert (path? access rights?)
问题原因:
更新openssl后, 证书也跟着更新了, 但是apache容器【旧进程】无法正确读取到新的证书以及权限
解决方案:
1. yum reinstall openssl ca-certificates -y && service httpd restart
From:http://www.blogdaren.com/post-2357.html
[实践Ok]Linux内建命令和外部命令的判断以及帮助命令——pwd,以及这俩的性能对比。
Unix/LinuxC技术 jackxiang 2019-4-4 17:24
help [-s] [pattern]
显示关于内建命令的有用的信息。如果指定了 pattern (模式), help 给出关于所有匹配 pattern 的命令的详细帮助;否则所有内建命令的帮助和 shell
控制结构将被打印出来。 选项 -s 限制信息显示为简短的用法概要。 返回 0,除非没有匹配 pattern 的命令。
在shell中,通过awk,sed,expr 等都可以实现,字符串上述操作。下面我们进行性能比较。
[chengmo@localhost ~]$ test='c:/windows/boot.ini'
[chengmo@localhost ~]$ time for i in $(seq 10000);do a=${#test};done;
real 0m0.173s
user 0m0.139s
sys 0m0.004s
[chengmo@localhost ~]$ time for i in $(seq 10000);do a=$(expr length $test);done;
real 0m9.734s
user 0m1.628s
速度相差上百倍,调用外部命令处理,与内置操作符性能相差非常大。在shell编程中,尽量用内置操作符或者函数完成。使用awk,sed类似会出现这样结果。
time for i in $(seq 10000);do a=${#test};done;
real 0m0.751s
user 0m0.747s
sys 0m0.004s
time for i in $(seq 10000);do a=$(expr length $test);done;
real 0m13.291s
user 0m4.898s
sys 0m9.004s
$type echo
echo is a shell builtin
$type expr
expr is /usr/bin/expr
来自:http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html
显示关于内建命令的有用的信息。如果指定了 pattern (模式), help 给出关于所有匹配 pattern 的命令的详细帮助;否则所有内建命令的帮助和 shell
控制结构将被打印出来。 选项 -s 限制信息显示为简短的用法概要。 返回 0,除非没有匹配 pattern 的命令。
在shell中,通过awk,sed,expr 等都可以实现,字符串上述操作。下面我们进行性能比较。
[chengmo@localhost ~]$ test='c:/windows/boot.ini'
[chengmo@localhost ~]$ time for i in $(seq 10000);do a=${#test};done;
real 0m0.173s
user 0m0.139s
sys 0m0.004s
[chengmo@localhost ~]$ time for i in $(seq 10000);do a=$(expr length $test);done;
real 0m9.734s
user 0m1.628s
速度相差上百倍,调用外部命令处理,与内置操作符性能相差非常大。在shell编程中,尽量用内置操作符或者函数完成。使用awk,sed类似会出现这样结果。
time for i in $(seq 10000);do a=${#test};done;
real 0m0.751s
user 0m0.747s
sys 0m0.004s
time for i in $(seq 10000);do a=$(expr length $test);done;
real 0m13.291s
user 0m4.898s
sys 0m9.004s
$type echo
echo is a shell builtin
$type expr
expr is /usr/bin/expr
来自:http://www.cnblogs.com/chengmo/archive/2010/10/02/1841355.html
[实践学习]Linux Shell 中各种括号的作用()、(())、[]、[[]]、{}
Unix/LinuxC技术 jackxiang 2019-4-4 15:37
#echo {{6379..6387},6389,6399}
6379 6380 6381 6382 6383 6384 6385 6386 6387 6389 6399
#for i in {{6379..6387},6389,6399}; do echo $i;
> done
6379
6380
6381
6382
6383
6384
6385
6386
6387
6389
6399
echo $(cd "$(dirname /tmp/error.txt)";pwd)
/tmp
array=(a b c d)
echo $array
a b c d
echo ${#array[@]}
4
a=5
((a++))
echo $a
6
b=3
((a=$a+$b))
echo $a #6+3=9
$for((i=0;i<5;i++))
> do
> echo $i;
> done
0
1
2
3
4
$echo $(seq -w 001 2 10)
001 003 005 007 009
换行:
echo "$(seq -w 001 2 10)"
001
003
005
007
009
$echo -e -n "$(seq -w 001 2 10)"
001
003
005
007
009
${var:num1:num2},num1是位置,num2是长度。表示从$var字符串的第$num1个位置开始提取长度为$num2的子串。不能为负数。
echo ${tag:2:2}
a5
tag=baa506fbd77d78ad3cfb912a50a4eac99c0d19c1
tag=${tag:0:8}
echo $tag
baa506fb
取字符串长度:
echo ${#tag}
8
# ls {ex1,ex2}.sh
ex1.sh ex2.sh
# ls {ex{1..3},ex4}.sh #{1...100} 中间仨个点 # echo {{1..3},9,20}
ex1.sh ex2.sh ex3.sh ex4.sh
# ls {ex[1-3],ex4}.sh #注意:是逗号
ex1.sh ex2.sh ex3.sh ex4.sh
echo $0
-bash
echo <FILE> $0=FILE
(1)${a} 变量a的值, 在不引起歧义的情况下可以省略大括号。
(2)$(cmd) 命令替换,和`cmd`效果相同,结果为shell命令cmd的输,过某些Shell版本不支持$()形式的命令替换, 如tcsh。
(3)$((expression)) 和`exprexpression`效果相同, 计算数学表达式exp的数值, 其中exp只要符合C语言的运算规则即可, 甚至三目运算符和逻辑表达式都可以计算。
阅读全文
6379 6380 6381 6382 6383 6384 6385 6386 6387 6389 6399
#for i in {{6379..6387},6389,6399}; do echo $i;
> done
6379
6380
6381
6382
6383
6384
6385
6386
6387
6389
6399
echo $(cd "$(dirname /tmp/error.txt)";pwd)
/tmp
array=(a b c d)
echo $array
a b c d
echo ${#array[@]}
4
a=5
((a++))
echo $a
6
b=3
((a=$a+$b))
echo $a #6+3=9
$for((i=0;i<5;i++))
> do
> echo $i;
> done
0
1
2
3
4
$echo $(seq -w 001 2 10)
001 003 005 007 009
换行:
echo "$(seq -w 001 2 10)"
001
003
005
007
009
$echo -e -n "$(seq -w 001 2 10)"
001
003
005
007
009
${var:num1:num2},num1是位置,num2是长度。表示从$var字符串的第$num1个位置开始提取长度为$num2的子串。不能为负数。
echo ${tag:2:2}
a5
tag=baa506fbd77d78ad3cfb912a50a4eac99c0d19c1
tag=${tag:0:8}
echo $tag
baa506fb
取字符串长度:
echo ${#tag}
8
# ls {ex1,ex2}.sh
ex1.sh ex2.sh
# ls {ex{1..3},ex4}.sh #{1...100} 中间仨个点 # echo {{1..3},9,20}
ex1.sh ex2.sh ex3.sh ex4.sh
# ls {ex[1-3],ex4}.sh #注意:是逗号
ex1.sh ex2.sh ex3.sh ex4.sh
echo $0
-bash
echo <FILE> $0=FILE
(1)${a} 变量a的值, 在不引起歧义的情况下可以省略大括号。
(2)$(cmd) 命令替换,和`cmd`效果相同,结果为shell命令cmd的输,过某些Shell版本不支持$()形式的命令替换, 如tcsh。
(3)$((expression)) 和`exprexpression`效果相同, 计算数学表达式exp的数值, 其中exp只要符合C语言的运算规则即可, 甚至三目运算符和逻辑表达式都可以计算。

[实践OK]Mac gitk安装与优化
Unix/LinuxC技术 jackxiang 2019-4-1 16:12
gitk --all
--all
Show all branches.
gitk --max-count=100 --all -- Makefile #查看Makefile 100条内容
Show at most 100 changes made to the file Makefile. Instead of only looking for changes in the current branch look in all branches.
实践:gitk --max-count=100 --all -- dns\ 运维手册.md
实践:
gitk --since="2 weeks ago" -- dns\ 运维手册.md #显示dns\ 运维手册.md两周内的改动
gitk v2.6.12.. include/scsi drivers/scsi #显示在自从版本v2.6.12后这两个子目录的改动
Show the changes since version v2.6.12 that changed any file in the include/scsi or drivers/scsi subdirectories
实践:
gitk 3667109.. . #查看版本号3667109当前目录的改动
来自:https://git-scm.com/docs/gitk/1.6.1
一、mac系统安装gitk
gitk是git的一个bin工具,如果git不包含gitk只能说明当前使用的git版本过老。
因此我们只需要安装最新的git就可以了。安装git方法如下:
首先安装brew,方便安装git
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
然后更新软件源并安装git
brew update
brew install git
查看git版本
git --version # 我安装之后git version 2.18.0
安装完成后执行type命令检查git路径
type -a git
如果结果路径包含/usr/local/bin/git则安装成功,此时只需在项目目录下输入gitk命令就可以启动gitk了。
但是默认情况下gitk显示很模糊,网上查了之后发现是由于mac自带的Wish软件版本很老,没有对retina屏幕做适配导致的,因此需要做优化。
二、系统优化,开启Wish高分辨率适配
git在Mac下其实早就适配了高分辨率了,其patch链接如下:
https://gist.githubusercontent.com/cynthia/5f2355a87c2f15d96dbe/raw/6727e73a007b0efabf55dd065e588467ffccc016/wish_app_info_plist.patch
开启高分辨率适配步骤如下:
1、重启系统,在黑屏界面的时候按住command + r直至出现进度条,进入系统recovery模式
2、在recovery模式中选择简体中文进入桌面,在最顶层的工具栏中找到“实用工具” -> “终端”,启动命令行终端
3、执行以下命令关闭系统保护,详细了解OS X的rootless
csrutil disable
4、重启正常进入系统,修改系统配置文件(如果没有上面的csrutil disable,是无法修改/System目录内的任何内容的)
sudo vim /System/Library/Frameworks/Tk.framework/Versions/Current/Resources/Wish.app/Contents/Info.plist
这个/System/Library/Frameworks/Tk.framework/Versions/Current/Resources/Wish.app/Contents/Info.plist在recovery模式下是找不到的
然后在这个文件内容中增加以下两行配置:
<key>NSHighResolutionCapable</key>
<true/>
增加位置如下图
然后更新Wish.app配置
sudo touch /System/Library/Frameworks/Tk.framework/Versions/Current/Resources/Wish.app
5、再次重启,黑屏时按下command+r直到出现进度条,重新进入recovery模式
6、进入recovery模式桌面后,执行“实用工具”->“终端”启动命令行终端
7、执行命令开启系统文件保护
csrutil enable
8、重启系统,正常进入系统,gitk就OK了。
来自:https://www.cnblogs.com/snowater/p/9286122.html
--all
Show all branches.
gitk --max-count=100 --all -- Makefile #查看Makefile 100条内容
Show at most 100 changes made to the file Makefile. Instead of only looking for changes in the current branch look in all branches.
实践:gitk --max-count=100 --all -- dns\ 运维手册.md
实践:
gitk --since="2 weeks ago" -- dns\ 运维手册.md #显示dns\ 运维手册.md两周内的改动
gitk v2.6.12.. include/scsi drivers/scsi #显示在自从版本v2.6.12后这两个子目录的改动
Show the changes since version v2.6.12 that changed any file in the include/scsi or drivers/scsi subdirectories
实践:
gitk 3667109.. . #查看版本号3667109当前目录的改动
来自:https://git-scm.com/docs/gitk/1.6.1
一、mac系统安装gitk
gitk是git的一个bin工具,如果git不包含gitk只能说明当前使用的git版本过老。
因此我们只需要安装最新的git就可以了。安装git方法如下:
首先安装brew,方便安装git
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
然后更新软件源并安装git
brew update
brew install git
查看git版本
git --version # 我安装之后git version 2.18.0
安装完成后执行type命令检查git路径
type -a git
如果结果路径包含/usr/local/bin/git则安装成功,此时只需在项目目录下输入gitk命令就可以启动gitk了。
但是默认情况下gitk显示很模糊,网上查了之后发现是由于mac自带的Wish软件版本很老,没有对retina屏幕做适配导致的,因此需要做优化。
二、系统优化,开启Wish高分辨率适配
git在Mac下其实早就适配了高分辨率了,其patch链接如下:
https://gist.githubusercontent.com/cynthia/5f2355a87c2f15d96dbe/raw/6727e73a007b0efabf55dd065e588467ffccc016/wish_app_info_plist.patch
开启高分辨率适配步骤如下:
1、重启系统,在黑屏界面的时候按住command + r直至出现进度条,进入系统recovery模式
2、在recovery模式中选择简体中文进入桌面,在最顶层的工具栏中找到“实用工具” -> “终端”,启动命令行终端
3、执行以下命令关闭系统保护,详细了解OS X的rootless
csrutil disable
4、重启正常进入系统,修改系统配置文件(如果没有上面的csrutil disable,是无法修改/System目录内的任何内容的)
sudo vim /System/Library/Frameworks/Tk.framework/Versions/Current/Resources/Wish.app/Contents/Info.plist
这个/System/Library/Frameworks/Tk.framework/Versions/Current/Resources/Wish.app/Contents/Info.plist在recovery模式下是找不到的
然后在这个文件内容中增加以下两行配置:
<key>NSHighResolutionCapable</key>
<true/>
增加位置如下图
然后更新Wish.app配置
sudo touch /System/Library/Frameworks/Tk.framework/Versions/Current/Resources/Wish.app
5、再次重启,黑屏时按下command+r直到出现进度条,重新进入recovery模式
6、进入recovery模式桌面后,执行“实用工具”->“终端”启动命令行终端
7、执行命令开启系统文件保护
csrutil enable
8、重启系统,正常进入系统,gitk就OK了。
来自:https://www.cnblogs.com/snowater/p/9286122.html
[可以改改]教教大家修改alt+c,alt+v快捷键
Unix/LinuxC技术 jackxiang 2019-4-1 09:53
一直使用alt+c,alt+v来复制粘贴,挺不方便的,就试了试修改快捷键,果然可以。下来分享给大家,很简单,会的同学就飘过吧~~,有其他方法的顺便也回复下吧
第一步,系统偏好设置,选择键盘
第一步
第二步,选择》添加应用程序快捷键
第三步,点击小加号
第二步,第三步
第四步,在菜单标题里输入快捷键名称
第五步,在键盘快捷键里,直接按“CTRL+C”。
同理,可以将复制,粘贴,剪切,全选都添加进去(不过撤销貌似不行,知道的回复下吧:)
第四步,第五步
第六步,enjoy
结论:
其实可以用修饰键来搞定
不过我现在都习惯了。
来自:http://bbs.pcbeta.com/viewthread-1040611-1-1.html
第一步,系统偏好设置,选择键盘
第一步
第二步,选择》添加应用程序快捷键
第三步,点击小加号
第二步,第三步
第四步,在菜单标题里输入快捷键名称
第五步,在键盘快捷键里,直接按“CTRL+C”。
同理,可以将复制,粘贴,剪切,全选都添加进去(不过撤销貌似不行,知道的回复下吧:)
第四步,第五步
第六步,enjoy
结论:
其实可以用修饰键来搞定
不过我现在都习惯了。
来自:http://bbs.pcbeta.com/viewthread-1040611-1-1.html
SwooleOne框架混合协议研究。
Swoole专题研究 jackxiang 2019-3-30 15:30
这个one能实现那个硬件tcp和手机的websocket的混合通讯嘛,说白了就是那个手机关灯,手机上websocket发给硬件,硬件收到指令后完成一个关灯动作后再返回,告诉用户已经关灯的例子。
可以
混合协议通讯
手册:
https://github.com/lizhichao/one-demo/blob/master/README.md#%E5%90%84%E7%A7%8D%E6%B7%B7%E5%90%88%E5%8D%8F%E8%AE%AE%E4%B9%8B%E9%97%B4%E7%9B%B8%E4%BA%92%E9%80%9A%E8%AE%AF%E5%88%97%E5%AD%90
代码:
https://github.com/lizhichao/one-demo/tree/master/App/Test/MixPro
混合协议配置文件:
https://github.com/lizhichao/one-demo/blob/master/App/Config/test_all.php
$this->global_data->bindId($request->fd, $name); #这个bindld是在哪儿?
https://github.com/lizhichao/one-demo/blob/master/App/GlobalData/Data.php
可以
混合协议通讯
手册:
https://github.com/lizhichao/one-demo/blob/master/README.md#%E5%90%84%E7%A7%8D%E6%B7%B7%E5%90%88%E5%8D%8F%E8%AE%AE%E4%B9%8B%E9%97%B4%E7%9B%B8%E4%BA%92%E9%80%9A%E8%AE%AF%E5%88%97%E5%AD%90
代码:
https://github.com/lizhichao/one-demo/tree/master/App/Test/MixPro
混合协议配置文件:
https://github.com/lizhichao/one-demo/blob/master/App/Config/test_all.php
$this->global_data->bindId($request->fd, $name); #这个bindld是在哪儿?
https://github.com/lizhichao/one-demo/blob/master/App/GlobalData/Data.php
[有空实践]tideways+xhgui搭建php 7的性能测试环境
Php/Js/Shell/Go jackxiang 2019-3-25 13:57
xhprof不维护了,用的是另一个,格式和xhprof一样,还兼容swoole 协程。
---------------------------------------------------------------
阅读全文
---------------------------------------------------------------

ipv6导致域名解析慢!关闭ipv6
Unix/LinuxC技术 jackxiang 2019-3-13 14:04
centos下判断是否开启ipv6及关闭ipv6的方式
已有 392 次阅读 2012-01-31 17:14 标签: ipv6
linux默认是开启ipv6的,但是很多网络服务还不支持ipv6,开启了ipv6反而会影响服务器的网络性能。可以考虑关闭ipv6功能
在Linux下首先确认IPv6是否已经被启用,可以从三个方面确定。
1.使用ifconfig查看自己的IP地址是否含有IPv6地址。
eth0 Link encap:Ethernet HWaddr 00:0A:E4:FE:6F:E1
inet addr:172.28.245.104 Bcast:172.28.245.127 Mask:255.255.255.128
inet6 addr: fe80::20a:e4ff:fefe:6fe1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:96998 errors:0 dropped:0 overruns:0 frame:0
TX packets:69963 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:113588678 (108.3 MiB) TX bytes:8894978 (8.4 MiB)
Interrupt:20
2.查看服务监听的IP中是否有IPv6格式的地址。(netstat -tuln)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
udp 0 0 172.28.245.104:61440 0.0.0.0:*
udp 0 0 0.0.0.0:32823 0.0.0.0:*
udp 0 0 0.0.0.0:32824 0.0.0.0:*
udp 0 0 0.0.0.0:68 0.0.0.0:*
3.使用lsmod|grep ipv6查看ipv6的模块是否被加载。
ipv6 245989 12
关闭IPV6的方式:
当确定IPv6已经开启后就可以按照下面的方法将其关闭
1.使用vi编辑器,打开/etc/modprobe.conf
2.在文档中加入如下的两条:
alias net-pf-10 off
alias ipv6 off
保存退出,并且重新启动系统。
重启之后可以使用上面的三种方法去验证IPv6支持是否已经被关闭。
IPv6是默认支持的,所以当你要重新开起IPv6支持时,将/etc/modprobe.conf中的两条指令注释掉就可以了。
======================================================================
http://www.111cn.net/sys/CentOS/50864.htm
http://www.linuxso.com/linuxrumen/17201.html
http://blog.csdn.net/suplxj/article/details/7773423
方法一:
CentOS 6 默认安装后,IPv6是自动开启的,但是现在IPv6还没有普及基本用不到这个功能,建议关闭IPv6模块。下面介绍一下关闭方法。
说明:蓝色=命令名称
浅绿=命令参数
浅蓝=选项
紫色=目录
系统环境:CentOS 6.2 i686
1、查看系统是否开启ipv6
a)通过网卡属性查看
命令:ifconfig
注释:有 “inet6 addr:。。。。。。。“ 的表示开启了ipv6功能
b)通过内核模块加载信息查看
命令:lsmod | grep ipv6
2、ipv6关闭方法
在/etc/modprobe.d/dist.conf结尾添加
alias net-pf-10 off
alias ipv6 off
可用vi等编辑器,也可以通过命令:
cat <<EOF>>/etc/modprobe.d/dist.conf
alias net-pf-10 off
alias ipv6 off
EOF
写改完毕重启电脑。
来自:http://www.cnblogs.com/taosim/articles/3152516.html
已有 392 次阅读 2012-01-31 17:14 标签: ipv6
linux默认是开启ipv6的,但是很多网络服务还不支持ipv6,开启了ipv6反而会影响服务器的网络性能。可以考虑关闭ipv6功能
在Linux下首先确认IPv6是否已经被启用,可以从三个方面确定。
1.使用ifconfig查看自己的IP地址是否含有IPv6地址。
eth0 Link encap:Ethernet HWaddr 00:0A:E4:FE:6F:E1
inet addr:172.28.245.104 Bcast:172.28.245.127 Mask:255.255.255.128
inet6 addr: fe80::20a:e4ff:fefe:6fe1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:96998 errors:0 dropped:0 overruns:0 frame:0
TX packets:69963 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:113588678 (108.3 MiB) TX bytes:8894978 (8.4 MiB)
Interrupt:20
2.查看服务监听的IP中是否有IPv6格式的地址。(netstat -tuln)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
udp 0 0 172.28.245.104:61440 0.0.0.0:*
udp 0 0 0.0.0.0:32823 0.0.0.0:*
udp 0 0 0.0.0.0:32824 0.0.0.0:*
udp 0 0 0.0.0.0:68 0.0.0.0:*
3.使用lsmod|grep ipv6查看ipv6的模块是否被加载。
ipv6 245989 12
关闭IPV6的方式:
当确定IPv6已经开启后就可以按照下面的方法将其关闭
1.使用vi编辑器,打开/etc/modprobe.conf
2.在文档中加入如下的两条:
alias net-pf-10 off
alias ipv6 off
保存退出,并且重新启动系统。
重启之后可以使用上面的三种方法去验证IPv6支持是否已经被关闭。
IPv6是默认支持的,所以当你要重新开起IPv6支持时,将/etc/modprobe.conf中的两条指令注释掉就可以了。
======================================================================
http://www.111cn.net/sys/CentOS/50864.htm
http://www.linuxso.com/linuxrumen/17201.html
http://blog.csdn.net/suplxj/article/details/7773423
方法一:
CentOS 6 默认安装后,IPv6是自动开启的,但是现在IPv6还没有普及基本用不到这个功能,建议关闭IPv6模块。下面介绍一下关闭方法。
说明:蓝色=命令名称
浅绿=命令参数
浅蓝=选项
紫色=目录
系统环境:CentOS 6.2 i686
1、查看系统是否开启ipv6
a)通过网卡属性查看
命令:ifconfig
注释:有 “inet6 addr:。。。。。。。“ 的表示开启了ipv6功能
b)通过内核模块加载信息查看
命令:lsmod | grep ipv6
2、ipv6关闭方法
在/etc/modprobe.d/dist.conf结尾添加
alias net-pf-10 off
alias ipv6 off
可用vi等编辑器,也可以通过命令:
cat <<EOF>>/etc/modprobe.d/dist.conf
alias net-pf-10 off
alias ipv6 off
EOF
写改完毕重启电脑。
来自:http://www.cnblogs.com/taosim/articles/3152516.html
[实践OK]Js一次正则匹配出多个IP到数组之Javascript/js从左侧的textarea里获取多行内容并提取出多个IP行放在右则textarea。
Php/Js/Shell/Go jackxiang 2019-3-6 12:01
Jquery: <script src="./scripts/jquery-1.4.2.js"></script>
Html textarea:
javasciprt,先批量替换掉下划线为点号,再正则匹配出所有包含IP行里的IP,如下:
输入素材:
elk_logstash_bj_yz_10_73_211_106
elk_logstash_bj_yz_10_73_211_118
elk_logstash_bj_yz_10_73_211_119
输出素材:
10.73.211.106
10.73.211.118
10.73.211.119
Jquery写法,加上IP去重:
Html触发部分:
<a href="javascript:void(0);" id=analysisIps name=analysisIps>[提取Ip地址]</a>
Html textarea:
javasciprt,先批量替换掉下划线为点号,再正则匹配出所有包含IP行里的IP,如下:
输入素材:
elk_logstash_bj_yz_10_73_211_106
elk_logstash_bj_yz_10_73_211_118
elk_logstash_bj_yz_10_73_211_119
输出素材:
10.73.211.106
10.73.211.118
10.73.211.119
Jquery写法,加上IP去重:
Html触发部分:
<a href="javascript:void(0);" id=analysisIps name=analysisIps>[提取Ip地址]</a>
[实践OK]mac下安装redis 和 redis可视化工具rdm并且连接redis
Unix/LinuxC技术 jackxiang 2019-2-28 17:57
jackXiang@jackXsMacBook-Pro ~/ops master ● brew cask install rdm
Updating Homebrew...
Error: Cask 'rdm' is unavailable: No Cask with this name exists. Did you mean one of these?
avibrazil-rdm keyboard-maestro safeincloud-password-manager wordmark
avibrazil-rdm keyboard-maestro safeincloud-password-manager wordmark
keeper-password-manager orelord-mongodb watchguard-mobile-vpn-with-ssl
keeper-password-manager orelord-mongodb watchguard-mobile-vpn-with-ssl
可以在这里下载dmg:
链接:https://pan.baidu.com/s/1IPAgiaEByU0zA8fIov930w 密码:4pwi
安装之后的节目,输入连接名,地址,以及端口号就行了,点击下面的test connection测试连接
来自:https://blog.csdn.net/qq_41140741/article/details/86593955
Updating Homebrew...
Error: Cask 'rdm' is unavailable: No Cask with this name exists. Did you mean one of these?
avibrazil-rdm keyboard-maestro safeincloud-password-manager wordmark
avibrazil-rdm keyboard-maestro safeincloud-password-manager wordmark
keeper-password-manager orelord-mongodb watchguard-mobile-vpn-with-ssl
keeper-password-manager orelord-mongodb watchguard-mobile-vpn-with-ssl
可以在这里下载dmg:
链接:https://pan.baidu.com/s/1IPAgiaEByU0zA8fIov930w 密码:4pwi
安装之后的节目,输入连接名,地址,以及端口号就行了,点击下面的test connection测试连接
来自:https://blog.csdn.net/qq_41140741/article/details/86593955
[实践OK]static和extern理解
Unix/LinuxC技术 jackxiang 2019-2-28 10:05