resolv.conf是resolver类库使用的配置文件,每当一个程序需要通过域名来访问internet上面的其它主机时,需要利用该类库将域名转换成对应的IP,然后才可进行访问.

resolv.conf文件的配置选项不多,从man文档中看了半天,不理解domain和search使用来干嘛的。这里做个解释,防止以后忘了(环境:ubuntu12.04):

nameserver x.x.x.x该选项用来制定DNS服务器的,可以配置多个nameserver指定多个DNS。

domain mydomain.com这个用来指定本地的域名,在没有设置search的情况下,search默认为domain的值。这个值可以随便配,目前在我看来,domain除了当search的默认值外,没有其它用途。也就说一旦配置search,那domain就没用了。

search google.com baidu.com该选项可以用来指定多个域名,中间用空格或tab键隔开。它是干嘛的呢?

如:在没有配置该选项时,执行
#ping  new
sping: unknown host news

配置search google.com baidu.com后,再执行

#ping news
PING news.google.com (74.125.128.101) 56(84) bytes of data.
64 bytes from hg-in-f101.1e100.net (74.125.128.101): icmp_req=1 ttl=47 time=78.9 ms
64 bytes from hg-in-f101.1e100.net (74.125.128.101): icmp_req=2 ttl=47 time=63.6 ms

它就去ping news.google.com了。原来当访问的域名不能被DNS解析时,resolver会将该域名加上search指定的参数,重新请求DNS,直到被正确解析或试完search指定的列表为止。

由于news不能被DNS解析,所以去尝试news.google.com,被正常解析。如果没有被解析还会去尝试news.baidu.com。

来自:http://www.ttlsa.com/linux/resolv-conf-desc/



实践如下:


google 在前:
#ping news
PING news.google.com (172.217.24.14) 56(84) bytes of data.

baidu在前:
ping news          
PING news.n.shifen.com (202.108.23.82) 56(84) bytes of data.
64 bytes from 202.108.23.82 (202.108.23.82): icmp_seq=1 ttl=55 time=1.97 ms
64 bytes from 202.108.23.82 (202.108.23.82): icmp_seq=2 ttl=55 time=2.01 ms
64 bytes from 202.108.23.82 (202.108.23.82): icmp_seq=3 ttl=55 time=1.99 ms
怎样在MAC上读写NTFS格式的U盘?这个安装一个驱动后,容易导致磁盘变慢,于是放弃了。

diskutil info /Volumes/Untitled
[codes=php]
   Device Identifier:         disk2s1
   Device Node:               /dev/disk2s1
   Whole:                     No
   Part of Whole:             disk2

   Volume Name:
   Mounted:                   Yes
   Mount Point:               /Volumes/Untitled

   Partition Type:            Windows_NTFS
   File System Personality:   NTFS
   Type (Bundle):             ntfs
[/codes]



hdiutil eject /Volumes/Untitled
"disk2" ejected.

sudo mkdir /Volumes/MYHD

sudo mount_ntfs -o rw,nobrowse /dev/disk2s1 /Volumes/MYHD/


来自:https://blog.csdn.net/Beyond_TJU/article/details/88125617
下载
http://client.arraynetworks.com.cn:8080/zh/troubleshooting
点击上述链接,下载合适的版本。

安装
sudo ./MotionPro_Linux_Ubuntu_x86-64_1.2.1.sh


https://blog.csdn.net/yitengtongweishi/article/details/86378026

Application-Internet
在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
如下所示,文件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
一)AWK增加列分割符号:
| awk -v 'OFS=:' '{print $1,$1,$1}'


二)增加一列相同的值,如何用awk在每行最后添加字段:
awk '{print $0, 新字段}'  文件名
https://zhidao.baidu.com/question/2121603287620619987.html






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
今天自己已开始做在虚拟机上做实验,增加了一个磁盘sdb1,而且也增加了自动挂载的功能/etc/fstab里增加了记录。后来自己把这个磁盘给删除了,再次重新启动服务器的时候,系统启动不了了。

系统提示:

按提示 输入 root的密码,进入以Repair filesystem 为提示符的界面。

vi /etc/fstab后 提示,只读,也就是没权限修改。


解决方案如下:

于是输入 mount -o remount,rw /      

逗号前面无空格(切记),而且一定要有/这个
表示重新挂载为读写模式。

 

这个时候再 vi /etc/fstab 发现已经可以修改了,修改完毕,重启,正常。
---------------------
原文:https://blog.csdn.net/waterxcfg304/article/details/49766467
背景: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
背景:前些天安全说是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
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
#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语言的运算规则即可, 甚至三目运算符和逻辑表达式都可以计算。
阅读全文
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
一直使用alt+c,alt+v来复制粘贴,挺不方便的,就试了试修改快捷键,果然可以。下来分享给大家,很简单,会的同学就飘过吧~~,有其他方法的顺便也回复下吧
第一步,系统偏好设置,选择键盘
第一步
第二步,选择》添加应用程序快捷键


第三步,点击小加号
第二步,第三步
第四步,在菜单标题里输入快捷键名称

第五步,在键盘快捷键里,直接按“CTRL+C”。
同理,可以将复制,粘贴,剪切,全选都添加进去(不过撤销貌似不行,知道的回复下吧:)
第四步,第五步
第六步,enjoy

结论:
其实可以用修饰键来搞定
不过我现在都习惯了。

来自:http://bbs.pcbeta.com/viewthread-1040611-1-1.html
这个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
xhprof不维护了,用的是另一个,格式和xhprof一样,还兼容swoole 协程。
---------------------------------------------------------------阅读全文
shopt|grep hup





OneSwoole的测试,发现退出终端后依然运行的原因是huponexit off:
shopt|grep hup
huponexit       on




为On后还是会是这样一种结构,估计是swoole强制屏蔽了sighup的信号:



#shopt -s huponexit
#shopt|grep hup
huponexit       on
退了终端后:




一般情况下,想要通过终端长时间运行任务,需要使用nohup 或者 screen,如果不使用会怎么样呢?来测试一下

描述:
场景1:ssh登录机器,通过添加(&),启动任务到后台,通过exit命令退出,任务依然存在

场景2:ssh登录机器,通过添加(&),启动任务到后台,直接关闭ssh终端(GUI 直接叉掉窗口),任务终止

测试方法,执行以下命令:
ssh root@DEV_TEST
ping baidu.com 2>&1  1>/dev/null &
exit

执行exit后,进程变成孤儿,但依然存在:



原因:
bash有如下配置项,默认关闭(通过命令:shopt 查看):
huponexit off

当huponexit 为off时,exit时不会向终端所属任务发SIGHUP信号,激活该选项:
shopt -s huponexit

重复进行上述测试,exit时后台进程退出

ps:
可以使用disown, 、对任务屏蔽SIGHUP信号,这样,即使强制关闭终端(或者huponexit开启时exit),任务也不会停止

示例:
ssh root@DEV_TEST
ping baidu.com 2>&1  1>/dev/null &
disown -h %1

此时强制断开终端(kill 终端进程),进程依旧存在
需要注意,disown后面要加job的编号,如果只有一个job,可以不提供,否则用jobs查看编号

来自:https://www.cnblogs.com/ziziwu/p/4125750.html
分页: 4/334 第一页 上页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]