杂七杂八

记录一下,方便自己查阅 


1,yum安装出现
Package fuse-exfat-0.9.7-1.fc16.i686.rpm is not signed
2,五笔输入法
Smart Common Input Method platform 1.4.0
rpm -qa | grep scim
scim-libs-1.4.4-44.el5
scim-tables-0.5.6-7
scim-bridge-gtk-0.4.5-9.el5
scim-bridge-0.4.5-9.el5
scim-chinese-standard-0.0.2-1.el5
scim-bridge-gtk-0.4.5-9.el5
scim-1.4.4-44.el5
scim-pinyin-0.5.91-16.el5
scim-tables-chinese-0.5.6-7
scim-chewing-0.3.1-11.el5
scim-libs-1.4.4-44.el5
----------------------
2012.04.27
1,watch 的用法
2,uuid的意思
3,quota,raid

---------------------
2012.05.07
1,用sshd_config改端口为什么 不用改services
2,centos6为什么 通过更改xinetd和services端口后连不上。
3,centos6里面为什么没有dump。默认未安装?
kill -HUP `cat /var/run/sshd.pid` 重启sshd服务。
提示找不到库文件,可以用
cat /usr/local/lib >> /etc/ld.so.conf
ldconfig

---------------------
20120508
1,acl能够对ftp支持吗?
2,不同系统采用的时间格式不同。如果修改?centos6为PDT,rhel5为CST。
3,cat /etc/vsftpd/vsftpd.conf | grep -v ^#| grep -v ^$ 表示去掉#号及空行。
spawn 触发进程。
4,/lib/security/ pam模块。 /etc/pam.d  高级安全设置。
5,EOF end of file
passwd -u sun <<EOF
123
123
EOF
--------------------
20120509
1,tail -f /var/log/secure 实时监控
2,在安装了named之后,主dns服务器不能上网,而配置的辅助dns可连接外网,但DNS仅采用主机本身的地址。客户端用辅助DNS却可以解析外网的地址。?
3,IN NX 后面到底填什么 ? 填 IP可以。如果填主机名(不与域名相同)是否也可以?记得后面一定要加. 如果定义域名为sun.com
IN NX centos 则会被认为是centos.sun.com.
IN NX centos.则会被认为是centos.
4,反向解析的意义? 
5,配置 * 泛解析时,为什么dns总将未知的主机解析为 216.34.94.184这个地址。而不是配置文件中指定的地址?
6,配置主从DNS时,如果时间不对会出现什么后果?

-------------------
20120510
1, echo $[2**13-2]
计算2的13次方减2。
-------------------
20120511
lsof -i:80  查看80端口所开启的进程?
[root@station153 ule]# lsof  -i:80
COMMAND  PID   USER   FD   TYPE DEVICE SIZE NODE NAME
httpd   5267   root    3u  IPv6  49525       TCP *:http (LISTEN)
httpd   5268 apache    3u  IPv6  49525       TCP *:http (LISTEN)
httpd   5269 apache    3u  IPv6  49525       TCP *:http (LISTEN)
httpd   5270 apache    3u  IPv6  49525       TCP *:http (LISTEN)
httpd   5271 apache    3u  IPv6  49525       TCP *:http (LISTEN)
httpd   5272 apache    3u  IPv6  49525       TCP *:http (LISTEN)
httpd   5273 apache    3u  IPv6  49525       TCP *:http (LISTEN)
httpd   5274 apache    3u  IPv6  49525       TCP *:http (LISTEN)
httpd   5275 apache    3u  IPv6  49525       TCP *:http (LISTEN)

httpd -l 查看apache启动的模块。
主域和子域能够在同一台主机上吗?

查看yum.log。将原来yum删除的包再次装回来。cut 以空格为基准,截取第五列字符。然后将截取的字段作为yum install的值执行安装 。
tail -11 /var/log/yum.log | cut -d "" -f 5 | xargs yum install
---------------------
20120515
/etc/resolv.conf 不能更改,每次更改后被自动改回来。用什么 命令能够实时监控/etc/resolv.conf的变化?或者监控networ进程。
--------------------
env查看全局变量
set查看全局变量和自定义变量 ,自己定义的变量用set能看,用env看不到。
改默认语言 vi /etc/sysconfig/i18n
[root@station153 test]# cat /etc/passwd |grep ^a:
a:x:516:524::/home/a:/bin/bash
[root@station153 test]# cat /etc/passwd |grep ^a:|cut -d":" -f 6
/home/a

``  $() 执行符
$(())  $[] 运算符
echo $(($(date +%s)/86400))
grep pam * 查看当前目录下的有pam字段的文件并显示出来。
$? 显示上一条命令是否成功。0成功。
$$
[root@station153 Desktop]# cat /etc/passwd | awk -F: '$3>499 {print $1}'
[root@station153 Desktop]# sort -t ":" -k 3 -n /etc/passwd

[root@station153 Desktop]# cat /etc/passwd |cut -d ":" -f 7|sort |uniq -c|sort
man test 

-------------------------
echo -en "$i\t*\n" -e使打印制表符和换行第一次。-n横着打,默认是竖的。

-------------------------
dd if=/dev/zero of=/dd.img bs=512k count=1 seek=4000000 创建ls显示2t的文件。du显示实际大小。

find /usr/share/man -iname "pam_*time*" 查找与时间相关的pam模块。
find /usr/share/man -iname "*iptables*"  忽略大小写寻找iptables的帮助
ldd /bin/login | grep pam  查看是否支持pam模块。
/var/log/btmp 登录失败 lastb
/var/log/wtmp 登录成功 last
/var/log/lastlog 每个账号最后登录成功时间 lastlog
logwatch 日志分析软件
nagios cacti  如果2000台电脑如何批量安装?监控软件是工作中必需的
nginx

-----------------------
tcpdump
tcpdump -n arp and ! host 192.168.20.1  抓取arp包,不抓取192.168.20.1的arp包。
1 如何查看某个软件曾经的编译参数?或者以前的编译日志?
2
nginx在编译时未指定with-http_stub_status_module参数,导致不能被监控,能否在不重新编译的情况下使之支持监控功能?

------------------------
20120702

mpstat -P ALL 2 查看多核心cpu的使用状态。
top shift+f 按内存排序
sar 首次运行时是显示的从开机到当前时间系统的平均消耗值。
用dd 和 iostat显示的写入速度不同,前者显示266mb/s,后者50mb/s,因为系统会先将数据写入内存cache中,然后再慢慢的由内存写入到硬盘中,导致显示的速度不同。可以用free来查看cache,此时cache值会非常大。如果要磁盘实时写入,要用mount -o sync参数来指定实时同步。这时候dd和iostat显示的速度会相同。
./iopp -i -p -k 5 显示哪些程序在使用磁盘。
系统开机太久后,会发现可用内存会越来越小,即便把所有打开的程序都关闭,也无法回到开机状态前的内存大小,这是由于即使你关闭了程序,系统仍然会把释放出来的内存加载到cache中保留下来,以便下次打开同一项目时能够立即从内存中调用,从而加快访问速度,因此给人的感觉就是内存越来越小,但实际上如果你打开其它程序时,内存会将cache中的保留一部分内存调用给新程序。所以其实内存是没被程序用完的。判断内存是否够用,只需要看swap分区是否已经大量使用,只要内存有空闲的,就不会大量调用swap分区。
------------
一般web服务器会调为deadline,以提高Io性能。可以通过查看。。。。
[root@station153 ~]# cat /proc/net/dev | grep eth0 | awk '{print $1}' | cut -d: -f 2
25283712
查看到目前为止eth0所接收到的字节数。
[root@station153 ~]# cat /proc/net/dev | grep eth0 | awk '{print $1}' | cut -d: -f 2
28073406
两秒后再次查看
[root@station153 ~]# echo $[(28073406-25283712)/2]
1394847
计算每秒接收数据包数。

用iptraf -i eth0可以查看网上实时流量,某个端口的实时流量,和某个Ip通信的实时流量。很好的查看流量工具。需要安装iptraf软件包,系统不自带。

watch ifconfig | grep "RX packet" 实时查看网卡所接收到的数据包。
ifup eth0 与ifconfig eth0 up 的区别在于ifup在启动时会重新读取配置文件来激活网上。

---------------
20120704
cal +1显示一年的日期
awk
 /usr/local/mysql/bin/mysqld --verbose --help | grep sync -A 5 -B 5
----------
20120705
如果列比较复杂的话,建立索引会耗费很多资源,建议空闲时再建立。
1,当缓存满后,冷门索引缓存是否会被清除的问题。
在一个已经建好的数据库中,如果要在原有的基础上重新规划数据文件,ll -h ibdata1显示的文件大小可能和我们my.cnf预设值不同。这时启动时会报错。如果数据太大,可能会造成ll -h ibdata1显示大小不太精准。而这时我们如果用系统显示的大小来指定在my.cnf中就会报错,提示大小不符。这时候,我们应该从错误日志中显示的页数来计算出数据库每一页代表的实际数据大小,再根据提示的页数来计算出数据文件的精确大小。
set commite=0 关闭自动提交。
事务的隔离性,一边在一个表中插入数据后,要用commit来提交,将日志缓冲区里面的记录添加到日志文件中。然后由日志文件写入到数据文件中。而另一个终端在当前事务处理完之前是无法看到插入的数据的,这时候也要用commit来提交当前事务,才能看到新插入的数据。
strace 跟踪某一进程执行情况。

如何查询我的某条查询记录调用了索引缓存呢?

----------------
20120707
做主从时,将主的数据导入后发现登录密码仍然不是主的密码,这时候需要用flush来刷新权限表才行。
导入数据时,为了加快速度,关闭自动提交事务。autocommit=0。针对虚拟机的情况设置好总的内存占用情况。默认128M可以改小点。将日志记录模式改为0,即1秒同步一次,默认是1,为0性能最好。
relay_log_file记录从主下载回来的日志并且执行的记录。
exec_maser_log_pos 953 表示从已经执行到主的953pos位置了。可以stop slave sql_thread 来停止掉这个线程,这时候就会出现exec_master_log_pos和read_master_log_pos不一致的情况。
连接不上,先确定是不是账号问题。 通过远程登录来查看。
updatadb

为什么从Mysql服务器不会写数据进去?是怎样实现的?

---------------
20120709
set
用grant all on root@'10.1.1.%' identified by '123' 给root授权的权限是不完整的,在mysql.user的grant_priv列属性为n,即没有新授权给其它人的权限。要手动修改。
如果在my.cnf中未添加skip-name-server选项,用授权的root用户远程登录主机时可能会用很长时间,因为这时候系统会将ip地址逆向解析为主机名,而网络中又没有dns能解析主机名,所以就会一直寻找,导致登录很慢。
-------------------
20120710
nfs在超过四个用户同时使用时 nfs容易造成死锁,性能便会急聚下降,实际环境中不用nfs来做共享存储。
ssh 10.1.1.153 -x 可以调用远程图形界面。
网络安装系统时,由网络引导后进入到dhcp自动分配界面时一直停在那获取不到IP地址,这时候可以将网线接到另一个网络接口再自动获取即可。
安装系统时,系统进入到加载内核界面后一直卡在那,无法进入图形界面进行下一步选择,这时候可以将bios完全放电后再安装即可。
--------------------
20120712
rhel6分区后要重新,直接partprobe不建议。
iscsid负责发现目标。iscsi进程负责自动登录发现的目标,默认是开机启动的。目标连接的顺序会影响生成设备文件名。如果用虚拟机做服务端,那么客户端开机时iscsi进程会一直寻找目标。会造成开机卡住等待很久。
/sys/class/net
/etc/udev/
lspci |grep -i eth 查看内存检测到pci上插了哪些网上。
--------------------
20120713
--------------------
20120713
注意在hosts文件中最上面的127.0.0.1这一行不要将自己的主机名加入进去。否则会造成主机名被自动解析为环回地址,导致你配置的ip无法和主机名匹配。另外,不要将最上面两行ipv4,ipv6对应的环回地址和主机名的对应关系删除,否则会造成很多应用程序故障。
做集群的时候一定要在host中添加主机名和ip的对应关系。
集群时另一边看不到逻辑卷的变化,service clvmd restart。
不要用nfs来挂mysql数据库,不然一台mysql出故障后,会将数据库锁住,这样其它上线的服务器就无法使用数据库了.无法顺利切换.
[root@rhel51 /]# lvcreate -n webdata -L 2G webroot
  /dev/cdrom: open failed: Read-only file system
  Error locking on node rhel51.sun.com: device-mapper: create ioctl failed:
Device or resource busy
  Failed to activate new LV.

ot@rhel51 ~]# lvcreate -n webdata -L 2G webroot
  connect() failed on local socket: No such file or directory
  Internal cluster locking initialisation failed.
  WARNING: Falling back to local file-based locking.
  Volume Groups with the clustered attribute will be inaccessible.
  Skipping clustered volume group webroot
-----------------------
20120718
记得一定要用域名访问来安装phpwind.因为安装时会根据你的访问地址来做一些设定.如果用ip,以后采用轮循机制来访问时,由于页面被请求到另一个ip,而这时候安装时的问题就出现了.
在站点设置,站点信息里面的站点信息将是ip地址.
必需先在一台机上安装好网站后再同步过去再开启调度.不然由于调度问题会导致两台机器数据不一致.可能在访问的时候不会报错,但实际上当一台出故障后问题就会突显出来.
在用iscsi时,要记住用集群文件系统来挂载,不要用单机文件系统.
高可用中备用节点为什么要干掉故障节点?为了防止资源争用及ip冲突之类的事件发生,一般会配备电源设备,备节点会发送信息给电源设备让故障节点断电或重启.
不要用nfs来做mysql的共享存储
部署mysql共享存储可采用gfs2和ext3文件系统.因为根据mysql的执行原理,同一时刻只允许一台mysql对数据库进行连接操作.相当于单机使用.但ext3文件系统不能出现脑裂现象,否则容易造成数据损坏甚至是文件系统损坏.但相比于gfs2效率更高.gfs2可避免脑裂现象造成的数据损坏等问题.但执行效率更低.
-------------------------
20120719
在配置红帽rhcs套件时要注意的一些问题
relocated当节点发生问题时,马上将节点资源让给其它机器.restart在节点出现问题时,先偿试重启服务看是否正常,然后才考虑是否让出资源.
启动集群时要依次同时启动!因为如果在实际应用中,如果启动了一台集群结点,而另一台迟迟不启动,这时启动的节点就会认为另一台节点已经出现故障,于是会给电源设备发送爆头信号,让电源管理器去关闭另一个故障节点,这样一来另一台机器就会在未启动完毕之前就被错误的断电了.
config_level每改动一次就会加一,系统会同步编号最大的配置文件到所有机器.
用ip addr来查看浮动ip.而不是用ifconfig来看.
restrict failover to this domains members
勾选后表示当一个故障域内的所有节点都故障时,不允许将资源转交给其它外部域的节点.一般不勾选.
prioritized list表示级别,优先运行级别较高者.
 

a=12
b=24
echo $((a+b))
expr $a + $b   ---$a + $b 三个参数之间必须有空格!
let c=$a+$b
let c++   就是c+1
let c=c+1
系统中是存在[这个命令的,所以在[ a b ]里面的值一定要有空格。
which [
程序执行后的反回码是$? 成功0 失败非零
read -p "please input year"year  -----这是错误的,year一定要有空格!不然会和前面是一个整体,而不是一个变量
!$ 上个命令的最后一个参数。  $?代表上次命令执行的返回值,成功0    $0代表脚本执行的路径。 $$当前进程的pid。
basename只获取执行的脚本名,而不取脚本绝对路径。
exit 2代表控制退出时的返回码。可以用echo $?来查看上次返回码。如果直接exit,那返回码就是0
seq 10 20 生成10-20的列表。
echo -e 让\n \t之类的生效。-n不换行
read -n 1 只允许输入一个字符。
for var in "$path"/*  这样$var是绝对路径。
可用mktemp来生成临时文件。 
wc 统计字符会将空格,换行符等都算进去。echo  /echo -n用wc统计就会有区别
 while :; do  ntpdate 10.1.1.22; sleep 2; done
 :是一个内建命令,代表永真。while ture /while :一样。
 如果脚本中有exit命令。用sh . / 来执行会直接关闭终端窗口。用./的形式不会。
echo "abcd!"这样会报错。注意,在 !  后面不能直接接 " 号,要解一个空格再"号。如 echo "abcd! "才是对的。
/var/run下面存放的服务启动后的进程号等。
文件名如果有.sh的后缀,那么用vim的时候就会有颜色语法检测,如果没有.sh,就没有。
--------------
man ls
XXX WARNING: old character encoding and/or character set
---------------
小数计算:
echo "scale=6;2.5*3.4" | bc
显示小数位后6为。
echo   | awk '{print 2.3*3.4}'
可以用{}将整个脚本括起来,然后输出到一个文件。这样就是将脚本里面执行的所有结果输出到那个文件里面。
awk 'NR=4 {print $0;exit}' /etc/passwd  这样就是当打印了第4行后就退出awk的循环。
awk 'NR=4 {print $0}' /etc/passwd 也是只打印第4行,但是在打印了第4行后awk还会继续执行第4行以后的所有行才会退出。
两者虽然结果一样,但在执行大量行的处理的时候,前者的效率会高很多。
多次用 | 来执行awk 的效率是非常不好的。

-----------------
sed -n -e '/^bin,/^daemon/p' /etc/passwd
这个代表如果找到以bin开头的行就打印,以daemon结尾的时就终止打印。所以如果遇到一行一bin开头,但之后没有daemon的开头的行,就会一直打印到文件最后一行!
a=(a b c d)
echo ${a[0]} 为a
echo ${a[1]} 为c
--------------------
查找满足$beforeday变量,且有iptables-restore字符串的行并删除!让Sed同时满足多个条件
sed -i "/$beforeday/{/iptables-restore/d}" /etc/crontab
用sed命令插入内容到指定行中。
sed -i "/RH-Firewall/a -A INPUT -s $denyip/32 -p tcp -m tcp --dport 22 -j DROP"
将防火墙规则添加到RH-Firewall这一行之下。
Sed -i '$a down' aa 在文本的最后一行之后添加down。
Sed -i '$i up' aa 在文本的倒数第二行添加up.
-------------------
20120829 
查询当前目录下所有文件,但排除aa文件夹及其子目录。
 find . -path ./aa -prune -o -path "*" -print
find . -path ./aa -prune -o -print
在-prune左边的部分代表是要排除的部分。使用-prune一般要配合使用-o。-o后面接需要筛选的的条件部分。第一条的-path "*"即表示执行的第二个条件。这个条件也可以不写,那么即代表显示排除条件之外的所有结果(如第二条命令)。-print打印出符合-o选项右边条件的结果。
注意:
1,-path ./aa 不能写成 -path aa 这样显示结果会失效。仍然将aa及其子目录打印出来了。要么就写成 -name aa 。实验证明-name aa 和 -path ./aa的效果是一样的。都是将aa目录及其子目录和文件排除掉。
2,不能掉了 -o 如果直接不加-o,这样会把prune需要排除掉的目录打印出来。这里结果就会打印aa。
[root@client32 test]# find . -path ./aa -prune  -perm -u=x  -print
./aa
3,不能掉了-path,在-o后如果什么都不加,会直接报错,说-o后面必需加条件。如果-o后面加了其它参数,但最后没加-path的话,会直接把-o左右两边的结果全打印出来,如:

[root@client32 test]# find . -path ./aa -prune -o -perm -u=x
.
./del.sh
./denyhosts.sh
./test
./aa
./.gnome2
./tmp.QofU8KQhVD
[root@client32 test]# find . -path ./aa -prune -o  -perm -u=x  -print
.
./del.sh
./denyhosts.sh
./test
./.gnome2
./tmp.QofU8KQhVD
find . -path  ./aa -prune -o  \( \! -path ./test/* -print \)
表示排除aa目录及其所有子目录文件,并排除test目录下所有文件,但不排除test文件夹本身。

查询当前系统所有用户特权位为s的命令。如下:
[root@client32 test]# find / -perm -u=s
find: &ldquo;/proc/4729/task/4729/fd/5&rdquo;: 没有那个文件或目录
find: &ldquo;/proc/4729/task/4729/fdinfo/5&rdquo;: 没有那个文件或目录
find: &ldquo;/proc/4729/fd/5&rdquo;: 没有那个文件或目录
find: &ldquo;/proc/4729/fdinfo/5&rdquo;: 没有那个文件或目录
/usr/sbin/suexec
/usr/sbin/usernetctl
这时候会看到前面扫描了一些/proc下面的目录,而我们想将/proc目录给排除掉,那么可以这样做:
[root@client32 test]# find / -path /proc -prune -o -perm -u=s -print
/usr/sbin/suexec
/usr/sbin/usernetctl
这样就可以完全的略过proc目录了!

----------------------------
20120829
注意赋值给变量和重定向到文件的区别!!
test1=`find / -path /proc -prune -o -perm -u=s -print`
find / -path /proc -prune -o -perm -u=s -print > test2
echo $est1 会发现$test1中所有值都在一行显示,并未换行。
cat test2 会发现test2中一行一个值。
那么如果将它们赋值给for变量时,就会出现截然不同的结果。如下:
#!/bin/bash

if [ ! -e first ];then
find / -path /proc -prune -o -perm -u=s -print > first
echo "first execute the scripts! "
exit
else
find / -path /proc -prune -o -perm -u=s -print > second
fi
for i in `cat second`
        do
        ls  "$i"
        break
        done

执行结果为

 

[root@centos58 test]# ./test.sh 

/bin/umount

 

如果将代码改为

if [ ! -e first ];then

find / -path /proc -prune -o -perm -u=s -print > first

echo "first execute the scripts! "

exit

else

second=$(find / -path /proc -prune -o -perm -u=s -print)

fi

 

for i in "$second"

        do

        ls  "$i"

        break

        done

 

 

则执行结果为

[root@centos58 test]# ./test.sh 

ls: /bin/umount

/bin/ping6

/bin/mount

/bin/ping

/bin/su

.......

 

由上可知
当重定向到文件时,for会一行一行的读取文件内的值.即第一次的值为第一行/bin/umount.这时候的$i为/bin/umount.
当赋值为变量时,for会直接把find找到的全部值一次性读取进来!这时候的$i为/bin/umount /bin/ping6......

-------------------------------
20120830
 echo "你好" | mail -s "中文测试" [email protected]  <------中文乱码
sendmail在发送邮件的时候,无论标题还是正文,只要输入中文就会出现乱码的现象。即便把系统语言设为了zh_CN.utf8/zh_CN.gbk等都无效。在网上参考了一段代码

echo "你好" | mail -s "=?UTF-8?B?`echo 中文主题test | base64`?=" [email protected]

通过测试正常!能够同时解决标题和内容乱码的问题!同时支持标题里面加入变量!

[root@centos58 test]# test=10.1.1.1

[root@centos58 test]# echo "你好" | mail -s "=?UTF-8?B?`echo "中文主题$test" | base64`?=" [email protected]

会发现收件人标题为&ldquo;中文主题10.1.1.1"!

---------------------------------
20120904 
一不小心删除了上面默认的gnome面板,重新手动添加后发现运行的其它程序最小化后无法自动最小化到上面的面板中,而是被隐藏了。解决办法貌似就是删除~/.gconf/apps/panel,再重启桌面就好了!以下是网上方法:
gconftool &ndash;recursive-unset /apps/panel --这一步好像可以不要
rm -rf ~/.gconf/apps/panel
pkill gnome-panel  ----我这样做无效。通过ctrl+alt+backspace重启gnome桌面后恢复了默认面板!

 ----------------------------------
20120905
今天遇到一同事的键盘超级奇怪。其它键都好好的,就是&ldquo;单引号/双引号&rdquo;那个键总是特别的奇怪,总是要按两次才会出符号,而且出的不是单引号,而是一个奇奇怪怪的符号,有点像&ldquo;`&rdquo;符号。开始以为是图形界面问题。遂切换到字符终端,问题依旧。后来又换了个键盘结果问题依然存在。远程ssh到他的机器上用我自己的键盘却什么问题也没有。后来想到了系统的键盘识别问题。于是找到键盘设置选项,在里面找到了他的键盘布局图,结果发现在他系统所选的键盘与我们的键盘布局不同,恰好那个&ldquo;键上的符号有四个!难怪打不出正确的符号的!于是更换了一下键盘型号,换成了标准美式键盘。再输入试试,一切正常!

编译安装php-5.3.6的时候,总是提示找不到xml2-config  libxml2文件。于是安装libxml2结果还是不行。原来是包没装全的问题。需要安装 libxml2  libxml2-devel这两个包才行。libxml2-devel这个包里面包含了xml2-config文件!

--------------------------------------------
20120907
make LDFLAGS='-L/lib64 -llibwebClient' 。LDFLAGS是Makefile中的一个参数
[root@localhost mx_net]# vim Makefile
LDFLAGS =
文件中LDFLAGS为空。所以在make的时候指定后会将=后面的参数传到Makefile文件中。
-L/lib64代表指定寻找路径为/lib64.注意-L后面不要有空格,有空格代表寻找当前当前路径下的lib64.
-lwebClient中-l代表-L后面指定的路径下的webClient.so文件,即/lib64下的webClient.so文件。
 

mysql> select * from mysql.db where db='extmail';
可以查看extmail数据库中有哪些授权用户。
 ---------------------------------------------
20120909
让securecrt vim支持颜色,修改option ---session option---emulation----terminal----xterm 再勾选ansi-color。然后在Linux终端定义export TERM=xterm-color即可!

 ----------------------------------------------

20120924
在执行grub-install --recheck /dev/sda的时候,要注意一定要有对应的fastab文件,这样系统才能找到你的分区结构,从而将grub顺利的安装在mbr中。

 ----------------------------------------------

20121011

MyEnTunnel 可以实现ssh代理登录

http://blog.163.com/a12333a_li/blog/static/875942852011676849638/

----------------------------------------------

20121018

php调试信息代码

 ini_set('display_errors', true);
  error_reporting(E_ALL);
 

----------------------------------------------

20121113

利用sshpass进行连接时,如果被连接的主机在know_hosts中没有相应的指纹记录,那么sshpass连接将失败,且没有任何报错!如下:

[root@centos582 ~]# sshpass  -f pass ssh 119.147.24.170
[root@centos582 ~]# sshpass  -f pass ssh 119.147.24.168
Last login: Tue Nov 13 20:14:46 2012 from 116.24.81.68
[root@localhost ~]#
170没有指纹记录,登录失败。168有指纹记录,登录成功。
为了避免上述情况,可以利用-o StrictHostkeyChecking=no 来避免第一次联机时进行主机指纹检测而导致登录失败的问题。如下:

[root@centos582 ~]# sshpass  -f pass ssh -o StrictHostkeyChecking=no 119.147.24.170    
Warning: Permanently added '119.147.24.170' (RSA) to the list of known hosts.
Last login: Tue Nov 13 16:47:06 2012 from 116.24.81.68
[root@localhost ~]#

登录成功,且永久的添加了主机的指纹信息。由于有了指纹信息,那么我们下次登录时,即使没有StrictHostkeyChecking=no 这个选项,也可以登录成功了!

----------------------------------------------

20121114

同步时间 ntpdate pool.ntp.org
二、修改时区不重启
可以用setup来设置。

也可以在root下
1、复制相应的时区文件,替换系统时区文件:
Linux代码

   1. cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime  

cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime


例如:
Linux代码

   1. cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime



2、将当前时间和日期写入BIOS,避免重启后失效
Linux代码

   1. hwclock

国内常用时间服务器

http://www.douban.com/note/171309770/

----------------------------------------------

20121119

截取带有\ ?的字段.以下都能截取到resource/open/js/。

i=web?\229?\137?\141?\231?\171?\175?\229?\188?\128?\229?\143?\145/share/resource/open/js/
echo $i |awk '{print substr($0,59)}'
echo $i |awk -F'(web)?(145)/share/' '{print $NF}'
echo $i |grep -Po '(?<=[/]...../).*'
echo 'web?\145/share/resource/open/js/'|awk -F 'web\\?\\\\145\\/share\\/' '{print $2}'


?=/代表匹配到最后一个/,.*前面的所有字符,.*(?=/)代表匹配到最后一个以/结尾的字符,并显示出最后一个/之前的所有字符,但不显示最后匹配的/本身

$echo "a/b/c/d/e" |grep -Po '.*(?=/)'

a/b/c/d


?<=/  和上面差不多,但把最后匹配到的/也显示出来了

$ echo "a/b/c/d/e" |grep -Po '.*(?<=/)'

a/b/c/d/


如果.*写在了后面,那么?<=/是直接匹配到最前面的/,并把最前面的/到后面的所有字符显示出来,但不显示最先匹配的/本身

$ echo "a/b/c/d/e" |grep -Po '(?<=/).*' 

b/c/d/e

$ echo "a/b/c/d/e" |grep -Po '(?=/).*' 

/b/c/d/e


?=后面也可以接多个匹配字符

[hponline@web1-hp ROOT]$ echo "ab/12/ab/23/ab/45/" |grep -Po '.*(?=ab)'

ab/12/ab/23/

[hponline@web1-hp ROOT]$ echo "ab/12/ab/23/ab/45/" |grep -Po '.*(?<=ab)'

ab/12/ab/23/ab


----------------------------------------------

20121207

apache虚拟主机问题

NameVirtualHost 134.159.152.188:80
<VirtualHost 134.159.152.132:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/extmail/html
    ServerName mail.moxian.com
    ErrorLog logs/error.log
    CustomLog logs/access.log common
    ScriptAlias /extmail/cgi/ "/var/www/html/extmail/cgi/"
    Alias /extmail "/var/www/html/extmail/html/"
    ScriptAlias /extman/cgi "/var/www/html/extman/cgi/"
    Alias /extman "/var/www/html/extman/html/"
</VirtualHost>

<VirtualHost 134.159.152.188:80>
ServerAdmin [email protected]
    DocumentRoot "/var/www/html/test"
    ServerName test.example.com
    ErrorLog "logs/dummy-bug-error_log"
    CustomLog "logs/dummy-bug-access_log" common
#    AddType application/x-httpd-php .php .phtml .php3 .inc
#    Alias /mantis/ "/var/www/html/mantis"
#    Options Indexes MultiViews Includes FollowSymLinks +ExecCGI
        <Directory /var/www/html/test>
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
        </Directory>
</VirtualHost>

注意以下一段不能少!如果没有这一段会导致虚拟主机配置一直不生效。默认只有第一个虚拟主机生效。

   <Directory /var/www/html/test>
        Options FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
        </Directory>
 

另外以下两个字段需要用ip:port。

NameVirtualHost 134.159.152.188:80
<VirtualHost 134.159.152.132:80>

 让apache支持php。必需打开以下字段

AddType application/x-httpd-php .php   <---不添加会把php当作文本来读出
AddType application/x-httpd-php-source .phps
LoadModule php5_module modules/libphp5.so   <---加载php模块。不加会直接下载php文件。

 

--------------------------------------------

2013.01.14

当svn仓库从一台服务器迁移到另一台服务器,或svn被重建后,uuid会改变。这时候客户端检出的目录全部都会变为不可用,提示&ldquo;版本库的 UUID&ldquo;cede6e67-1541-413b-b8f9-076e6d667c63&rdquo;与期望的 UUID&ldquo;2a47e0b5-6782-4c89-8daa-b908155b696b&rdquo;不匹配&rdquo; 。解决办法两种。
服务器端解决办法:
在服务器端查看svn仓库现在的uuid
svnlook uuid  /data/svn_files/mxuser/ 
cede6e67-1541-413b-b8f9-076e6d667c63
在服务器端修改svn仓库现有的uuid
svnadmin setuuid /data/svn_files/mxuser/  2a47e0b5-6782-4c89-8daa-b908155b696b
客户端重新检出,重新提交,重新更新

----------------------------------------------

2014.07.23

将日期转换为时间戳

# date +%s

1406102739

将时间戳转换为日期

# date -d "1970-01-01 UTC 1406102739 seconds"

Wed Jul 23 16:05:39 CST 2014

-----------------------------------------------

2014.08.15

md5sum 用于校验文件的完整性

# md5sum sersync2 

5c2461e0e3515a02b9fcbffe5a03852e  sersync2

将生成的md5值导入到aa.md5,以方便以后的比对

# md5sum sersync2 >aa.md5 

用当前目录下的sersync2文件和aa.md5文件里面的md5值进行对比

# md5sum -c aa.md5 

sersync2: OK

切换到root目录下,并对比root目录下的sersync2文件

# cd /root/

由于root下的sersync2文件被修改过,显示对比结果不匹配。

# md5sum -c /usr/local/sersync/aa.md5 

sersync2: FAILED

md5sum: WARNING: 1 of 1 computed checksum did NOT match

用--status来不显示对比结果,只显示命令返回值,成功为0,失败为1,适用于脚本中用于校验判断。

# md5sum -c --status -c /usr/local/sersync/aa.md5 

# echo $?

1


批量验证同步目录的文件是否全部正确

将当前目录下所有文件的md5进行统计输出到diff.md5

# find . -type f |xargs md5sum >diff.md5 

在同步目录执行md5sum校验同步文件的正确性

先将前面生成的diff.md5拷贝到同步机器上。

然后切换到同步过来的目录下,执行md5校验

# md5sum -c diff.md5 |grep -v OK

./diff.md5: FAILED

md5sum: WARNING: 1 of 2861 computed checksums did NOT match

校验结果显示,同步的文件中,diff.md5文件和原文件不一样,其它的文件均一致。

-----------------------------------------------

20140829

find查找非文件夹的文件

find . -type d -o -exec ls -l {} \;

find . ! -type d -exec ls -l {} \; 

find查找文件,如果是链接文件之类的则不会被查找出来

find . -type f -exec ls -l {} \;

更改当前目录下所有文件夹权限为770

find . -type d -name logs -exec chmod 770 {} \;

更改当前目录下所有非文件夹权限为660,但不更改前bin目录下的文件权限

find . -type d -path ./bin -prune -o -exec chmod 660 {} \;    

-----------------------------------------------

20140903

uniq -c 代表去重并统计重复行,重复的多行将会作为一行显示,且显示重复的次数。

uniq -u 代表去重,只会显示没有重复的行。

需要注意,这里的重复行是指连续的重复行,如果重复的行不连续,那么将不会被判定为重复行。

# cat aa

a

b

c

d

b

c

c

d

[root@source-hp tmp]# uniq -c aa

      1 a

      1 b

      1 c

      1 d

      1 b

      2 c

      1 d

先用sort排序,再用uniq来去重才能去掉所有不连续的重复行。

[root@source-hp tmp]# sort aa |uniq -c

      1 

      1 a

      2 b

      3 c

      2 d

用uniq -u将会只显示没有重复的行

[root@source-hp tmp]# sort aa |uniq -u

a


expect在执行脚本时,总是在前一条命令未执行完时跳到了下一条命令,这时候可以指定set timeout -1来让其永不超时。

-----------------------------------------------

你可能感兴趣的:(无)