来源:https://www.zhihu.com/question/21433340
------------------------------------------------------------------
作者:武让
链接:https://www.zhihu.com/question/21433340/answer/18211079
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

step1: 在“选项卡”空白处右键,选择“自定义功能区

step2: 根据下图,列表处选择“自定义功能区”,位置选择“不在功能区中的命令”并找到“朗读”(排序按拼音首字母)。

step3:自定义功能区处需要新建组,这个组可以建在已有的选项卡内,也可以自己建一个选项卡再在下面建组,此处我在“审阅”选下卡下新建了“read”组,然后把“朗读”移动到该组下。

step4:“确定”退出,然后在加入“朗读”的组下面找到朗读功能即可
结论:最新版的chrome已经更简单了,通过对着标签页点右键,就有静音选项了~

点击链接chrome://flags/#enable-tab-audio-muting开启声音管理

重启浏览器

重启完成后,点击标签页上的小喇叭就可以禁止声音


这个问题也困扰了我很久,直到我彻底忍无可忍了,终于Google了一下答案:chrome://flags/#enable-tab-audio-muting 开启功能后,点击标签页上的小喇叭即可参考文献:开启 Chrome 自带的标签页静音功能[Chrome]另外,最新版的chrome已经更简单了,通过对着标签页点右键,就有静音选项了~

作者:知乎用户
链接:https://www.zhihu.com/question/20336805/answer/33871967
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
看了很多tcp文章都看不懂,这篇文章好像懂了,有空试试,说的是不是真的。

和三次握手相关的TCP报文中的重要标志位

昨天的文章中,结合Wireshark抓包和大家讨论了三次握手的相关知识点,评论中有些读者对序号,确认序号,以及SYN&ACK等标志位还有一些疑问,这里简单再说一下我的理解。

首先,由TCP协议报文的格式可知,在报文中我们主要关注与《32位序列号》,《32位确认序号》,和SYN和ACK标志位。因为这四个要素和三次握手紧密相关。
点击在新窗口中浏览此图片

#32位序列号(后面简写为seq):

就是我们常说的序号。对于要发送的数据的第一个序号而言这个序号是通过一个算法计算得到seq。这就是告诉接收方:我发送的数据是从seq开始的。

TCP会话的每一端都包含一个32位(bit)的序列号,该序列号被用来跟踪该端发送的数据量。每一个包中都包含序列号,在接收端则通过确认号用来通知发送端数据成功接收,当某个主机开启一个TCP会话时,他的初始序列号是随机的。

比如,源端发送(SYN=1 , seq=X)到服务端,代表的意思是,我这是个SYN包,我请求对你的连接(SYN包置1代表这是一个连接请求),seq代表这个包的序号。

这个对应三次握手的第一次握手。

点击在新窗口中浏览此图片

#32位确认序列号(后面简写为ack):

就是告诉接收方,我已经接受到了你的数据包。

比如服务端发送一个(SYN=1,ACK=1,seq=Y, ack=X+1)

SYN和ACK代表这是一个确认连接的TCP包,seq=Y为服务端为该报文生成的一个随机数,而ack(确认序号)则通知客户端我已经接受到了你的上一次报文(X),我希望下次接受你的报文的seq=X+1.

注意这里大写的ACK指代的是ACK标志位,而小写的ack则指示的是确认序号。

这步对应三次握手的第二次握手。

点击在新窗口中浏览此图片

#而当客户端接受到服务端的TCP报文之后,客户端需要发送(ACK=1,seq=X+1,ack=Y+1)报文给服务端进行确认。该报文表示的意思是:

这是一个确认报文,因为上次我产生的报文seq=X,这次的报文顺序加1,所以seq=X+1(其实服务端期待的seq在第二次握手的时候已经通过ack告知了客户端),ack=Y+1则代表客户端告诉服务端,我已经接受到了你的seq=Y的TCP报文,我希望下一次能收到你的seq=Y+1的TCP报文。

注意这里大写的ACK指代的是ACK标志位,而小写的ack则指示的是确认序号。

这步对应三次握手的第三次握手

点击在新窗口中浏览此图片

#其实总结起来

Seq也好,ack也好,都是数据包的序号,可以用这两个序号来跟踪两端发送的数据包。Seq是用来标志特定的数据包的,而ack则是接收方对发送方的一次确认,告知我已收到某某seq的报文了。而至于SYN和ACK标志位,小编的理解SYN置1就代表这是一个连接请求,而ACK置1表明这是一个确认的数据包。

每天学习一点点,每天进步一点点,希望大家持续关注本号,共同学习,共同提高,在IT的世界里包括各种协议,云计算,Linux等相关领域遨游沟通。明日的主题和大家一起讨论一下HTTP Rest协议的简单理解。

【【生先生谈IT】和TCP三次握手相关的TCP报文中的重要标志位】https://m.toutiao.com/group/6509068569572016648/?iid=22420291970&app=news_article&timestamp=1515586769&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_share
背景:之前搞一个Linux上的Samba服务,在Windows上连接Linux上的服务,后来因为Samba安全问题导致给不让玩了。我的电脑好像没有这个NFS服务,原来是专业版本的,只有win7旗舰版和企业版具有此功能。专业版和家庭版需要使用第三方软件实现。当然,专业版本如何升级旗舰版?
  https://zhidao.baidu.com/question/342780014.html ,342DG-6YJR8-X92GV-V7DCV-P4K27戴尔,From:http://www.windows7en.com/jiaocheng/26459.html

Win7系统挂载NFS共享目录的方法,NFS是Unix中广泛使用的文件共享协议,在Linux下得到了传承,使用简单,读写性能强大。过去Windows与Linux共享文件夹需要使用Samba(CIFS)协议,虽然定制性更高,但设置和使用都比较繁琐。现在win7系统加入了对NFS协议的支持,这让快速设置Linux和Windows之间的文件共享成为可能,一起看看具体方法。

但是,公司对Mount这个服务好像没有怎么查,是不是可以试下?
https://www.cnblogs.com/wxmdevelop/articles/4507570.html

==================================================================
1)按上面URl里面的那个修改注册表。

2)重新开了一次终端,那个x:\是没有这个盘符的,直接写上这个盘符,成功后就会在我的电脑里有这个盘符:

如果挂载不上,要么是网络或防火墙问题,要么是服务器防火墙问题,如果你没有在单位VPN挂,在外面随便找个Wifi上网拨VPN挂载后,打开目录都很慢的:
service iptables stop
Stopping iptables (via systemctl):                         [  OK  ]

3)Linux上配置,如何查看NFS的端口?
在设置了防火墙的环境中使用NFS,需要在防火墙上打开如下端口:
1. portmap 端口 111 udp/tcp;
2. nfsd 端口 2049 udp/tcp;
3. mountd 端口 "xxx" udp/tcp
及如何确定NFS的更多端口地址等查看:http://jackxiang.com/post/8299/

vi /etc/exports       (IP:10.4.12.52是指那个客户端的IP,不是启动NFS的服务器IP地址。)
/home/xiangdong 10.4.12.52(rw,no_root_squash)
service rpcbind restart
service nfs restart    
/usr/sbin/exportfs -r

4)Windows上可读可写的设置,远程挂载的磁盘写入解决方法:
  解决办法就是让Win7在挂载NFS的时候将UID和GID改成0即可:打开注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default,增加两项:AnonymousUid,AnonymousGid ,From:http://www.xitongcheng.com/jiaocheng/win7_article_16732.html

5)查看挂载NFS服务来源IP端口的日志位置,便于放行,10.4.12.52是VPN地址,这个地址和登录用户名绑定一直不会变的:
Linux下的NFS日志 RedHat Linux 发行版NFS服务的日志记录在/var/log/messages文件中:
Jan 18 20:40:58 jenkins_server_bj_sjs_10_71_182_1** rpc.mountd[23753]: authenticated mount request from 10.4.12.52:952 for /home/xiangdong (/home/xiangdong)



6)确认rpc 服务和 nfs服务是否真的启动,查看进程启动时间:
ps -ef|grep rpcbind
rpc      19922     1  0 20:29 ?        00:00:00 /sbin/rpcbind -w

#ps -ef|grep nfs
root      1750     2  0  2017 ?        00:00:00 [nfsiod]
root     16991     2  0  2017 ?        00:00:00 [nfsv4.0-svc]


最后,Windows7 旗舰版挂载时的中文显示不正常,可能是编码的问题。其它读写啥的均Ok~
背景:机器长时间运行往往磁盘空间满了,但是删除了还是占用很大空间和没删除几乎一样,怎么办?
运维监控系统发来通知,报告一台服务器空间满了,登陆服务器查看,根分区确实满了,这里先说一下服务器的一些删除策略,由于 linux 没有回收站功能,所以线上服务器上所有要删除的文件都会先移到系统 / tmp 目录下,然后定期清除 / tmp 目录下的数据。这个策略本身没有什么问题,但是通过检查发现这台服务器的系统分区中并没有单独划分 / tmp 分区,这样 / tmp 下的数据其实占用根分区的空间,既然找到了问题,那么删除 / tmp 目录下一些占用空间较大的数据文件即可。

# du -sh /tmp/* | sort -nr |head -3
通过命令发现在 / tmp 目录下有个 66G 大小的文件 access_log,这个文件应该是 apache 产生的访问日志文件,从日志大小来看,应该是很久没有清理的 apache 日志文件了,基本判定是这个文件导致的根空间爆满,在确认此文件可以删除后,执行如下删除命令,
# rm /tmp/access_Iog
# df -h

从输出来看,根分区空间仍然没有释放,这是怎么回事
一般来说不会出现删除文件后空间不释放的情况,但是也存在例外,比如文件进程锁定,或者有进程一直在向这个文件写数据,要理解这个问题,就需要知道 linux 下文件的存储机制和存储结构。

一个文件在文件系统中存放分为两个部分:数据部分和指针部分,指针位于文件系统的 meta-data 中,在将数据删除后,这个指针就从 meta-data 中清除了,而数据部分存储在磁盘中。在将数据对应的指针从 meta-data 中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以出现删除 access_log 文件后,空间还没有释放,就是因为 httpd 进程还在一直向这个文件写入内容,导致虽然删除了 access_Ilog 文件,但是由于进程锁定,文件对应的指针部分并未从 meta-data 中清除,而由于指针并未删除,系统内核就认为文件并未被删除,因此通过 df 命令查询空间并未释放。

问题排查:
既然有了解决思路,那么接下来看看是否有进程一直在向 access_log 文件中写入数据,这里需要用到 linux 下的 losf 命令,通过这个命令可以获取一个仍然被应用程序占用的已删除文件列表

# lsof | grep delete
从输出可以看出,/tmp/access_log 文件被进程 httpd 锁定,而 httpd 进程还一直向这个文件写入日志数据,最后一列的‘deleted’状态说明这个日志文件已经被删除,但是由于进程还在一直向此文件写入数据,因此空间并未释放。

解决问题:
到这里问题就基本排查清楚了,解决这一类问题的方法有很多,最简单的方法就是关闭或者重启 httpd 进程,当然重启操作系统也可以。不过这些并不是最好的办法,对待这种进程不停对文件写日志的操作,要释放文件占用的磁盘空间,最好的方法是在线清空这个文件,具体可以通过如下命令完成:
# echo “”>/tmp/access_log

通过这种方法,磁盘空间不但可以马上释放,也可以保障进城继续向文件写入日志,这种方法经常用于在线清理 apache /tomcat/nginx 等 web 服务产生的日志文件。



摘自:http://mp.weixin.qq.com/s/AJtnz_CE3pmhoaMHm6HNXA
错误解决办法:

1、ctrl + R ,输入  regedit

2、删除HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys下的@22:www.xxxx.club


原因:因为sublime 在windows的注册表中把192.168.14.105的值注册,不能重新注册。
错误解决办法:

1、ctrl + R ,输入  regedit

2、删除HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys下的 rsa2@22:192.168.14.105


From:https://www.cnblogs.com/ficohu/p/5593674.html
背景:Zabbix报警进程数太多。发现是Sendmail进程数太多。
执行top的时候发现当前用户下面有很多sendmail的进程,如下图所示,发件人是crondaemon,怀疑是和定时任务有关,查看当前用户的定时任务发现有一个每分钟运行一次的定时任务,但是定时脚本是没有调用sendmail了,ps -ef | grep sendmail | wc -l 统计发现sendmail的进程数据基本上就是从服务器出故障到当前时间的分钟数。


然道是crontab每次执行都会调用sendmail发邮件吗?man 5 crontab查看帮助手册的时候发现这个一段话:
In  addition  to  LOGNAME,  HOME,  and SHELL, cron(8) will look at MAILTO if it has any reason to send mail as a result of running commands in "this" crontab.  If MAILTO is defined (and non-empty), mail is sent to the user so named.  If MAILTO is defined but empty (MAILTO=""), no mail will be sent.  Otherwise mail is sent to the owner of the crontab.  This option is useful if you decide on /bin/mail instead of /usr/lib/sendmail as your mailer when you install  cron  -- /bin/mail doesnt do aliasing, and UUCP usually doesnt read its mail. If MAILFROM is defined (and non-empty), it will be used as the envelope sender address, otherwise, ‘‘root’’ will be used.


查看crontab的配置文件:
cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

可以看到MAILTO这一行不为空,如果不想让它发邮件的话可以按照手册上面说的把MAILTO这一行删掉或者改为MAILTO=""

From:http://blog.51cto.com/chenql/1878182
/data/codesdev/testdemo/c++/map/stl_map.cpp


make stl_map
g++     stl_map.cpp   -o stl_map

./stl_map
Bill, A senior heigh school student.
Join, A senior heigh school student.
Marry, A senior heigh school teacher.


/data/codesdev/testdemo/c++/map/stl_map_find.cpp

make stl_map_find
g++     stl_map_find.cpp   -o stl_map_find
./stl_map_find
elements in mymap:
a => 50
c => 150
d => 200
b => 0
e => 0


修改那个位置判断为:
[codes=php]
     it = mymap.find('d');
     if (it != mymap.end())    #if (iter == g_map_fd_TcpNLMsg.end())假如到最扣一个依然没有找到的意思。一般就直接返回。
         mymap.erase (it);
[/php]
这样的结果:
./stl_map_find        
elements in mymap:
a => 50
c => 150
d => 0
b => 100
e => 0


来自:http://blog.csdn.net/derkampf/article/details/71155055
常见的网络字节转换函数有:
htons():host to network short,将short类型数据从主机字节序转换为网络字节序。
ntohs():network to host short,将short类型数据从网络字节序转换为主机字节序。
htonl():host to network long,将long类型数据从主机字节序转换为网络字节序。
ntohl():network to host long,将long类型数据从网络字节序转换为主机字节序。

通常,以s为后缀的函数中,s代表2个字节short,因此用于端口号转换;以l为后缀的函数中,l代表4个字节的long,因此用于IP地址转换。
————————————————————————————————————————————————————————————————
cat hto.c


make hto
cc     hto.c   -o hto

#./hto
Host ordered port: 0x1234
Network ordered port: 0x3412
Host ordered address: 0x12345678
Network ordered address: 0x78563412


cat inetaddr.c



make inetaddr  
cc     inetaddr.c   -o inetaddr

./inetaddr
Network ordered integer addr: 0x101a8c0
Network ordered integer addr: 0xb01a8c0

From:http://c.biancheng.net/cpp/html/3047.html
https://weibo.com/2717930601/EkAZGDVAz?type=comment#_rnd1514043204039
http://blog.csdn.net/u013474436/article/details/53117463#0-tsina-1-14535-397232819ff9a47a7b7e80a40613cfe1
这个哥们描述了类似Mysql的长连接问题,在redis的长连接也有类似的问题,于是作了一个总结性的博文,值得在实践中注意。
结论:VIM有其和UI编辑器的局限,也有其灵活,Sublime有其存在价值,想学不一定能学好。多了快捷键还会冲突等得自己思考布局,是有 灵活性,而较为优秀的UI编辑器,早就精心设置好了,你只需要会开就成,所以,我只选择了vim-multiple-cursors,发现其它插件在vim-multiple-cursors的ctrl+n,好像出现了覆盖。不想深入,先用着,就这样吧:

步骤一二就行,简单常用批量替换插件即可。

通过Vim+少量插件配置一个高效简洁的IDE:  https://www.cnblogs.com/javaminer/p/3842689.html  
实践,先安装插件管理 再装vim-multiple-cursors这款插件:
一)vim插件管理器:Vundle的介绍及安装:
vim中的杀手级插件: http://zuyunfei.com/2013/04/12/killer-plugin-of-vim-vundle/  ##选中后, 可以进行增删替换a/c/x等,相关常用细节参考:http://foocoder.com/2014/04/09/mei-ri-vimcha-jian-vim-multiple-cursors/ ,移动光标到下一个单词的结尾,用命令”e“,里面的ctrl+e在SecureCRT里面并不能到行尾,用箭头键慢慢移动吧。
这个得装:
$git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
Initialized empty Git repository in /home/xiangdong/.vim/bundle/Vundle.vim/.git/
remote: Counting objects: 3132, done.
Receiving objects:  22% (690/3132), 124.01 KiB | 38 KiB/s  
vim +BundleInstall + vundle  

二)http://www.wklken.me/posts/2015/06/07/vim-plugin-multiplecursors.html
PluginInstall  vim-multiple-cursors
:Plugin 'terryma/vim-multiple-cursors'
这个:
:PlugInstall multiple-cursors

从Github进行安装:
Plugin 'terryma/vim-multiple-cursors'
vim +BundleInstall + vim-multiple-cursors
vim +BundleInstall + ctrlp-funky       #https://www.cnblogs.com/javaminer/p/3842689.html
vim +BundleInstall + taglist.vim
vim +BundleInstall + nerdtree
链接:http://zuyunfei.com/2013/04/12/killer-plugin-of-vim-vundle/


三)Bundle 'ctrlpvim/ctrlp.vim'  #这个不是??

Bundle 'kien/ctrlp.vim'
github:https://github.com/kien/ctrlp.vim这是一个超赞的插件,如果使用过sublime-text2,那么肯定很熟悉ctrlp。它可以快速的帮助我们找到项目中的文件。
https://www.jianshu.com/p/SRsmZW


================================================
一)推荐vim-multiple-cursors这款插件,是模仿sublime的多光标模式,查找规则就是vim默认的单词匹配(就是你按*时查找单词的规则),像这样:大部分时候还是可以用来做rename refactor的。不过正如楼上所说,做项目还是老实用IDE吧 :)
From:https://zhuanlan.zhihu.com/p/23262156 ,在命令行模式下用批量替换啊。:%s/item/item /gc 加c是让你一个个确认。
插件地址:https://github.com/terryma/vim-multiple-cursors

二)ctrlp.vim 这个插件是模仿Sublime Text 的ctrl + p功能,在工程中快速定位某个文件。
三) 'ZenCoding.vim'. " 模仿sublime text 的ctrl + shift + f 在工程中全局查找某字符. " 需先安装ack (这个有Shell下的Linux命令Grep,用了插件快捷键没有了)


Ctrl-P在其他编辑器里已经是默认的全局搜索键了,vim 也有ctrlp(https://github.com/ctrlpvim/ctrlp.vim)插件,它可以搜索文件路径上的文件名,还有最近文件等各种快捷打开。看起来似乎挺好的,直到fzf.vim(https://vimawesome.com/plugin/fzf-vim)的出现。fzf的搜索速度更快,而且异步,不会在初始化搜索的时候卡死界面响应。

安装好fzf,然后加载 fzf.vim 插件,将ctrl-p 键位映射成 :Files<CR>,就可以体验到高速搜索,中间根本不用等界面响应,等关键词输入,结果就出来了。配合 ag 可以屏蔽掉.gitignore 内的文件。

搜索除了文件快速打开,还有全局行内搜索,之前vimgrep 一直是一个比较常用的命令,然而体验不太好,需要指定搜索内容和搜索范围,还要输一些命令,而且略慢。那么ag(https://github.com/ggreer/the_silver_searcher)一定是目前最好的选择。不管其他因素,进到项目主页,一看是 c 写的基本上就已经稳了。实际上它也确实是目前为止最快的行内搜索。使用的话,需要先安装命令行ag(https://github.com/ggreer/the_silver_searcher),然后安装ack.vim(https://vimawesome.com/plugin/ack-vim),注意不要用ag.vim 它已经不被支持了。

不过有个问题,fzf也内置了对 ack 的支持,只是比ack.vim 不如,所以需要重新映射一个 ack.vim 使用的键位,我个人用了 <Leader>f 意为 find。
很少用Game Center,不过突然收到挑战我也是着实吓了一跳…本来是横幅,无意间发现下拉横幅后有快捷操作,忘了截屏了,然后截了通知中心的两张图…:
设置 —> 通知 —> 找到Game Center —>把允许通知关掉 —> 搞定~
背景:有时候为了测试Zabbix主从延迟,还得锁从库的表(或是停从库),诱发主从同步延迟。
SHOW PROCESSLIST查看数据库中表的状态,是否被锁;
kill id   //杀掉被锁的表

1. FLUSH TABLES WITH READ LOCK
   这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行。2

   解锁语句是:UNLOCK TABLES;

2.LOCK TABLES tbl_name [AS2alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
  这个命令是表级别的锁定,可以定制锁定某一个表。例如: lock 2tables test read; 不影响其他表的写操作。

   解锁语句是:UNLOCK TABLES;

  这两个语句在执行的时候都需要注意个特点,就是 隐式提交的语句。在退出 mysql2终端的时候都会隐式的执行 UNLOCK TABLES2。也就是说如果要让表锁定生效就必须一直保持对话。
原文:http://blog.csdn.net/shootyou/article/details/626735

Mysql的innodb也能先挺复制的IO追平后停Mysql拷贝数据目录到别的Mysql能启动来的方法:
mysql> help stop slave
Name: 'STOP SLAVE'
Description:
Syntax:
STOP SLAVE [thread_types]

thread_types:
    [thread_type [, thread_type] ... ]

thread_type: IO_THREAD | SQL_THREAD
阿里云服务器ssh经常一段时间就断掉解决办法:

#vim /etc/ssh/sshd_config

找到下面两行

#ClientAliveInterval 0
#ClientAliveCountMax 3

去掉注释,改成

ClientAliveInterval 30
ClientAliveCountMax 86400

这两行的意思分别是

1、客户端每隔多少秒向服务发送一个心跳数据

2、客户端多少秒没有相应,服务器自动断掉连接

重启sshd服务

#service sshd restart

From:https://www.cnblogs.com/hailspace/p/7289985.html


如果两台计算机之间突然需要传送一个文件,而一时又没有什么好用的通讯工具,也来不及开服务器的时候,那么可以使用nc来传送文件。方法如下:

接收者:  $ nc -l -p 12345 > save_filename    ; 12345为1024-65535的任意端口号
发送者: $ nc <接收者ip> 12345 < send_file

一)目的主机监听
nc -l 监听端口[ 未使用端口] > 要接收的文件名 ,如:nc -l 4444 > cache.tar.gz
实践如下:    
nc -l -p 4444  > memcached-3.0.3.tgz  #@10.71.182.156

二)源主机发起请求
nc 目的主机ip 目的端口 < 要发送的文件
nc 192.168.0.85 4444 < /root/cache.tar.gz

实践如下:    
nc 10.71.182.156 4444 < /home/test/rpmbuild/SOURCES/memcached-3.0.3.tgz

三)查看是否拷贝完毕:
ls /home/test/rpmbuild/SOURCES/memcached-3.0.3.tgz
/home/test/rpmbuild/SOURCES/memcached-3.0.3.tgz

调试:
-v打印出错信息
        接收方:nc -v -l -p 8210
        发送方:nc -v dest_ip 8210
        注意:使用nc传文件时,需注意操作次序,receiver先侦听端口,sender向receiver所在机器的该端口发送数据。否则发送失败。    

来自:http://blog.csdn.net/slvher/article/details/9668749

=====>linux快速复制大量小文件方法 nc+tar(打包为一个压缩文件,再传到对端后解压到指定目录还回来了)<=====
  1,在需要对大量小文件进行移动或复制时,用cp、mv都会显得很没有效率,可以用tar先压缩再解压缩的方式。
  2,在网络环境中传输时,可以再结合nc命令,通过管道和tcp端口进行传输。
  nc和tar可以用来快速的在两台机器之间传输文件和目录,比ftp和scp要来得简单的多。
  由于nc是一个超轻量的命令,所以一般busybox都会集成它。当一个linux终端,比如linux pda,
  通过usblan的方式连接到另一台linux主机的时候,这样的嵌入式终端上一般不会集成ftp server, ssh server
  这样比较笨重的服务,这个时候, nc可能成为唯一的上传手段。
  比如将机器A上的mytest目录上传到到机器 B(192.168.0.11)上,只需要:
  在机器B上,用nc来监听一个端口,随便就好,只要不被占用;并且将收到的数据用tar展开。-l代表监听模式。
  [root@server-B ~]#nc -l 4444 |tar -C /tmp/dir -zxf -
  然后,在A上通过nc和 tar发送test目录。使用一致的4444的端口。
  [root@server-A ~]#tar -zcvf - mytest|nc 192.168.0.11 4444

记得有一次,一台机器内核崩了,后来有位高手用liveCD把机器启动起来,就是用了类似的方法把数据导出来的。
看来基础的知识还是要多掌握一些啊,比如上次提到的links命令,有时候也很有用的

来自:http://logo32.iteye.com/blog/1564741
bashdb功能: 类似于GDB的调试工具,可以完成对shell脚本的断点设置,单步执行,变量观察等许多功能
【场合】: 脚本比较大时,通过-x参数调试时已不方便时.

【用法】:

bashdb -c script.sh
bashdb script.sh
bashdb --debugger script.sh
【说明】:该工具默认未安装,当前最新版本为:4.3-0.91,下载目录:http://bashdb.sourceforge.net/

1). 如果是ubuntu系统,直接用apt-get来安装
apt-get install bashdb

2). 如果是Readhat等版本,使用wget下载后,编译,安装,大致步骤如下:
wget https://sourceforge.net/projects/bashdb/files/bashdb/4.3-0.91/bashdb-4.3-0.91.tar.bz2
https://jaist.dl.sourceforge.net/project/bashdb/bashdb/4.4-0.94/bashdb-4.4-0.94.tar.gz
tar -xzvf bashdb-4.3-0.91.tar.bz2
cd bashdb-4.3-0.91
./configure
make && make install
【示例】:
【常用命令】

l             列出当前行以下的10行
q|quit        退出
h             帮助
/for/         向后搜索字符串for
?for?         向前搜索字符串for
x 1+2         计算算术表达式的值
!! ls -laRt   执行shell命令
n             执行下一条语句
s 4           单步执行4次,如遇到函数则进入函数里面
b 4           在行号4处设置断点
del 4         删除行号为4的断点
c 10          一直执行到行号10处  
R|run       重新执行当前调试脚本
finish        执行到程序最后


摘自:http://www.voidcn.com/article/p-sljifrsx-oo.html
exit
exit
There are stopped jobs.

原因:有vim后以Ctrl+z退出挂起的任务,运行fg后,直接退出后即可。

来源:https://unix.stackexchange.com/questions/116959/there-are-stopped-jobs-on-bash-exit
dig pypi.doubanio.com @202.106.0.20
202.106.0.20

我们平时用的最多的最常见的是反向代理。反向代理想必都会配置的,有不会的可以到本博客里面搜索下,有相关文档。 那么nginx的正向代理是如何配置的呢?

server {
  listen 8090;
  location / {
      resolver 218.85.157.99 218.85.152.99;
      resolver_timeout 30s;
      proxy_pass http://$host$request_uri;
  }
  access_log  /data/httplogs/proxy-$host-aceess.log;      
}

server {
listen 8090;
location / {
resolver 218.85.157.99 218.85.152.99;
resolver_timeout 30s;
proxy_pass http://$host$request_uri;
}
access_log  /data/httplogs/proxy-$host-aceess.log;      
}
就这么简单哈。
测试:
http://www.ttlsa.com:8090
resolver指令
语法: resolver address ... [valid=time];
默认值: —
配置段: http, server, location
配置DNS服务器IP地址。可以指定多个,以轮询方式请求。
nginx会缓存解析的结果。默认情况下,缓存时间是名字解析响应中的TTL字段的值,可以通过valid参数更改。
resolver_timeout指令
语法: resolver_timeout time;
默认值: resolver_timeout 30s;
配置段: http, server, location
解析超时时间。
如需转载请注明出处:http://www.ttlsa.com/html/3287.html


nginx正向代理加上DNSIP及超时时间在upstream中的使用方法:
https://www.nginx.com/resources/wiki/modules/domain_resolve/

http {
        resolver 8.8.8.8;
  resolver_timeout 10s;

        upstream backend {
                jdomain  www.baidu.com;
                #keepalive 10;
  }
  server {
    listen       8080;

    location / {
      proxy_pass http://backend;
    }
        }
}
Linux下处理JSON的命令行工具:jq---安装:
JSON是前端编程经常用到的格式。Linux下也有处理处理JSON的神器:jq。
       对于JSON格式而言,jq就像sed/awk/grep这些神器一样的方便,而且,jq没有乱七八糟的依赖,只需要一个binary文件jq,就足矣。
       本篇中,我们来看一下jq的安装。
1、执行yum list| grep jq查看是否有jq安装包。
2、若有,直接安装jq,执行命令:yum -y install jq。
安装完毕后,直接在命令行输入:jq,然后回车,看到以下信息说明安装完毕。
3.使用方法:
(1)简单使用: curl "http://127.0.0.1:8001/apis"|jq .
(2)获取显示Json里面的串及值:curl http://127.0.0.1:8001/apis|jq '.data[1].name'    得到返回:apiadmin

参考:http://blog.csdn.net/sunny_much/article/details/50668871

简单使用方式:
1,json文件友好显示
cat jsonfile | path_to_jq/jq .  

2,获取json某key的value
cat jsonfile | path_to_jq/jq ".key"  

3.较为复杂的结构里面的数据访问:
curl "http://127.0.0.1:8001/apis"|jq .data[0].upstream_url
"http://address.v1.service/address"
curl "http://127.0.0.1:8001/apis"|jq .total
1

curl "http://127.0.0.1:8001/apis"|jq .data[0].name
"address-service"

curl "http://127.0.0.1:8001/apis"|jq .data[0].hosts
[
  "address.mydomain.com"
]

curl "http://127.0.0.1:8001/apis"|jq .data[0].hosts[0]
"address.mydomain.com"

整个返回的结构体情况如下所示:
分页: 1/249 第一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]