例如:
lijunjie 3074 web 3u sock 0,4 0t0 45174 can't identify protocol
看了一下mongo-1.1.4的源代码,发现在函数php_mongo_connect_nonb(...)中,socket产生的fd,在connect(或因别的错误)出错时,直接return false; 没有close, 所以才出现这种情况。
先修改了一下代码,然后再给官方提个bug吧
按说socket产生的时候都已经指定了sock类型的,所以似乎不需要显示成“can't identify protocol”
相关资料:http://kasicass.blog.163.com/blog/static/3956192010101994124701/
我想大概这样可以:
我们知道linux上到可执行文件到属主有一个s位,则该文件就可以seteuid到该用户到权限来做事情,于是写如下测试脚本:
====== agent.c=========
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(int ac, char ** av) {
seteuid(0);
printf("%d", geteuid()); // 返回0
// 这里干活就是root的身份了
return 0;
}
========================
编译文件:
gcc -o agent agent.c
生成文件:
-rwxr-xr-x 1 root root 7213 2011-06-13 00:02 agent
修改文件属性:
chmod +s agent
-rwsr-sr-x 1 root root 7213 2011-06-13 00:02 agent
执行agent:
./agent
0
返回结果为0,说明提升权限成功了
------------------------------
问题: 按说如果添加来s位,则非属主用户不应该有写权限,换言之,如果非属主用户有来写权限,则s位应该无效;但事实上, chmod a+w agent 后,提升权限还是成功来,为什么?
sar -q 5 0
2. 查看历史负载状况
sar
tail -f file.txt | grep something --line-buffered
为了监控服务器性能
写了个shell脚本,监控服务器的:CPU、MEM、磁盘IO、负载四个指标
记录下来,以备不时之需
sar安装方法:
yum install sysstat
脚本内容如下:
#!/bin/bash
if (( $# != 2))
then
echo "usage:num1-Please enter the number of script. execution"
echo "usage:num2-Please enter a value for rest time"
exit 1
fi
sar -d 0 | head -3 | tail -1 > dev8-0.log
sar -u 0 | head -3 | tail -1 > cpu.log
sar -r 0 | head -3 | tail -1 > mem.log
echo "" > loadAverage.log
for ((i=1;i<=$1;i++))
do
sar -d 1 | grep dev8-0 | grep -v Average >> dev8-0.log
sar -u 1 | head -4 | tail -1 >> cpu.log
sar -r 1 | head -4 | tail -1 >> mem.log
monitorDate=`date +'%F %T'`
load=`w | grep 'load average' | awk -F ',' {'print $4,$5,$6'}`
echo $monitorDate $load >> loadAverage.log
sleep $2
done
脚本使用方法:
chmod +x monitor.sh(脚本名)
./monitor.sh 5 1
每1秒记录监控数据一次,共记录5次
注:每次运行脚本时,会把上一次的日志清空;
脚本内容解释:
sar -d 1:打印磁盘IO信息,采样间隔1秒
sar -u 1:打印CPU信息,采样间隔1秒
sar -r 1:打印MEM信息,采样间隔1秒
然后再利用一些grep/head/tail/awk等命令取得想要的部份信息;
(使用过程中发现,采样间隔使用0秒时,会出现打印出来的CPU和磁盘IO信息全一样,MEM会有所不同。。。)
脚本运行结果:
./monitor.sh 5 1
运行后,当前目录下会生成下面几个日志文件:
# cat cpu.log
02:21:24 PM CPU %user %nice %system %iowait %steal %idle
02:21:24 PM all 0.89 0.05 1.29 0.23 0.00 97.54
02:21:25 PM all 0.89 0.05 1.29 0.23 0.00 97.54
02:21:26 PM all 0.89 0.05 1.29 0.23 0.00 97.54
02:21:27 PM all 0.89 0.05 1.29 0.23 0.00 97.54
02:21:28 PM all 0.89 0.05 1.29 0.23 0.00 97.54
%user 在用户模式中运行进程所花的时间
%nice 运行正常进程所花的时间
%system 在内核模式(系统)中运行进程所花的时间
%iowait 没有进程在该CPU上执行时,处理器等待I/O完成的时间
%idle 没有进程在该CPU上执行的时间
#cat mem.log
02:21:24 PM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
02:21:24 PM 2884304 1267572 30.53 335216 795552 2048248 0 0.00 0
02:21:25 PM 2884428 1267448 30.53 335216 795552 2048248 0 0.00 0
02:21:26 PM 2884428 1267448 30.53 335216 795552 2048248 0 0.00 0
02:21:27 PM 2884428 1267448 30.53 335216 795552 2048248 0 0.00 0
02:21:28 PM 2884552 1267324 30.52 335216 795552 2048248 0 0.00 0
kbmemfree 空闲内存大小
kbmemused 内存使用量大小
%memused 内存使用量百分比
kbbuffers 内存buffers大小
kbcached 内存cached大小
kbswpfree 空闲swap大小
kbswpused swap使用量大小
%swpused swap使用量百分比
# cat dev8-0.log
02:21:24 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
02:21:24 PM dev8-0 0.92 0.22 27.83 30.47 0.02 19.40 6.18 0.57
02:21:25 PM dev8-0 0.92 0.22 27.83 30.47 0.02 19.40 6.18 0.57
02:21:26 PM dev8-0 0.92 0.22 27.83 30.47 0.02 19.40 6.18 0.57
02:21:27 PM dev8-0 0.92 0.22 27.83 30.47 0.02 19.40 6.18 0.57
02:21:28 PM dev8-0 0.92 0.22 27.83 30.47 0.02 19.40 6.18 0.57
DEV sar命令正在监视的块设备的名字。
tps 每秒传输数(或者每秒IO数)
rd_sec/s 每秒512字节读取数
wr_sec/s 每秒512字节写入数
%util 设备饱和度时,会发生此值接近100%。
# cat loadAverage.log
2010-09-16 14:21:24 load average: 0.14 0.14 0.15
2010-09-16 14:21:25 load average: 0.61 0.23 0.18
2010-09-16 14:21:26 load average: 0.61 0.23 0.18
2010-09-16 14:21:27 load average: 0.61 0.23 0.18
2010-09-16 14:21:28 load average: 0.61 0.23 0.18





2011/06/14 14:31 | 
