背景:想到逗号替换为真正的换行,用这个\n不好使,怎么办?一查换行是\r,于是:



学习摘自:VIM如何将空格替换为换行,比如有时需要把很长的一行按空格分为多行,这时就可以用如下命令实现:
:%s/ +/\r/gc

参数解释:
%s :在整个文件范围查找替换
/ : 分隔符
+ :匹配空格,其中“ ”表示空格,+表示重复1次或多次,加在一起表示一个或多个空格。
\r :换行符
g :全局替换
c :替换前确认


来自:http://www.blogdaren.com/m/?post=128
https://github.com/play175/exbuffer.c/blob/master/mingw.makefile 内容:


-finput-charset 指定源文件的编码(若不指定,默认是UTF-8)
-fexec-charset 指定多字节字符串(const char*)常量在编译后的程序里保存的编码集(若不指定,默认是UTF-8)

摘自 :http://blog.csdn.net/qq_28234213/article/details/73277748


exbuffer.c——纯C写的TCP中的粘包、分包问题的解决方案里的mingw.makefile :
https://yoyo.play175.com/p/exbuffer_c.html
看了很多tcp文章都看不懂,这篇文章好像懂了,有空试试,说的是不是真的。

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

昨天的文章中,结合Wireshark抓包和大家讨论了三次握手的相关知识点,评论中有些读者对序号,确认序号,以及SYN&ACK等标志位还有一些疑问,这里简单再说一下我的理解。其中ACK的32位值在Wireshark抓包时显示的是相对的值,可设置为显示真实值:http://mini.eastday.com/a/180131063435528.html

首先,由TCP协议报文的格式可知,在报文中我们主要关注与《32位序列号》,《32位确认序号》,和SYN和ACK标志位。因为这四个要素和三次握手紧密相关。阅读全文
背景:机器长时间运行往往磁盘空间满了,但是删除了还是占用很大空间和没删除几乎一样,怎么办?
运维监控系统发来通知,报告一台服务器空间满了,登陆服务器查看,根分区确实满了,这里先说一下服务器的一些删除策略,由于 linux 没有回收站功能,所以线上服务器上所有要删除的文件都会先移到系统 / tmp 目录下,然后定期清除 / tmp 目录下的数据。这个策略本身没有什么问题,但是通过检查发现这台服务器的系统分区中并没有单独划分 / tmp 分区,这样 / tmp 下的数据其实占用根分区的空间,既然找到了问题,那么删除 / tmp 目录下一些占用空间较大的数据文件即可。

发现真出现了,一个队列进程把磁盘写满后,即使杀死PHP队列进程和对应的大文件后df -h的/ 100%占满,经lsof |grep "Remote.log"发现是Filebeat:
实践解决如下,确定杀光了:
ps aux |grep  Daemon |awk '{print $2}' |xargs kill -9
kill 10379: No such process
空间还是占用100%,用 lsof查看,这个命令还可以用来看端口对应的程序,如:
/usr/sbin/lsof -i tcp:5902
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
Xvnc    24560 root    9u  IPv4 763173      0t0  TCP *:5902 (LISTEN)
Xvnc    24560 root   10u  IPv6 763174      0t0  TCP *:5902 (LISTEN)

lsof -i :80
COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
nginx   41167 root   18u  IPv4 249906712      0t0  TCP *:http (LISTEN)

lsof |grep "Remote.log" 发现是filebeat :

重启一下Filebeat下吧:
/etc/init.d/filebeat restart
Stopping filebeat:
Config OK
Stopping filebeat:                                         [  OK  ]
2018/03/22 08:29:07.965771 config.go:86: INFO Additional configs loaded from: /etc/filebeat/conf.d/sec.yml
Config OK                                                   [  OK  ]
再看这个文件还在,是新生成的,但是空间就变正常了。AddTime:2018-03-22
                                                          
=============================================================================
# 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
背景: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
vim中的杀手级插件: vundle: http://zuyunfei.com/2013/04/12/killer-plugin-of-vim-vundle/
安装插件
打开一个vim, 运行:BundleInstall

或者在命令行运行 vim +BundleInstall +qall

安装完成后插件就能用了

####其它常用命令:

更新插件:BundleUpdate
清除不再使用的插件:BundleClean,
列出所有插件:BundleList
查找插件:BundleSearch
BundleUpdate报错:[Git] Unable to find remote helper for ‘https’
可能是在安裝 git 時因為缺少 libcurl 套件所導致

但是環境沒有 libcurl 時一樣可以安裝,只是會不能走 HTTPS 通道而已
若要修復這個問題,只需安裝 libcurl 後重新編譯安裝 git 就好:
# 系統為Ubuntu/Debain時,執行以下指令
apt-get install -y libcurl4-openssl-dev

# 系統為CentOS/RedHat/Fedora時,執行以下指令
yum install -y libcurl-devel.x86_64
From:https://caloskao.org/git-unable-to-find-remote-helper-for-https/

# 回到 git 原始碼目錄重新編譯並安裝 git
cd git-2.7.4
./configure
make prefix=/usr/local all
make prefix=/usr/local install
git --version

:BundleUpdate ,出现:Cannot make changes, 'modifiable' is off
:set modifiable
or
:set ma
来自vim 修改时提示 E21: Cannot make changes, 'Modifiable' is off:https://www.jianshu.com/p/2a511ebcdd9a
实践OK如下:
vi ./bundle/vundle/autoload/vundle/scripts.vim
166   set modifiable=on  
报语法错:后又修改为恢复原来后,又莫名其妙的好了:
164   " make buffer modifiable
165   " to append without errors
166   set modifiable  



结论:VIM有其和UI编辑器的局限,也有其灵活,Sublime有其存在价值,想学不一定能学好。多了快捷键还会冲突等得自己思考布局,是有 灵活性,而较为优秀的UI编辑器,早就精心设置好了,你只需要会开就成,所以,我只选择了vim-multiple-cursors,发现其它插件在vim-multiple-cursors的ctrl+n选中单词向前,Ctrl+p后通,Ctrl+x将选中变为不选中再会跳向下一个,选中完成后,可以使用大写i光标之前插入,大写c删除选中批量修改等vim编辑操作进入insert模式,开始修改文本.,好像出现了覆盖。不想深入,先用着,就这样吧:

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

通过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。
阿里云服务器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

nc + tar 传送整个文件目录:
接受方
nc -l 7788 |tar -zxvf -
发送方
tar -zcvf - dir |nc xx.xx.xx.xx 7788
dir 表示要传送的目录
来自:http://blog.csdn.net/u012333307/article/details/48562829

调试:
-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
exit
exit
There are stopped jobs.

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

来源:https://unix.stackexchange.com/questions/116959/there-are-stopped-jobs-on-bash-exit
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"

整个返回的结构体情况如下所示:
yum remove mysql时出现移除perl-DBD-MySQL的情况原因排查:
根本原因是之前的CentOS6.X里默认安装了mysql-libs,而在CentOS的7.x里,先安装了自己制作的Mysql包,于是出现:
1)CentOS6.X里需要:
rpm -q perl-DBD-MySQL --requires|grep libmysqlclient
libmysqlclient.so.16()(64bit)  
libmysqlclient.so.16(libmysqlclient_16)(64bit)  
2)CentOS7.X里需要:
rpm -q perl-DBD-MySQL --requires|grep libmysqlclient
libmysqlclient.so.18()(64bit)
libmysqlclient.so.18(libmysqlclient_18)(64bit)

而这两个不同版本的MySQL自制的包均分别提供了libmysqlclient.so.16@CentOS6.X和libmysqlclient.so.18@CentOS7.X(7里叫:mariadb-libs),且加入到动态链接库的cat /etc/ld.so.conf.d/mysql.conf,
/usr/local/mysql/lib,并ldconfig生效了,于是这个perl-DBD-MySQL就和它建立起了依赖,导致卸载Mysql@CentOS7.x时,因为perl-DBD-MySQL依赖mysql的libmysqlclient.so.18,于是出现被一同卸载的情况。怎么办@CentOS7.X里装perl-DBD-MySQL,先卸载Mysql一并把perl-DBD-MySQL卸载了,yum remove mysql -y,然后,yumdownloader mysql-libs,它会下载:mariadb-libs-5.5.56-2.el7.x86_64.rpm,rpm -ihv mariadb-libs-5.5.56-2.el7.x86_64.rpm,以解决直接yum install perl-DBD-MySQL时会出现安装:mysql-5.7.12-171123111505的情况,装好后,再安装yum install perl-DBD-MySQL ,也就不会安装mysql-5.7.12-171123111505了,因为链接已经在mariadb-libs-5.5.56有了,不需要mysql-5.7.12-171123111505来补充了。

一)CentOS7上安装perl-DBD-MySQL:
[root@ha_mysql-mha_manager_bj_szq_10_70_36_177 ~]# yum remove mysql
Loaded plugins: langpacks
Resolving Dependencies
--> Running transaction check
---> Package mysql.x86_64 0:5.7.12-171123111505.el7.centos will be erased
--> Processing Dependency: libmysqlclient.so.18()(64bit) for package: perl-DBD-MySQL-4.023-5.el7.x86_64
--> Processing Dependency: libmysqlclient.so.18(libmysqlclient_18)(64bit) for package: perl-DBD-MySQL-4.023-5.el7.x86_64
--> Running transaction check
---> Package perl-DBD-MySQL.x86_64 0:4.023-5.el7 will be erased
--> Finished Dependency Resolution

libmysqlclient.so.18被perl-DBD-MySQL需要:
ls -lart /usr/local/mysql/lib/libmysqlclient.so.18
/usr/local/mysql/lib/libmysqlclient.so.18 -> /usr/local/mysql/lib/libmysqlclient.so.18.1.0
rpm -qf /usr/local/mysql/lib/libmysqlclient.so.18.1.0
mysql-5.7.12-171123111505.el7.centos.x86_64

ldconfig -p|grep libmysqlclient.so.18
        libmysqlclient.so.18 (libc6,x86-64) => /usr/local/mysql/lib/libmysqlclient.so.18

验证,如果没有咱自己打的包的情况,理论上perl-DBD-MySQL也是和CentOS6.x一样需要这个mysql-libs的:
yumdownloader mysql-libs
rpm -qpl  mariadb-libs-5.5.56-2.el7.x86_64.rpm|grep libmysqlclient.so
/usr/lib64/mysql/libmysqlclient.so.18            #得证!!
/usr/lib64/mysql/libmysqlclient.so.18.0.0  


二)CentOS6.x Ver:
ldconfig -p|grep libmysqlclient.so
        libmysqlclient.so.16 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.16
rpm -qf /usr/lib64/mysql/libmysqlclient.so.16
mysql-libs-5.1.73-7.el6.x86_64

[root@ha_mysql-mha-manager_bj_sjs_10_71_182_246 ~]验证依赖:
yum remove mysql-libs
perl-DBD-MySQL  x86_64  4.013-3.el6  @CentOS-Base
背景:有时操作一些命令出现问题,后来才发现,而如果把屏幕缓冲区设置大小变大,能够回看,有可能是一些”证据“,比如:挂载的NAS硬盘好的,一会 就不行了,这个会话的缓冲区大小设置大点能助于反查问题。

在使用SecureCRT操作设备时,默认的回滚行数为500行。可以通过打开[选项]->[会话选项]->[Terminal]->[Emulation]-[Scrollback],默认为500行,可以最大调整到128000行。
设置所有呢?
在Option->Global Option->General->Default Session->Edit Default Settings...->Session Options - Default->Terminal->Emulation->Scrollback :Scrollback Buffer:128000 ,点Ok后,如果你的那个 服务器太多,得卡住没有响应,等一会就好了,全部修改了。

来自:http://blog.csdn.net/imxiangzi/article/details/7457703
背景:MHA里面有的LVS有兄弟用这样一句,也不会LVS,好像是用来检测Mysql的进程否还活着的Shell,vrrp_script chk_mysqld { script "killall -0 mysqld && exit 0 || exit 1"。这句是否完备,实践发现如果对于多进程模型,可能并不完备,如下实践。

后台服务需要不间断运行,意外退出后,需要将其重新拉起。常常可以通过向进程发送信号0,然后根据返回值来判断一个进程是否存在。比如进程名字为A,那么
exsit="killall -0 A;echo $?"
exsit为0就表示进程A存在,否则表示不存在。
然而,当有多个进程名字都是A的时候,只有在全部名字为A的进程都退出后,exsit才非0,所以这种监控方法并不太适合多进程环境(为了负载均衡,服务器常常采用多进程)。

我们来看例子。
testbin.c

make testbin
g++     testbin.cpp   -o testbin

然后我们运行他。
     1.启动父子总共5个进程。
./testbin
Start.....
summer 42187 start.......
summer 42186 start.......
summer 42185 start.......
summer 42184 start.......

2.发送killall -0
killall -0 testbin && echo 0 || echo 1          
0

发现有进程接收了信号

3..杀掉一个子进程
ps aux|grep testbin
root     45125  0.0  0.1  11880  1048 pts/0    S+   10:52   0:00 ./testbin
root     45126  0.0  0.0  11748   392 pts/0    S+   10:52   0:00 ./testbin
root     45127  0.0  0.0  11880   400 pts/0    S+   10:52   0:00 ./testbin
root     45128  0.0  0.0  11880   400 pts/0    S+   10:52   0:00 ./testbin
root     45129  0.0  0.0  11880   400 pts/0    S+   10:52   0:00 ./testbin

kill -s 9 PID
----------------
kill -s 9 45125
kill -s 9 45126

kill -s 9 45129
killall -0 testbin && echo 0 || echo 1
0

killall -0 testbin && echo 0 || echo 1
0

最后还剩下一个进程了:
ps aux|grep testbin                    
root     45128  0.0  0.0  11880   400 pts/0    S    10:52   0:00 ./testbin
killall -0 testbin && echo 0 || echo 1
0


注意此时这个子进程成了僵尸进程。虽然现在只有4个进程,但是killall -0发出的信号仍然被接收,所以返回0.再杀一个,只剩3个所以仍然又能进程接收相关信号,返回0.

4..killall杀掉所有的父子进程
kill -s 9 45128

此时没有进程接收信号,返回1.
killall -0 testbin && echo 0 || echo 1
testbin: no process killed
1


实践源来自:http://blog.csdn.net/wjj547670933/article/details/44535761
http://m.blog.csdn.net/shen_gan/article/details/8167715
FreeBSD11.1好像不是这样的,清空/root/.bash_history没有用:在 /root/.history里,不是.bash_history。
  1000  1:10    mysql -S /tmp/mysql.sock
  1002  1:26    vi /root/.bash_history

history命令的記錄如何刪除?

1、修改/etc/profile將HISTSIZE=1000改成0或1

清除用戶home路徑下.bash_history

2、立即清空裏的history當前曆史命令的記錄

history -c

3、bash執行命令時不是馬上把命令名稱寫入history文件的,而是存放在內部的buffer中,等bash退出時會一並寫入。

不過,可以調用'history -w'命令要求bash立即更新history文件。

history -w
Linux/FreeBSD 终端/ssh登录前后的欢迎信息修改,均无问题,实践Ok,操作如下:
cat /etc/motd
Welcome to jackxiang's Compute Service !


From:http://xoyabc.blog.51cto.com/7401264/1679402
解决办法:
vi ~/.vimrc


=================================================
'titleold' 選項。替換固定的字符串 "Thanks for flying Vim",用來在退出時設置標題。
let &titleold=getcwd()
From:http://vim.wikia.com/wiki/Show_a_useful_title_on_exit_in_an_xterm

My current ~/.vimrc contains (in part)
set title
set titleold=""
set titlestring=VIM:\ %F

From:https://github.com/lazywei/vim-doc-tw/blob/master/doc/version5.twx

More:http://vim.wikia.com/wiki/Show_a_useful_title_on_exit_in_an_xterm
cd /usr/ports/devel/strace/ && make install clean
A package is not available for ports marked as: Forbidden / Broken / Ignore / Restricted
PKGNAME: strace
ONLY_FOR_ARCHS: i386 #不支持AMD.
distinfo:
SHA256 (strace-4.5.18.tar.bz2) = 95e7b7470e04f22c3ec8dc6d0b1fdd8944306cb5313c84c4545cd83abada26d0
SIZE (strace-4.5.18.tar.bz2) = 480973

Install strace

First update FreeBSD ports collection and install strace from /usr/ports/devel/strace:
# portsnap fetch update
# cd /usr/ports/devel/strace
# make install clean

From:https://www.cyberciti.biz/faq/howto-installl-strace-under-freebsd/
人脸识别项目的开源测试程序及代码: https://github.com/Insightzen/autocrop ,要Python2.7以上,得选CentOS7,6的版本低,得编译,还需要python2-pip,得找一个源,epll默认没有,得找一个扩展源,如下:
CentOS7的默认Python版本:Python 2.7.5 ,而autocrop需要装:python2-pip ,
得找一个源,CentOS7下面用Fedora的源,放到,/etc/yum.repos.d,如下:
第一个问题,FreeBSD 10 之後的版本改用unbound 代替了bind
所以已經沒有 nslookup , dig 等指令
可以改用host , drill 等指令
但如果還是習慣 nslookup的話
可以安裝bind-tools 套件

#cd /usr/ports/dns/bind-tools
#make install

安裝完後看看是否真的出現
# which nslookup
/usr/local/bin/nslookup

From:http://blog.sina.com.tw/helloworld/article.php?entryid=651089

cd /usr/ports/devel/git/ && make install clean
nc FreeBSD自带,而netcat需要自己安装,如下:
cd /usr/ports/net/netcat/ && make install clean

第二个问题,关于CentOS如何只知道命令不知道哪个包,而通过YUM的provides命令反查nslookup所在的软件包的?

32:bind-utils-9.9.4-51.el7.x86_64 : Utilities for querying DNS name servers
源    :updates
匹配来源:
文件名    :/usr/bin/nslookup

yum provides *bin/nslookup

32:bind-utils-9.9.4-38.el7_3.3.x86_64 : Utilities for querying DNS name servers
源    :@updates
匹配来源:
文件名    :/usr/bin/nslookup

================================================

nslookup這個指令對於網路除錯來說,應該是很多人都很習慣的工具
如果發現安裝好的Linux系統少了這個指令

[root@example ~]# nslookup myip.pass.tw
-bash: nslookup: command not found

[root@example ~]# which nslookup
/usr/bin/which: no nslookup in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

直接安裝看看咧? 找不到這個套件名稱
[root@example ~]# yum -y install nslookup
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: mirrors.linode.com
* epel: mirror.sfo12.us.leaseweb.net
* extras: mirrors.linode.com
* updates: mirrors.linode.com
No package nslookup available.
Error: Nothing to do

試試 yum provides 看看nslookup 是包含在哪個套件中
[root@example ~]# yum provides nslookup
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.linode.com
* epel: mirror.sfo12.us.leaseweb.net
* extras: mirrors.linode.com
* updates: mirrors.linode.com
Warning: 3.0.x versions of yum would erroneously match against filenames.
You can use "*/nslookup" and/or "*bin/nslookup" to get that behaviour
No Matches found

依提示再搜尋一下,可以發現包含在bind-utils 套件中
[root@example ~]# yum provides */nslookup
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.linode.com
* epel: mirror.sfo12.us.leaseweb.net
* extras: mirrors.linode.com
* updates: mirrors.linode.com
base/filelists_db                                                                                                                                                                                                     | 6.4 MB     00:00
epel/filelists_db                                                                                                                                                                                                     | 7.7 MB     00:01
extras/filelists_db                                                                                                                                                                                                   |  25 kB     00:00
updates/filelists_db                                                                                                                                                                                                  | 1.5 MB     00:00
zsh-4.3.11-4.el6.centos.2.x86_64 : A powerful interactive shell
Repo        : base
Matched from:
Filename    : /usr/share/zsh/4.3.11/functions/nslookup

32:bind-utils-9.8.2-0.62.rc1.el6.x86_64 : Utilities for querying DNS name servers
Repo        : base
Matched from:
Filename    : /usr/bin/nslookup

32:bind-utils-9.8.2-0.62.rc1.el6_9.2.x86_64 : Utilities for querying DNS name servers
Repo        : updates
Matched from:
Filename    : /usr/bin/nslookup

32:bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64 : Utilities for querying DNS name servers
Repo        : updates
Matched from:
Filename    : /usr/bin/nslookup

32:bind-utils-9.8.2-0.62.rc1.el6_9.1.x86_64 : Utilities for querying DNS name servers
Repo        : updates
Matched from:
Filename    : /usr/bin/nslookup

[root@example ~]# yum provides *bin/nslookup
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.linode.com
* epel: mirrors.kernel.org
* extras: mirrors.linode.com
* updates: mirrors.linode.com
32:bind-utils-9.8.2-0.62.rc1.el6.x86_64 : Utilities for querying DNS name servers
Repo        : base
Matched from:
Filename    : /usr/bin/nslookup

32:bind-utils-9.8.2-0.62.rc1.el6_9.2.x86_64 : Utilities for querying DNS name servers
Repo        : updates
Matched from:
Filename    : /usr/bin/nslookup

32:bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64 : Utilities for querying DNS name servers
Repo        : updates
Matched from:
Filename    : /usr/bin/nslookup

32:bind-utils-9.8.2-0.62.rc1.el6_9.1.x86_64 : Utilities for querying DNS name servers
Repo        : updates
Matched from:
Filename    : /usr/bin/nslookup

安裝 bind-utils
[root@example ~]# yum -y install bind-utils
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: mirrors.linode.com
* epel: mirrors.kernel.org
* extras: mirrors.linode.com
* updates: mirrors.linode.com
Resolving Dependencies
--> Running transaction check
---> Package bind-utils.x86_64 32:9.8.2-0.62.rc1.el6_9.4 will be installed
--> Processing Dependency: bind-libs = 32:9.8.2-0.62.rc1.el6_9.4 for package: 32:bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64
--> Processing Dependency: liblwres.so.80()(64bit) for package: 32:bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64
--> Processing Dependency: libisccfg.so.82()(64bit) for package: 32:bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64
--> Processing Dependency: libisccc.so.80()(64bit) for package: 32:bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64
--> Processing Dependency: libisc.so.83()(64bit) for package: 32:bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64
--> Processing Dependency: libdns.so.81()(64bit) for package: 32:bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64
--> Processing Dependency: libbind9.so.80()(64bit) for package: 32:bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64
--> Running transaction check
---> Package bind-libs.x86_64 32:9.8.2-0.62.rc1.el6_9.4 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================================================================================================
Package                                                Arch                                               Version                                                                 Repository                                           Size
=============================================================================================================================================================================================================================================
Installing:
bind-utils                                             x86_64                                             32:9.8.2-0.62.rc1.el6_9.4                                               updates                                             189 k
Installing for dependencies:
bind-libs                                              x86_64                                             32:9.8.2-0.62.rc1.el6_9.4                                               updates                                             892 k

Transaction Summary
=============================================================================================================================================================================================================================================
Install       2 Package(s)

Total download size: 1.1 M
Installed size: 2.7 M
Downloading Packages:
(1/2): bind-libs-9.8.2-0.62.rc1.el6_9.4.x86_64.rpm                                                                                                                                                                    | 892 kB     00:00
(2/2): bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64.rpm                                                                                                                                                                   | 189 kB     00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                         44 MB/s | 1.1 MB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 32:bind-libs-9.8.2-0.62.rc1.el6_9.4.x86_64                                                                                                                                                                                1/2
  Installing : 32:bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64                                                                                                                                                                               2/2
  Verifying  : 32:bind-libs-9.8.2-0.62.rc1.el6_9.4.x86_64                                                                                                                                                                                1/2
  Verifying  : 32:bind-utils-9.8.2-0.62.rc1.el6_9.4.x86_64                                                                                                                                                                               2/2

Installed:
  bind-utils.x86_64 32:9.8.2-0.62.rc1.el6_9.4

Dependency Installed:
  bind-libs.x86_64 32:9.8.2-0.62.rc1.el6_9.4

Complete!

来自:http://blog.sina.com.tw/helloworld/article.php?pbgid=170996&entryid=657249
分页: 2/24 第一页 上页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]