uln tln参数含义:
u:udp
t:tcp
-l, --listening            display listening server sockets
-n, --numeric              don't resolve names

netstat 查看tcp/udp端口命令:
[root@newcomment_php_bj_sjs_10_71_182_148 newcomment.cntv.cn]# netstat -uln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
udp        0      0 0.0.0.0:111                 0.0.0.0:*                              
udp        0      0 0.0.0.0:808                 0.0.0.0:*                              
udp        0      0 127.0.0.1:837               0.0.0.0:*                              
udp        0      0 0.0.0.0:17617               0.0.0.0:*                              
udp        0      0 0.0.0.0:2392                0.0.0.0:*                              
[root@newcomment_php_bj_sjs_10_71_182_148 newcomment.cntv.cn]# netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:34945               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:32740               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:15770             0.0.0.0:*                   LISTEN


常用基础:netstat -atlunp|grep 80

netstat -s|grep estab
    12 connections established
    28467 packets rejects in established connections because of timestamp

————————————————————————————————————
Linux网络状态工具ss命令使用详解:
http://www.cnphp6.com/archives/66361




man ss
ss -o state fin-wait-1 ’( sport = :http or sport = :https )’ dst 193.233.7/24
              List  all  the tcp sockets in state FIN-WAIT-1 for our apache to network 193.233.7/24 and
              look at their timers.


httpstat 是一个 Python 脚本,它以美妙妥善的方式反映了 curl 统计分析,它是一个单一脚本,兼容 Python 3 ,在用户的系统上不需要安装额外的软件(依赖)。

-- Aaron Kili

本文导航

-在 Linux 系统中安装 httpstat25%
-在 Linux 中如何使用 httpstat36%
编译自: http://www.tecmint.com/httpstat-curl-statistics-tool-check-website-performance/
作者: Aaron Kili
译者: wyangsun
从本质上来说它是一个 cURL 工具的封装,意味着你可以在 URL 后使用几个有效的 cURL 选项,但是不包括 -w、-D、-o、-s和-S选项,这些已经被 httpstat 使用了。



httpstat Curl 统计分析工具

你可以看到上图的一个 ASCII 表显示了每个过程消耗多长时间,对我来说最重要的一步是“服务器处理server processing” – 如果这个数字很高,那么你需要优化你网站服务器来加速访问速度[1]。

网站或服务器优化你可以查看我们的文章:

使用下面安装说明和用法来获取 httpstat 检查出你的网站速度。

在 Linux 系统中安装 httpstat

你可以使用两种合理的方法安装 httpstat :

使用 wget 命令直接从它的 Github 仓库获取如下:
$ wget -c https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.py
使用 pip(这个方法允许 httpstat 作为命令安装到你的系统中)像这样:
$ sudo pip install httpstat
注:确保 pip包已经在系统上安装了,如果没使用你的发行版包管理器yum或apt安装它。

在 Linux 中如何使用 httpstat

httpstat可以根据你安装它的方式来使用,如果你直接下载了它,进入下载目录使用下面的语句运行它:

$ python httpstat.py url cURL_options
如果你使用 pip来安装它,你可以作为命令来执行它,如下表:

$ httpstat url cURL_options
查看 httpstat帮助页,命令如下:

$ python httpstat.py --help

$ httpstat --help
httpstat帮助:

Usage: httpstat URL [CURL_OPTIONS]
httpstat -h | --help
httpstat --version
Arguments:
URL url to request, could be with or without `http(s)://` prefix
Options:
CURL_OPTIONS any curl supported options, except for -w -D -o -S -s,
which are already used internally.
-h --help show this screen.
--version show version.
Environments:
HTTPSTAT_SHOW_BODY Set to `true` to show response body in the output,
note that body length is limited to 1023 bytes, will be
truncated if exceeds. Default is `false`.
HTTPSTAT_SHOW_IP By default httpstat shows remote and local IP/port address.
Set to `false` to disable this feature. Default is `true`.
HTTPSTAT_SHOW_SPEED Set to `true` to show download and upload speed.
Default is `false`.
HTTPSTAT_SAVE_BODY By default httpstat stores body in a tmp file,
set to `false` to disable this feature. Default is `true`
HTTPSTAT_CURL_BIN Indicate the curl bin path to use. Default is `curl`
from current shell $PATH.
HTTPSTAT_DEBUG Set to `true` to see debugging logs. Default is `false`
从上面帮助命令的输出,你可以看出 httpstat已经具备了一些可以影响其行为的环境变量。

使用它们,只需输出适当的值的这些变量到 .bashrc或.zshrc文件。

例如:

export HTTPSTAT_SHOW_IP=false
export HTTPSTAT_SHOW_SPEED=true
export HTTPSTAT_SAVE_BODY=false
export HTTPSTAT_DEBUG=true
你一旦添加完它们,保存文件然后运行下面的命令使改变生效:

$ source ~/.bashrc
你可以指定使用 cURL 执行文件的路径,默认使用的是当前 shell 的 $PATH 环境变量[5]。

下面是一些展示 httpstat如何工作的例子。

$ python httpstat.py google.com

$ httpstat google.com


httpstat – 展示网站统计分析

接下来的命令中:

-X命令标记指定一个客户与 HTTP 服务器连接的请求方法。
--data-urlencode这个选项将会把数据(这里是 a=b)按 URL 编码的方式编码后再提交。
-v开启详细模式。
$ python httpstat.py httpbin.org/post -X POST --data-urlencode "a=b" -v


httpstat – 定制提交请求

你可以查看 cURL 的帮助获取更多有用的高级选项,或者浏览 httpstat的 Github 仓库:https://github.com/reorx/httpstat

这篇文章中,我们讲述了一个有效的工具,它以简单和整洁方式来查看 cURL 统计分析。如果你知道任何类似的工具,别犹豫,让我们知道,你也可以问问题或评论这篇文章或 httpstat,通过下面反馈。
背景:有时发现一些进程运行着运行着其CPU的负载就变高了,怎么发现?怎么知道是进程还是线程高了,定位是一个问题,层层定位也是个问题,这对于Window不是个问题,对于Linux就是一个大问题。
定位一下进程PID:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     22381  2.1  0.5 273728  5860 ?        S    20:03   2:22 php WebSocketServer.php

看线程:
[root@a php]# ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
USER       PID  PPID   TID     TIME %CPU CMD
root      3851     1  3851 00:00:46  0.0 php task.php
root      3851     1  3853 00:00:00  0.0 php task.php
root      3852  3851  3852 00:00:00  0.0 php task.php


1.CPU占用最多的前10个进程:

ps auxw|head -1;ps auxw|sort -rn -k3|head -10

2.内存消耗最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k4|head -10

3.虚拟内存使用最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k5|head -10

来自:http://blog.chinaunix.net/uid-15007890-id-3413584.html

如果是10个进程,K=10,如果是最高的三个,K=3
说明:ps -aux中(a指代all——所有的进程,u指代userid——执行该进程的用户id,x指代显示所有程序,不以终端机来区分)
        ps -aux的输出格式如下:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  19352  1308 ?        Ss   Jul29   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Jul29   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Jul29   0:11 [migration/0]

     sort -k4nr中(k代表从第几个位置开始,后面的数字4即是其开始位置,结束位置如果没有,则默认到最后;n指代numberic sort,根据其数值排序;r指代reverse,这里是指反向比较结果,输出时默认从小到大,反向后从大到小。)。本例中,可以看到%MEM在第4个位置,根据%MEM的数值进行由大到小的排序。
     head -K(K指代行数,即输出前几位的结果)
     |为管道符号,将查询出的结果导到下面的命令中进行下一步的操作。
方法2:top (然后按下M,注意大写)
二、可以使用下面命令查使用CPU最多的K个进程
方法1:
ps -aux | sort -k3nr | head -K

方法2:top (然后按下P,注意大写)

来自:https://zhidao.baidu.com/question/371525749314218684.html

可以用下面的命令将 cpu 占用率高的线程找出来:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu

这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。

直接使用 ps Hh -eo pid,tid,pcpu | sort -nk3 |tail 获取对于的进程号和线程号,然后跳转到3.
查看哪个进程线程占用cpu过高; top / ps -aux, 获得进程号
确定哪个线程占用cpu过高,进入进程号的目录:/proc/pid/task,
执行:grep SleepAVG  **/status  | sort -k2,2 | head,  确定cpu占用较高的线程号。
使用kill -3 pid 会打印线程堆栈的情况

来自:http://www.cnblogs.com/lidabo/p/4738113.html

背景:网卡流量80,如果是100M的网卡可能是瓶颈,而如何知道这个网卡是100M还是1000M的?用命令查询一下。阿里云的虚拟机好像看不到,用另一个命令看,这块涉及到网卡是否支持多队列网卡识别,Capabilities: [70] MSI-X: Enable+Masked-TabSize=10,阿里的是:Capabilities: [40] MSI-X: Enable+ Count=3 Masked-,参考链接:http://blog.sina.com.cn/s/blog_aed82f6f0102vwjx.html。
lspci -vvv|grep network -B 1 -A 15



物理机上:
ethtool eth0

阿里私有云虚拟的网卡有些简单:
ethtool eth0
Settings for eth0:
        Link detected: yes


ethtool 工具关于网络协商功能介绍;

ethtool - Display or change ethernet card settings(ethtool 是用来显示和更改网卡设置的工具);这个工具比较复杂,功能也特别多。由于洋文比较难懂。所以我们还是把网络设备协商方式的设置方法说一说。

2.1 ethtool 显示网络端口设置功能;
这个功能比较好办。就是ethtool 后面直接接网絽接口就行;比如下面的例子;
[root@localhost ~]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes: 10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes: 10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Advertised auto-negotiation: No 注:自动协商关闭
        Speed: 100Mb/s 注:速度 100Mb
        Duplex: Full 注:全双工
        Port: MII
        PHYAD: 32
        Transceiver: internal
        Auto-negotiation: off
        Supports Wake-on: pumbg
        Wake-on: d
        Current message level: 0x00000007 (7)
        Link detected: yes 注:eth0已经激活;


摘自:https://my.oschina.net/u/1986074/blog/517033
vim从vim7开始加入了多标签切换的功能,相当于多窗口。
之前的版本虽然也有多文件编辑功能,但是总之不如这个方便啦。
用法
:tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab
:tabc       关闭当前的tab
:tabo       关闭所有其他的tab
:tabs       查看所有打开的tab
:tabp      前一个
:tabn      后一个
标准模式下:
gt , gT 可以直接在tab之间切换。
更多可以查看帮助 :help table , help -p
使用alt+数字键来切换tab (vim7+)
不过用gt,gT来一个个切换有点不方便, 如果用:tabnext {count}, 又按键太多. 加入以下代码后, 可以用 alt+n来切换,
比如alt+1切换到第一个tab,alt+2切换到第二个tab。
把以下代码加到vimrc, 或者存为.vim文件,再放到plugin目。
function! TabPos_ActivateBuffer(num)
    let s:count = a:num
    exe "tabfirst"
    exe "tabnext" s:count
endfunction
      
function! TabPos_Initialize()  
for i in range(1, 9)
        exe "map <M-" . i . "> :call TabPos_ActivateBuffer(" . i . ")<CR>"
    endfor
    exe "map <M-0> :call TabPos_ActivateBuffer(10)<CR>"
endfunction

autocmd VimEnter * call TabPos_Initialize()
上面的看上去太复杂了,来个简单的。
:nn <M-1> 1gt
:nn <M-2> 2gt
:nn <M-3> 3gt
:nn <M-4> 4gt
:nn <M-5> 5gt
:nn <M-6> 6gt
:nn <M-7> 7gt
:nn <M-8> 8gt
:nn <M-9> 9gt
:nn <M-0> :tablast<CR>
把这个放进_vimrc配置文件里。
参考至:http://www.liurongxing.com/vim-tab-shortcut.html
Mysql新版本均采用了cmake:
http://mp.weixin.qq.com/s?__biz=MzI0MTEyMzgxOA==&mid=2247483751&idx=1&sn=124007f577a8d697040479942935d88a&chksm=e91129e2de66a0f4b6e385d663c927c7e0386255d29af3a7a7f2550ff84abbf5a95a457bbdc1&mpshare=1&scene=23&srcid=1214WmcU4f5K7XqqSEIfWo6l#rd
使用 fuser xxx 命令查看制定的文件被哪个进程占用,然后关闭该进程,则解决问题。
备注: 如果 xxx 命令是在普通用root 下开启, 而在普通用户下使用:fuser xxx 是没有结果的
切换至 root 用度,再执行 fuser xxx ,则会显示 其进程号,将其杀即可。

eg:
# ./Xfbdev :0 -fp /usr/share/fonts/X11/misc
./Xfbdev: Text file busy

$ fuser Xfbdev
$ sudo su
# fuser Xfbdev
Xfbdev: 28784e
# ps aux | grep Xfbdev
root 28784 0.9 0.2 4608 2640 pts/0 S+ 12:48 0:00 ./Xfbdev :0 -fp /usr/share/fonts/X11/misc
root 30708 0.0 0.1 3792 1248 pts/1 S+ 12:49 0:00 grep Xfbdev

Text file busy问题的解决

Author: liucy
在使用scp跨服务器拷贝文件时,出现了Text file busy的错误,导致无法完成操作,后来经过查找得知,该错误指的是文件正在被某一进程使用,处于锁定状态,所以无法拷贝。后来经过查证得知,使用fuser命令可以解决上述问题,具体执行命令如下:
fuser -cdkux filename

From:http://m.jb51.net/LINUXjishu/153057.html

pmap -p pid
ping   -a   ip返回计算机名的原理?或我该怎么办才能返回这个计算机名?
------解决方案--------------------------------------------------------
有时候不能反向解析DNS,所以就找不出计算机名!纯属个人见解!
------解决方案--------------------------------------------------------
象是一个什么功能被禁止了.nbios服务禁止.不一定准确


如:ping 10.78.72.XX
ping -s 1500 -c 10 -a 10.70.39.254 10.78.72.XX

ctrl+c
[root@itv-api_php_bj_syq_10_70_62_28 /]#  ping -f xx.xx.xx.xx
PING xx.xx.xx.xx(10.78.72.163) 56(84) bytes of data.
...................................^C  (ctrl+c)
--- xx.xx.xx.xxping statistics ---
44364 packets transmitted, 44330 received, 0% packet loss, time 651113ms
rtt min/avg/max/mdev = 53.616/55.311/79.376/2.586 ms, pipe 7, ipg/ewma 14.676/54.124 ms


情况是这样的~本来是4M的线路需要增开到10M,客户测试的时候是在linux下用ping -f命令测试极限,发现带宽依旧只是4M。但采用feiQ这类局域网文件传输工具,两端的传输速度都能达到1.2MB/s以上。两端经过的是SDH传输网。 有没有大神能解释下linux ping-f这命令...

ping -f
尽可能快地发送报文

linux下 ping命令参数
表1 ping命令参数(linux)
参数
描述
-c count
在收发指定的count个数目的报文后停止
-d
在套接口设置so_debug
-f
尽可能快地发送报文
-i wait
设置连续报文发送时报文间的发送时间间隔(单位为秒)
-i ?device?
设置输出接口
-l preload
尽可能快地发送预载的报文,然后再返回到正常发送模式
-n
不查寻主机名,仅仅给出ip地址值
-p pattern
定义随同报文一起被发送的便笺内容(便笺最长为16个字节)
-q
仅输出结果的总结内容
-r
不使用路由表来发送报文,而是直接把报文发到主机
-r
设置记录路由选择功能,即记录报文传送经过的路径
-s packetsize
设置要发送的报文大小(单位为字节,最大长度是64k,缺省长度是64)
-t tsonly
发送一个带有时间戳的ping报文
-t tsandaddr
收集时间戳和地址
-t tsprespec
[host1 [host2 [host3 [host4]]]] 收集来自预定的网络段的时间戳和地址
-w timeout
指定等待每个响应的最长时间(单位是毫秒)


linux下测试ping包:
ping -q -c 100 -s 8100 10.70.7.108
[root@a ~]# ping -q -c 100 -s 8100 101.200.228.135
PING 101.200.228.135 (101.200.228.135) 8100(8128) bytes of data.

PS:
C记录是啥?cdn的域名, cname.补俩CDN源站。

阅读全文
~          将光标下的字母改变大小写,这个相当有用,因为咱们类首字母大写,而后对象则是首字母小写,在对象后加上Obj,如:


======================================================================
~          将光标下的字母改变大小写

3~         将光标位置开始的3个字母改变其大小写

g~~        改变当前行字母的大小写

U          将可视模式下选择的字母全改成大写字母

u          将可视模式下选择的字母全改成小写

gUU        将当前行的字母改成大写

3gUU       将从光标开始到下面3行字母改成大写

guu       将当前行的字母全改成小写

gUw       将光标下的单词改成大写。

guw       将光标下的单词改成小写。


来自:http://blog.chinaunix.net/uid-22606185-id-3373942.html
  云计算可以帮助企业降低IT方面的成本和复杂性,并获得他们蓬勃发展所需的灵活性与敏捷性。但是,规划出通往云的明确路径并非易事。毕竟用户需要看透与云相关的市场大肆宣传,然后理解并分析不同种类的云计算模式的优点与缺点。此外,还需要确定备选的云中哪些最适合自己企业的战略、工作负载、性能、安全性需求和内部IT的专业知识,甚至希望将来某一刻可以完全地“Do it yourself“(自己动手)。

      本文将介绍“云“服务的三种类型,并讨论不同云计算模式满足什么类型的需要。

什么是云计算?

      云计算使用户能够通过Internet或专用网络访问软件、服务器、存储以及其他计算资源。这些资源与位置无关,具体表现在用户通常不需要管理甚至了解这些资源的实际位置。用户根据需要购买和使用IT资源,并根据使用量为其使用的服务付费。

      云计算构建在虚拟化技术的基础上,而虚拟化技术提供从弹性资源池中调配IT服务的功能。虚拟化可以将一个物理机分区为多个虚拟机,其中每一个虚拟机都可以独立与其他设备、应用程序、数据和用户交互,就像它是独立的物理资源一样。不同的虚拟机可以运行不同的操作系统和多种应用程序,同时共享单个物理计算机上的资源。因为每个虚拟机与其他虚拟机隔离,如果一个虚拟机崩溃,其他的不会受影响。除了使用虚拟化技术将一个计算机分区为多个虚拟机外,还可以使用虚拟化技术将多个物理资源合并为单个虚拟资源。存储虚拟化就是一个最好的例子:在此情况下,多个网络存储资源池化显示为单个存储设备,以实现对存储资源更轻松高效的利用和管理。

      虚拟机管理程序软件使虚拟化成为可能。这种软件也称为虚拟化管理器,位于硬件与操作系统之间,并使操作系统和应用程序与硬件隔离。虚拟机管理程序向操作系统和应用程序分配它们对处理器和其他硬件资源(例如内存和存储系统)所需的访问量。云提供商使用与他们提供的服务类型(存储、计算、带宽、有效用户帐户等)相关的计量功能来管理和优化资源。

云服务的常见类型:

      企业可以从数量不断增加的基于云的IT服务中进行选择和使用,并在不同类型的环境中部署它们。以下是三类最常见的“IT即服务”云产品:

软件即服务 (SaaS,Software as a Service) 使用户可以通过 Internet 访问软件应用程序。用户不必购买并在自己的计算机或设备上安装、更新和管理这些资源,而可以通过Web 浏览器访问并使用它们。SaaS 提供商在云中为用户管理软件、处理能力和存储。大多数 SaaS 解决方案在公共云中运行(详见下文),并以订阅或免费服务的形式提供。常用 SaaS应用程序的例子包括按需业务应用程序,例如 Salesforce.com、Google Apps for Business 和 SAP SuccessFactors,以及免费的社交网络解决方案,例如 LinkedIn 和 Twitter。
平台即服务 (PaaS,Platform as a Service) 提供在集成式云环境中开发、测试、运行和管理 SaaS 应用程序所需的基础架构和计算资源。拥有 Internet 连接的任何人都可以参与并开发基于云的解决方案,而不必寻找、购买和管理硬件、操作系统、数据库、中间件以及其他软件。大多数PaaS 供应商都可以提供比传统编程工具更易于使用的JavaScript、Adobe Flex 和 Flash 等工具。用户不必拥有或控制开发环境,但却能真正地控制他们在其中开发和部署的应用程序。一些知名度较高的 PaaS 提供商包括 Google App Engine、Windows Azure 和 Salesforce。
基础架构即服务 (IaaS,Infrastructure as a Service) 提供托管的 IT 基础架构,供用户调配处理能力、存储、网络和其他基础计算资源。IaaS 提供商运行并管理此基础架构,用户可以在此基础架构上运行选择的操作系统和应用程序软件。IaaS 提供商的例子有 Amazon Elastic Compute Cloud (EC2)、VerizonTerremark和 Google Compute Engine。
背景:rpmbuild时有一个make常常是这样写的,  make  DESTDIR=%{buildroot}  install,百这个buildroot是打包的路径,为何每次这样写都能奏效呢?是因为GUN的Make中约定俗成了的,如下。
     GNU Make中,有许多约定俗成的东西,比如这个DESTDIR:用于加在要安装的文件路径前的一个前缀变量。
比如,我们本地编译了一个第三方库,但需要对其打包发布给其他人使用,一方面如果我们安装到默认目录,比如/usr,这时,安装后的文件一但数量很大,则打包时很难找全;或者我们在configure时指定了--prefix,或cmake时指定了CMAKE_INSTALL_PREFIX,则pc文件内的编译依赖关系又会出错,变成了我们指定的那个路径,使用起来会很不方便。此时,DESTDIR就会派上用场。
DESTDIR只在make install时起作用,且和Makefile是由什么工具生成的没有关系,用法如下:
make install DESTDIR=<$CUSTOM_PREFIX>
在configure或cmake时,指定了要安装的路径后,以这种方式make install安装的文件会通通安装到以$CUSTOM_PREFIX为前缀的目录中,这样,开发者直接对这目录中的文件打包,即可发布使用。

来自:http://blog.csdn.net/coroutines/article/details/40891089

背景:安装软件包的时候,被我手动终止了,可能导致yum的数据库事务啥的存在问题:
问题描述:



1、前提条件:安装软件包的时候,被我手动终止了
[root@dhcp yum.repos.d]# yum clean all
rpmdb: Thread/process 4541/140619363587840 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 -  (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:
Error: rpmdb open failed
[root@dhcp yum.repos.d]# yum makecache
rpmdb: Thread/process 4541/140619363587840 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 -  (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

2、根据提示可以知道rpm数据库被损坏,如是按照下面的方法进行重建
[root@dhcp yum.repos.d]# cd /var/lib/rpm/
[root@dhcp rpm]# ls
Basenames     __db.004     Name            Pubkeys         Triggername
Conflictname  Dirnames     Obsoletename    Requirename
__db.001      Filedigests  Packages        Requireversion
__db.002      Group        Providename     Sha1header
__db.003      Installtid   Provideversion  Sigmd5
[root@dhcp rpm]# rm __db.* -rf
[root@dhcp rpm]# rpm --rebuilddb
[root@dhcp rpm]# yum clean all
Loaded plugins: aliases, changelog, downloadonly, kabi, presto, product-id,
              : refresh-packagekit, security, subscription-manager, tmprepo,
              : verify, versionlock
Updating certificate-based repositories.
Unable to read consumer identity
Loading support for Red Hat kernel ABI
Cleaning repos: rhel-source
Cleaning up Everything
0 delta-package files removed, by presto
[root@dhcp rpm]# yum update
Loaded plugins: aliases, changelog, downloadonly, kabi, presto, product-id,
              : refresh-packagekit, security, subscription-manager, tmprepo,
              : verify, versionlock
Updating certificate-based repositories.
Unable to read consumer identity
Loading support for Red Hat kernel ABI
rhel-source                                                | 4.0 kB     00:00 ...
rhel-source/primary_db                                     | 3.1 MB     00:00 ...
Setting up Update Process
No Packages marked for Update


来自:http://blog.sina.com.cn/s/blog_6fb8aaeb0101aegn.html
背景:在做zabbix的监控时候,用命名出现You have new mail in /var/spool/mail/root,一查是客户端的问题,因为一运行zabbix客户机上的脚本就出现这个,怎么屏蔽掉?

服务端:
zabbix_get  -s 10.72.2.XX -p 10050 -k "proc.num[nginx]"
addr:You have new mail in /var/spool/mail/root

客户端:
/usr/local/etc/script/nginx_status.sh active
1
You have new mail in /var/spool/mail/root

解决方法,步骤如下:

执行:
echo "unset MAILCHECK" >> /etc/profile
source /etc/profile

查看
ls -lth  /var/spool/mail/

清空:
cat /dev/null > /var/spool/mail/root

再实践一下,提示mail的话没了:
/usr/local/etc/script/nginx_status.sh active
1

最后,zabbix的客户端发现按要求无输出了,但是zabbix的服务端还有,也就是zabbix的服务端也需要按上面这种方法再执行一次就好了。EOF

摘自:http://blog.itpub.net/29819001/viewspace-1360978/
更多:
http://www.111cn.net/sys/CentOS/58857.htm

背景:这个buttonbar的功能主要是对一些经常执行又较长的一些命令进行浓缩,以更快捷的方式进行操作linux系统的shell。
经实践发现这个功能并不能批量,像view->command windows,里send command to all session,功能一样能批量给所有tab执行相同命令,但已经足够了。

http://jingyan.baidu.com/article/6b97984dce10981ca3b0bf45.html
RHEL/CentOS和Fedora


delete old vim rpm pkg:
yum remove vim*  -y

异步任务

以前在 Vim 里面调用外部一个程序(比如编译,更新 tags,Grep ,检查错误,git/svn commit)等,只能傻等着外部程序结束才能返回 Vim ,这也是 Vim 最受 emacs 诟病的地方,限制了很多可能性,导致NeoVim当年发布时,最先引入的新功能就是异步机制。如今 8.0中,可以在后台启动各种长时间运行的任务,并把输出重定向到 VimScript 里面的某个 callback 函数,和 nodejs的子进程管理模块类似,使得你可以一边浏览/编辑文件,一遍运行各种长时间编译类任务可以同时运行,并且把输出同步到 Vim 里的某个窗口中。

时钟机制

可以在 VimScript 中创建时钟,比如每隔100ms调用一下某个 VimScript 里面的函数,这样方便你定时检查各种状态,比如某项工作是否做完,或者某个与服务器的通信如何了。有这个机制配合 Python 可以实现纯脚本的终端,或者实现网络交互,实时读取一些股票信息并且显示在右下角之类的,这给 Vim 插件开发带来了更多可能性。

网络机制

可以用纯 VimScript + socket + json 和外部支持json的服务器进行通信,比如通知远程服务器做一件什么事情,或者查询个什么东西,不过使用 Timer + python 也可以达到同样的效果。
背景:第一次连接ansible的host里的一堆机器时,会出标题里面的错,解决办法如下:
vi /home/xiangdong/ansible/ansible.cfg
# uncomment this to disable SSH key host checking
host_key_checking = False
—————————————————————————————————————————
提示输入yes 进行确认为将key字符串加入到  ~/.ssh/known_hosts 文件中:
本篇就结合一个示例对其进行下了解。我在对之前未连接的主机进行连结时报错如下:

[root@361way.com ~]# ansible test -a 'uptime'
10.212.52.14 | FAILED => Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host.
10.212.52.16 | FAILED => Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host.
从上面的输出提示上基本可以了解到由于在本机的~/.ssh/known_hosts文件中并有fingerprint key串,ssh第一次连接的时候一般会提示输入yes 进行确认为将key字符串加入到  ~/.ssh/known_hosts 文件中。

方法1:

了解到问题原因为,我们了解到进行ssh连接时,可以使用-o参数将StrictHostKeyChecking设置为no,使用ssh连接时避免首次连接时让输入yes/no部分的提示。通过查看ansible.cfg配置文件,发现如下行:

[ssh_connection]
# ssh arguments to use
# Leaving off ControlPersist will result in poor performance, so use
# paramiko on older platforms rather than removing it
#ssh_args = -o ControlMaster=auto -o ControlPersist=60s
所以这里我们可以启用ssh_args 部分,使用下面的配置,避免上面出现的错误:

ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no
方法2:

在ansible.cfg配置文件中,也会找到如下部分:

# uncomment this to disable SSH key host checking
host_key_checking = False  
默认host_key_checking部分是注释的,通过找开该行的注释,同样也可以实现跳过 ssh 首次连接提示验证部分。由于配置文件中直接有该选项,所以推荐用方法2 。


来自:http://www.361way.com/ansible-cfg/4401.html
我们再来讲讲DSO动态编译的方法:
首先编译安装apache
tar zvxf apache_1.3.27
cd apache_1.3.27
./configure --prefix=/usr/local/apache --enable-module=so \
--enable-module=rewrite --enable-shared=max &&
make &&
make install
so模块用来提供DSO支持的apachehe核心模块,rewrite是地址重写的模块,如果不需要可以不编译
enable-shared=max是指除了so以外的所有标准模块都编译成DSO模块。

我尝试在fedora core 3中安装apache 2. 当我解压了apache 2.0.54后使用configure工具并且加入了 --enable-so 或者 --enable-modules=so (两个我都试过了)
去make并且make install了。我希望在/apache2/modules/目录里有各种模块,但是这个文件最后只包含了一个httpd.exp文件。 为什么?哪里出错了?
谢谢


Because you're just telling apache to enable the use of shared modules. You also need to tell it to MAKE the shared modules.

You can use these compile flags:
--enable-mods-shared='headers rewrite dav' (where you list the mods. you want)
--enable-mods-shared=most ( compiles "most" modules )
--enable-mods-shared=all ( compiles all modules )

因为你只告诉了apache可以使用共享模块。你还需要告诉它要MAKE共享模块

你可以使用如下的这些编译标志
--enable-mods-shared='headers rewrite dav' (凡是你想编译的模块都可以写到后边的引号里面,以空格分隔)
--enable-mods-shared=most (编译最多的模块)
--enable-mods-shared=all (编译所有模块)
动态编译还是静态编译的效率问题:http://jackxiang.com/post/4029/
来自:http://m.blog.csdn.net/article/details?id=6977466
我们再来讲讲DSO动态编译的方法:
首先编译安装apache
tar zvxf apache_1.3.27
cd apache_1.3.27
./configure --prefix=/usr/local/apache --enable-module=so \
--enable-module=rewrite --enable-shared=max &&
make &&
make install
so模块用来提供DSO支持的apachehe核心模块,rewrite是地址重写的模块,如果不需要可以不编译
enable-shared=max是指除了so以外的所有标准模块都编译成DSO模块。
分页: 4/22 第一页 上页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]