http://www.cnblogs.com/skynet/archive/2012/11/28/2792503.html
Windows7系统如何调节屏幕亮度
方法一:
1、开始-控制面板
2、点击 系统和安全
3、点击 电源选项
4、拖动滚动条调节屏幕亮度
方法二:
也可以按Win+X组合键,显示器亮度:拖动滚动条调节屏幕亮度。
方法一:
1、开始-控制面板
2、点击 系统和安全
3、点击 电源选项
4、拖动滚动条调节屏幕亮度
方法二:
也可以按Win+X组合键,显示器亮度:拖动滚动条调节屏幕亮度。
Linux下telnet 如何退出
Php/Js/Shell/Go jackxiang 2014-1-1 21:24
背景:在Linux进行socket等编程,或对某些应用telnet时会出现直接quit退出无反应的情况,折腾了半天还没有退出telnet,于是有一个退出回话的键至关重要。
很简单:ctrl+],然后再输入q就可以退出了。.
root@192.168.137.128:~# telnet localhost 1987
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
你好
。。。//无反应
quit //也无法退出
^] //此时的退出方法:ctrl + ] 回车
telnet>
quit //退出会话了,再quit即可退出,也可直接输入q简写。
telnet> quit
Connection closed.
来自:http://www.cnblogs.com/hnrainll/archive/2012/02/04/2337928.html
参考:
http://blog.csdn.net/wei801004/article/details/4531664
http://www.baidu.com/link?url=qvpA6iPv82k_sInhXaU6hSCj45rQAQDfhmnNqZXhOduSeGwtk2yRu4H_Ee0zXMWT
很简单:ctrl+],然后再输入q就可以退出了。.
root@192.168.137.128:~# telnet localhost 1987
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
你好
。。。//无反应
quit //也无法退出
^] //此时的退出方法:ctrl + ] 回车
telnet>
quit //退出会话了,再quit即可退出,也可直接输入q简写。
telnet> quit
Connection closed.
来自:http://www.cnblogs.com/hnrainll/archive/2012/02/04/2337928.html
参考:
http://blog.csdn.net/wei801004/article/details/4531664
http://www.baidu.com/link?url=qvpA6iPv82k_sInhXaU6hSCj45rQAQDfhmnNqZXhOduSeGwtk2yRu4H_Ee0zXMWT
使用dmesg查看Linux IO占用较高的程序,它就是tail -f /var/log/messages。
Unix/LinuxC技术 jackxiang 2013-12-29 20:35
tail -f /var/log/messages
环境: Ubuntu
1. 开启IO监控
sudo sysctl vm.block_dump=1
2. IO监控开启后,系统将记录程序对所有硬盘块的访问,通过dmesg查看
dmesg
[442825.284270] mysqld(11600): READ block 6676888 on xvdb2 (8 sectors)
[442825.289893] mysqld(11600): READ block 11543240 on xvdb2 (8 sectors)
[442825.291317] mysqld(11600): READ block 11543248 on xvdb2 (24 sectors)
3. 使用awk汇总,得到占用磁盘最多的进程
dmesg |awk -F " " '{print $2}'|sort|uniq -c|sort -rn|head -n 100
1564 mysqld(11600):
994 python(11474):
302 nginx(6171):
136 mysqld(29743):
126 mysqld(15528):
71 ntpd(772):
62 mysqld(16837):
4. 调试完毕后,别忘了关闭IO监控。
sudo sysctl vm.block_dump=1
摘自:http://www.luochunhui.com/linux-io-dmesg/
参考:http://blog.slogra.com/post-317.html
实践:
[root@my htdocs]# vi /proc/sys/vm/block_dump
[root@my htdocs]# sysctl vm.block_dump=1
vm.block_dump = 1
[root@my htdocs]# dmesg |awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -n 10
195 ACPI
194 pci 0000
63 alloc kstat_irqs on node 0
53 pnp 00
48 ioatdma 0000
34 igb 0000
34 EDAC sbridge
29 flush-253
26 SRAT
24 pci_bus 0000
[root@my htdocs]# sysctl vm.block_dump=0
vm.block_dump = 0
环境: Ubuntu
1. 开启IO监控
sudo sysctl vm.block_dump=1
2. IO监控开启后,系统将记录程序对所有硬盘块的访问,通过dmesg查看
dmesg
[442825.284270] mysqld(11600): READ block 6676888 on xvdb2 (8 sectors)
[442825.289893] mysqld(11600): READ block 11543240 on xvdb2 (8 sectors)
[442825.291317] mysqld(11600): READ block 11543248 on xvdb2 (24 sectors)
3. 使用awk汇总,得到占用磁盘最多的进程
dmesg |awk -F " " '{print $2}'|sort|uniq -c|sort -rn|head -n 100
1564 mysqld(11600):
994 python(11474):
302 nginx(6171):
136 mysqld(29743):
126 mysqld(15528):
71 ntpd(772):
62 mysqld(16837):
4. 调试完毕后,别忘了关闭IO监控。
sudo sysctl vm.block_dump=1
摘自:http://www.luochunhui.com/linux-io-dmesg/
参考:http://blog.slogra.com/post-317.html
实践:
[root@my htdocs]# vi /proc/sys/vm/block_dump
[root@my htdocs]# sysctl vm.block_dump=1
vm.block_dump = 1
[root@my htdocs]# dmesg |awk -F: '{print $1}'|sort|uniq -c|sort -rn|head -n 10
195 ACPI
194 pci 0000
63 alloc kstat_irqs on node 0
53 pnp 00
48 ioatdma 0000
34 igb 0000
34 EDAC sbridge
29 flush-253
26 SRAT
24 pci_bus 0000
[root@my htdocs]# sysctl vm.block_dump=0
vm.block_dump = 0
背景:今天房东家的电脑出现:Error: Cannot Load file (Code: 5555H),通过N年前的Ghost光盘进行DH4(是一键划分成4个分区所用的Ghost 文件)进行分区也卡住了,时而出现文字输入都有问题。
出现错误提示error:cannot load file (code:5555h)。
1.在网上找了作为记录,输入 fdisk/MBR也不行:
出错原因:普通的Ghost 系统安装盘无法重建磁盘MBR(主引导记录),使得Ghost安装盘在一些带有隐藏分区的硬盘上无法加载文件!
解决方法:
用纯净的WindowsXP 原版安装光盘来分区并重装系统,该过程中会建立新的硬盘MBR。
2.进入xp PE后,也看不到硬盘。
最后,只能认定硬盘坏了,但是出现过一次在dos下可以看到内容,但是相当不稳定,听房东说其儿子时常在开机时断电源的情况,估计这样折腾多了,出了毛病罢。
出现错误提示error:cannot load file (code:5555h)。
1.在网上找了作为记录,输入 fdisk/MBR也不行:
出错原因:普通的Ghost 系统安装盘无法重建磁盘MBR(主引导记录),使得Ghost安装盘在一些带有隐藏分区的硬盘上无法加载文件!
解决方法:
用纯净的WindowsXP 原版安装光盘来分区并重装系统,该过程中会建立新的硬盘MBR。
2.进入xp PE后,也看不到硬盘。
最后,只能认定硬盘坏了,但是出现过一次在dos下可以看到内容,但是相当不稳定,听房东说其儿子时常在开机时断电源的情况,估计这样折腾多了,出了毛病罢。
PHP的Session数据同步问题
Php/Js/Shell/Go jackxiang 2013-12-27 14:21
近来公司某个域名流量大涨,发现一个外部QQ登录的接口经常失败,用户登录总是不成功。经过排查发现是登录的第一步需要保存一个token_secret。当时的程序员编写此代码时直接用了$_SESSION来保存token_secret。这里在并发量小时问题不大,并发大了之后极有可能会出问题。
假设A,B两个请求同时出发,A,B同时session_start,读取到了一个$_SESSION的值。当A完成请求写入$_SESSION,但B还没有完成请求,B完成请求后再写$_SESSION,就会覆盖A所设置的值。
类似的数据同步问题其实很多的,比如file_put_contents写PHP的Cache文件,如果不加LOCK_EX就可能会存在同步问题,当一个进程写file时,只写到一半有另外的进程去require此文件,这时就会因为文件不完整,导致PHP语法错误。所以涉及到同时读写同一个文件或数据时一定要加锁,否则在高并发的情况下会产生严重错误。
来自韩天峰兄弟的博客:http://rango.swoole.com/archives/74
假设A,B两个请求同时出发,A,B同时session_start,读取到了一个$_SESSION的值。当A完成请求写入$_SESSION,但B还没有完成请求,B完成请求后再写$_SESSION,就会覆盖A所设置的值。
类似的数据同步问题其实很多的,比如file_put_contents写PHP的Cache文件,如果不加LOCK_EX就可能会存在同步问题,当一个进程写file时,只写到一半有另外的进程去require此文件,这时就会因为文件不完整,导致PHP语法错误。所以涉及到同时读写同一个文件或数据时一定要加锁,否则在高并发的情况下会产生严重错误。
来自韩天峰兄弟的博客:http://rango.swoole.com/archives/74
Kiss - 用Php扩展实现的简单框架
Php/Js/Shell/Go jackxiang 2013-12-27 14:20
http://blog.chinaunix.net/uid-380521-id-2412387.html
http://www.wumii.com/item/A0g3IA7a
实践改写了一下:
http_status.sh
sites.txt
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
crontab:
#Add mytv's Log forbbiden PHP must be writeable error Test
59 23 * * * /bin/bash /home/xiangdong/crontab/mkdirMytvLogFolder.sh
0 0 * * * /bin/bash /home/xiangdong/curl_test_mytv/http_status.sh
___________________________________________________________________________________
在shell中使用curl命令,取得网站的http状态码。
例子:
调用示例:
附, Shell下curl的使用。
curl是一个访问url的工具,可以用他构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能。
当然curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。
本文只介绍下curl强大的HTTP功能。
通用语法:
curl [option] [URL...]
在处理URL时其支持类型于SHELL的名称扩展功能,如http://www.jbxue.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以生成多个期望的URL
curl的选项功能:
不带任何参数时 curl 将返回指定url中的数据并打印在屏幕上
-o out 将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件
-O 按服务器上的名称保存下载的文件
-r/--range from-to 下载指定range内的数据
-C 在保存文件时进行续传
-A/--user-agent <ua> 指定发送请求的用户代理,例如:curl -A My-Agent/1.0.0 www.jbxue.com
-x ip:port 指定使用的http代理,例如:curl -x 192.168.1.1:8080 www.jbxue.com
-D head.txt 将服务器的返回的header保存为文件,头部的cookie也可被保存,例如:curl -D header.txt www.jbxue.com
-c <file> 保存服务器的cookie文件
-b/--cookie <name=data> 向服务器提交cookie,若无=则name视为文件名,例如:curl -b cookie.txt www.jbxue.com
-e url 设置引用头的值
-T localfile 向服务器PUT文件 例如:curl -T 1.mp3 www.jbxue.com/upload.php
-d <key=value> 向服务器POST表单数据 例如:curl -d "order=111&count=2" http://www.jbxue.com/buy
-F <key=value> 向服务器POST表单,例如:curl -F "web=@index.html;type=text/html" url.com
如果希望从本地文件中获取表单数据,则在文件名前加@ ,例如:curl -d @data.xml http://www.jbxue.com
若希望从标准输入获取则用curl -d - http://www.jbxue.com
-E cert.pem 指定本地证书
-H <header:value> 为HTTP请求设置任意header及值。如curl -H "Connection:keep-alive" http://www.jbxue.com
-I 构造一个HEAD请求
-X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.baidu.com
--compressed 采用压缩方式接收返回数据
--connect-timeout <s> 设置超时时间
-v 详细输出,包含请求和响应的首部
--retry num
--retry timeo 指定重试的次数和间隔
--tcp-nodelay 打开TCP_NODELAY选项 不进行捎带确认
环境 变量:http_proxy [protocol://]<host>[:port]
来自:http://www.jbxue.com/article/curl_http_M1hclL89Ps3f.html
http_status.sh
sites.txt
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
http://127.0.0.1/mytv/
crontab:
#Add mytv's Log forbbiden PHP must be writeable error Test
59 23 * * * /bin/bash /home/xiangdong/crontab/mkdirMytvLogFolder.sh
0 0 * * * /bin/bash /home/xiangdong/curl_test_mytv/http_status.sh
___________________________________________________________________________________
在shell中使用curl命令,取得网站的http状态码。
例子:
调用示例:
附, Shell下curl的使用。
curl是一个访问url的工具,可以用他构造http request报文,且可以解析服务器返回的http response,额外还支持cookie特性,可以用curl完成web浏览器的基本功能。
当然curl还支持HTTPS/FTP/FTPS/TELNET/LDAP等协议。
本文只介绍下curl强大的HTTP功能。
通用语法:
curl [option] [URL...]
在处理URL时其支持类型于SHELL的名称扩展功能,如http://www.jbxue.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以生成多个期望的URL
curl的选项功能:
不带任何参数时 curl 将返回指定url中的数据并打印在屏幕上
-o out 将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件
-O 按服务器上的名称保存下载的文件
-r/--range from-to 下载指定range内的数据
-C 在保存文件时进行续传
-A/--user-agent <ua> 指定发送请求的用户代理,例如:curl -A My-Agent/1.0.0 www.jbxue.com
-x ip:port 指定使用的http代理,例如:curl -x 192.168.1.1:8080 www.jbxue.com
-D head.txt 将服务器的返回的header保存为文件,头部的cookie也可被保存,例如:curl -D header.txt www.jbxue.com
-c <file> 保存服务器的cookie文件
-b/--cookie <name=data> 向服务器提交cookie,若无=则name视为文件名,例如:curl -b cookie.txt www.jbxue.com
-e url 设置引用头的值
-T localfile 向服务器PUT文件 例如:curl -T 1.mp3 www.jbxue.com/upload.php
-d <key=value> 向服务器POST表单数据 例如:curl -d "order=111&count=2" http://www.jbxue.com/buy
-F <key=value> 向服务器POST表单,例如:curl -F "web=@index.html;type=text/html" url.com
如果希望从本地文件中获取表单数据,则在文件名前加@ ,例如:curl -d @data.xml http://www.jbxue.com
若希望从标准输入获取则用curl -d - http://www.jbxue.com
-E cert.pem 指定本地证书
-H <header:value> 为HTTP请求设置任意header及值。如curl -H "Connection:keep-alive" http://www.jbxue.com
-I 构造一个HEAD请求
-X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.baidu.com
--compressed 采用压缩方式接收返回数据
--connect-timeout <s> 设置超时时间
-v 详细输出,包含请求和响应的首部
--retry num
--retry timeo 指定重试的次数和间隔
--tcp-nodelay 打开TCP_NODELAY选项 不进行捎带确认
环境 变量:http_proxy [protocol://]<host>[:port]
来自:http://www.jbxue.com/article/curl_http_M1hclL89Ps3f.html
最近更新了腾讯qq,在连接手机进行adb调试的时候adb无法启动。原因就是qq有个安卓手机连接。打开任务管理器,找到tadb.exe。然后关掉。一切ok。
PHP实现Cookie共享及负载均衡的探讨。---From:PHP低级码农群
Php/Js/Shell/Go jackxiang 2013-12-19 16:43
expr 2 \* \( 3 + 4 \)
14
在Linux中,您可以使用`expr`命令执行数学表达式的计算,但是要注意Shell中的一些特殊字符可能需要转义。对于您提供的表达式`(3+2)*2`,可以按照以下方式计算:
```bash
expr \( 3 + 2 \) \* 2
```
在这个命令中,我们使用反斜杠字符`\`来转义括号和乘号,以确保它们被正确地解释为数学运算符而不是Shell的特殊字符。这将计算 `(3 + 2) * 2`,并输出结果 `10`。
另外,还可以使用更现代的数学计算工具,如`bc`,来执行更复杂的数学运算,这通常更易于使用和阅读。例如,使用`bc`可以这样计算:
```bash
echo "(3+2)*2" | bc
```
这将输出结果 `10`。
简单好用的计算器: bc
如果我想要使用简单的计算器呢?很容易呀!就使用 bc 即可!在输入 bc 之后, 显示出版本信息之后,就进入到等待指示的阶段。如下:
[root@linux ~]# bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. _<==这个时候,光标会停留在这里等待您的输入
事实上,我们是『进入到 bc 这个指令的工作环境当中』了! 就好象我们在 Windows 里面使用calc一样!所以,我们底下尝试输入的资料, 都是在 bc 程序当中在进行运算的动作。所以,您输入的资料当然就得要符合 bc 的要求才行! 在基本的 bc 计算器操作之前,先告知几个使用的运算子好了:
+ 加法
- 减法
* 乘法
/ 除法
^ 指数
% 余数 好!让我们来使用 bc 计算一些咚咚吧!
[root@linux ~]# bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 1+2+3+4 <==只有加法时 10 7-8+3+2 4 100*52 5200 10%3 <==计算『余数』 1 10^2 100 10/100 <==这个最奇怪!不是应该是 0.1 吗? 0 quit <==离开 bc 这个计算器
在上表当中,粗体字表示输入的资料,而在每个粗体字的底下就是输出的结果。 咦!每个计算都还算正确,怎么 10/100 会变成 0 呢?这是 因为 bc 预设仅输出整数,如果要输出小数点下位数,那么就必须要执行 scale=number ,那个 number 就是小数点位数,例如:
[root@linux ~]# bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. scale=3 <==没错!就这! 1/3 .333 340/2349 .144 quit
#Linux
来自:http://hi.baidu.com/huazhixu_127/item/f962c3d7f728cd2a38f6f7d5
Linux下的bc计算器移植到windows下:http://download.csdn.net/download/u012795832/6532695
阅读全文
14
在Linux中,您可以使用`expr`命令执行数学表达式的计算,但是要注意Shell中的一些特殊字符可能需要转义。对于您提供的表达式`(3+2)*2`,可以按照以下方式计算:
```bash
expr \( 3 + 2 \) \* 2
```
在这个命令中,我们使用反斜杠字符`\`来转义括号和乘号,以确保它们被正确地解释为数学运算符而不是Shell的特殊字符。这将计算 `(3 + 2) * 2`,并输出结果 `10`。
另外,还可以使用更现代的数学计算工具,如`bc`,来执行更复杂的数学运算,这通常更易于使用和阅读。例如,使用`bc`可以这样计算:
```bash
echo "(3+2)*2" | bc
```
这将输出结果 `10`。
简单好用的计算器: bc
如果我想要使用简单的计算器呢?很容易呀!就使用 bc 即可!在输入 bc 之后, 显示出版本信息之后,就进入到等待指示的阶段。如下:
[root@linux ~]# bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. _<==这个时候,光标会停留在这里等待您的输入
事实上,我们是『进入到 bc 这个指令的工作环境当中』了! 就好象我们在 Windows 里面使用calc一样!所以,我们底下尝试输入的资料, 都是在 bc 程序当中在进行运算的动作。所以,您输入的资料当然就得要符合 bc 的要求才行! 在基本的 bc 计算器操作之前,先告知几个使用的运算子好了:
+ 加法
- 减法
* 乘法
/ 除法
^ 指数
% 余数 好!让我们来使用 bc 计算一些咚咚吧!
[root@linux ~]# bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 1+2+3+4 <==只有加法时 10 7-8+3+2 4 100*52 5200 10%3 <==计算『余数』 1 10^2 100 10/100 <==这个最奇怪!不是应该是 0.1 吗? 0 quit <==离开 bc 这个计算器
在上表当中,粗体字表示输入的资料,而在每个粗体字的底下就是输出的结果。 咦!每个计算都还算正确,怎么 10/100 会变成 0 呢?这是 因为 bc 预设仅输出整数,如果要输出小数点下位数,那么就必须要执行 scale=number ,那个 number 就是小数点位数,例如:
[root@linux ~]# bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. scale=3 <==没错!就这! 1/3 .333 340/2349 .144 quit
#Linux
来自:http://hi.baidu.com/huazhixu_127/item/f962c3d7f728cd2a38f6f7d5
Linux下的bc计算器移植到windows下:http://download.csdn.net/download/u012795832/6532695
阅读全文
http://www.linuxidc.com/Linux/2013-02/79561.htm
mysql_get_host_info
mysql_get_host_info
(PHP 4 >= 4.0.5, PHP 5)
mysql_get_host_info -- 取得 MySQL 主机信息
1说明
string mysql_get_host_info ( [resource link_identifier] )
mysql_get_host_info() 返回一个字符串说明了连接 link_identifier 所使用的连接方式,包括服务器的主机名。如果省略 link_identifier,则使用上一个打开的连接。
2例子:
[codes=php]
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
printf ("MySQL host info: %s\n", mysql_get_host_info());
?>
[/code]
以上例子将产生如下输出:
MySQL host info: Localhost via UNIX socket
来自:http://baike.baidu.com/link?url=-PyG2pRJ0GvzZAaMq7OYAoxSg5R-BvGkVz6s6_3FC1PxwJzziga80uKOesZXmZDA4n0_nzEAIuAj5DeUngNmdq
mysql_get_host_info
mysql_get_host_info
(PHP 4 >= 4.0.5, PHP 5)
mysql_get_host_info -- 取得 MySQL 主机信息
1说明
string mysql_get_host_info ( [resource link_identifier] )
mysql_get_host_info() 返回一个字符串说明了连接 link_identifier 所使用的连接方式,包括服务器的主机名。如果省略 link_identifier,则使用上一个打开的连接。
2例子:
[codes=php]
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
printf ("MySQL host info: %s\n", mysql_get_host_info());
?>
[/code]
以上例子将产生如下输出:
MySQL host info: Localhost via UNIX socket
来自:http://baike.baidu.com/link?url=-PyG2pRJ0GvzZAaMq7OYAoxSg5R-BvGkVz6s6_3FC1PxwJzziga80uKOesZXmZDA4n0_nzEAIuAj5DeUngNmdq
[实践OK]Linux下用Top查看某些或者某个进程(top -p pid),如何得到PHP的fastCGI进程的PID及用top指定查看这些PID的方法。
Unix/LinuxC技术 jackxiang 2013-12-14 15:05
背景:通过top下Namp的生产环境,出现某一个PHP耗CPU 100%。(先top后再:shift+P,按内存:shift+M)
————————————————————————————————————————————————————
(1)查看php-fpm进程编号:
pidof php-fpm
12560 12559 12558 12557 12556 12555 12554 12553 12552 12551 12550 12549 12548 12547 12546 12545 12544 12543 12542 12541 12540 12539 12538 12537 12536 12535 12534 12533 12532 12531 12530 12529 12528
(2)通过awk把上面的进程号形成top -p pid1 -p pid2的形式:
pidof php-fpm|awk '{gsub(/ /i," -p ");print}'
-p 2560 -p 2559 -p 2558 -p 2557 -p 2556 -p 2555 -p 2554 -p 2553 -p 2552 -p 255 -p -p 2550 -p 2549 -p 2548 -p 2547 -p 2546 -p 2545 -p 2544 -p 2543 -p 2542 -p 254 -p -p 2540 -p 2539 -p 2538 -p 2537 -p 2536 -p 2535 -p 2534 -p 2533 -p 2532 -p 253 -p -p 2530 -p 2529 -p 2528
(3)用top只看php进程号,最后top查help,是这样的( -p pid [,pid ...]):
pidof php-fpm|awk '{gsub(/ /i," -p ");print "top "$0}'
top -p 2560 -p 2559 -p 2558 -p 2557 -p 2556 -p 2555 -p 2554 -p 2553 -p 2552 -p 255 -p -p 2550 -p 2549 -p 2548 -p 2547 -p 2546 -p 2545 -p 2544 -p 2543 -p 2542 -p 254 -p -p 2540 -p 2539 -p 2538 -p 2537 -p 2536 -p 2535 -p 2534 -p 2533 -p 2532 -p 253 -p -p 2530 -p 2529 -p 2528
(4)加上管道并sh执行即可(注意pid不能大于20个PHP进程):
pidof php-fpm|awk '{gsub(/ /,",");print "top -p "$0}'
加上sh:
pidof php-fpm|awk '{gsub(/ /,",");print "top -p "$0}'|sh
试下PHP的守护进程:
pidof php|grep -v grep|awk '{gsub(/ /,",");print "top -p "$0}'|sh
top: failed tty get
所以,最后还是得贴上去才行,会报上述的错。
top -p 29886,29877,24518,1895,1885
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
29886 www 15 0 120m 20m 2428 S 0 0.1 0:00.63 php
29877 root 21 0 0 0 0 Z 0 0.0 0:00.02 php <defunct>
24518 www 15 0 108m 9468 2524 S 0 0.1 0:34.99 php
1895 www 15 0 112m 13m 2424 S 0 0.1 0:02.48 php
1885 root 24 0 0 0 0 Z 0 0.0 0:00.02 php <defunct>
(5)通过对PHP的集中top后,再通过对高CPU进行监控,如12542的进程PID:
strace -p 12542
————————————————————————————————————————————————————
TOP中只查看某个或某些进程的信息
top中使用CPU或MEM排序,还是看不到我们想了解的进程的相关信息;
这时就可以指定对某个或某些进程进行TOP信息显示;
1、查看某个进程的信息
例:mysqld的信息
(1)得到mysqld进程的pid
[root@6 ~]# pidof mysqld
21538
(2)top指定查看PID
[root@6 ~]# top -p 21538
top - 09:15:06 up 30 days, 53 min, 3 users, load average: 0.07, 0.22, 0.23
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.0%us, 6.9%sy, 0.2%ni, 89.4%id, 0.3%wa, 0.1%hi, 0.1%si, 0.0%st
Mem: 1035140k total, 994888k used, 40252k free, 383072k buffers
Swap: 2048248k total, 80k used, 2048168k free, 237456k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21538 mysql 15 0 146m 21m 4372 S 0.0 2.1 3:03.84 mysqld
2、查看某些进程的信息
例:mysqld/httpd的信息
(1)得到mysqld/httpd进程的pid
[root@6 ~]# pidof mysqld
21538
[root@6 ~]# pidof httpd
31117 31116 31115 31114
(2)top指定查看PID
[root@6 ~]# top -p 21538,31117,31116,31115,31114
top - 09:20:05 up 30 days, 58 min, 3 users, load average: 0.37, 0.24, 0.23
Tasks: 5 total, 0 running, 5 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.0%us, 6.9%sy, 0.2%ni, 89.4%id, 0.3%wa, 0.1%hi, 0.1%si, 0.0%st
Mem: 1035140k total, 994364k used, 40776k free, 383404k buffers
Swap: 2048248k total, 80k used, 2048168k free, 237560k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21538 mysql 15 0 146m 21m 4372 S 0.0 2.1 3:03.86 mysqld
31117 apache 15 0 60036 8428 4668 S 0.0 0.8 0:00.48 httpd
31116 apache 15 0 60308 9.9m 6288 S 0.0 1.0 0:00.48 httpd
31115 apache 15 0 60100 8552 4756 S 0.0 0.8 0:00.48 httpd
31114 apache 15 0 59892 6452 3060 S 0.0 0.6 0:00.41 httpd
——————————————————————————————————————————
来自:http://blog.csdn.net/zhangfn2011/article/details/7488746
————————————————————————————————————————————————————
(1)查看php-fpm进程编号:
pidof php-fpm
12560 12559 12558 12557 12556 12555 12554 12553 12552 12551 12550 12549 12548 12547 12546 12545 12544 12543 12542 12541 12540 12539 12538 12537 12536 12535 12534 12533 12532 12531 12530 12529 12528
(2)通过awk把上面的进程号形成top -p pid1 -p pid2的形式:
pidof php-fpm|awk '{gsub(/ /i," -p ");print}'
-p 2560 -p 2559 -p 2558 -p 2557 -p 2556 -p 2555 -p 2554 -p 2553 -p 2552 -p 255 -p -p 2550 -p 2549 -p 2548 -p 2547 -p 2546 -p 2545 -p 2544 -p 2543 -p 2542 -p 254 -p -p 2540 -p 2539 -p 2538 -p 2537 -p 2536 -p 2535 -p 2534 -p 2533 -p 2532 -p 253 -p -p 2530 -p 2529 -p 2528
(3)用top只看php进程号,最后top查help,是这样的( -p pid [,pid ...]):
pidof php-fpm|awk '{gsub(/ /i," -p ");print "top "$0}'
top -p 2560 -p 2559 -p 2558 -p 2557 -p 2556 -p 2555 -p 2554 -p 2553 -p 2552 -p 255 -p -p 2550 -p 2549 -p 2548 -p 2547 -p 2546 -p 2545 -p 2544 -p 2543 -p 2542 -p 254 -p -p 2540 -p 2539 -p 2538 -p 2537 -p 2536 -p 2535 -p 2534 -p 2533 -p 2532 -p 253 -p -p 2530 -p 2529 -p 2528
(4)加上管道并sh执行即可(注意pid不能大于20个PHP进程):
pidof php-fpm|awk '{gsub(/ /,",");print "top -p "$0}'
加上sh:
pidof php-fpm|awk '{gsub(/ /,",");print "top -p "$0}'|sh
试下PHP的守护进程:
pidof php|grep -v grep|awk '{gsub(/ /,",");print "top -p "$0}'|sh
top: failed tty get
所以,最后还是得贴上去才行,会报上述的错。
top -p 29886,29877,24518,1895,1885
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
29886 www 15 0 120m 20m 2428 S 0 0.1 0:00.63 php
29877 root 21 0 0 0 0 Z 0 0.0 0:00.02 php <defunct>
24518 www 15 0 108m 9468 2524 S 0 0.1 0:34.99 php
1895 www 15 0 112m 13m 2424 S 0 0.1 0:02.48 php
1885 root 24 0 0 0 0 Z 0 0.0 0:00.02 php <defunct>
(5)通过对PHP的集中top后,再通过对高CPU进行监控,如12542的进程PID:
strace -p 12542
————————————————————————————————————————————————————
TOP中只查看某个或某些进程的信息
top中使用CPU或MEM排序,还是看不到我们想了解的进程的相关信息;
这时就可以指定对某个或某些进程进行TOP信息显示;
1、查看某个进程的信息
例:mysqld的信息
(1)得到mysqld进程的pid
[root@6 ~]# pidof mysqld
21538
(2)top指定查看PID
[root@6 ~]# top -p 21538
top - 09:15:06 up 30 days, 53 min, 3 users, load average: 0.07, 0.22, 0.23
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.0%us, 6.9%sy, 0.2%ni, 89.4%id, 0.3%wa, 0.1%hi, 0.1%si, 0.0%st
Mem: 1035140k total, 994888k used, 40252k free, 383072k buffers
Swap: 2048248k total, 80k used, 2048168k free, 237456k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21538 mysql 15 0 146m 21m 4372 S 0.0 2.1 3:03.84 mysqld
2、查看某些进程的信息
例:mysqld/httpd的信息
(1)得到mysqld/httpd进程的pid
[root@6 ~]# pidof mysqld
21538
[root@6 ~]# pidof httpd
31117 31116 31115 31114
(2)top指定查看PID
[root@6 ~]# top -p 21538,31117,31116,31115,31114
top - 09:20:05 up 30 days, 58 min, 3 users, load average: 0.37, 0.24, 0.23
Tasks: 5 total, 0 running, 5 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.0%us, 6.9%sy, 0.2%ni, 89.4%id, 0.3%wa, 0.1%hi, 0.1%si, 0.0%st
Mem: 1035140k total, 994364k used, 40776k free, 383404k buffers
Swap: 2048248k total, 80k used, 2048168k free, 237560k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21538 mysql 15 0 146m 21m 4372 S 0.0 2.1 3:03.86 mysqld
31117 apache 15 0 60036 8428 4668 S 0.0 0.8 0:00.48 httpd
31116 apache 15 0 60308 9.9m 6288 S 0.0 1.0 0:00.48 httpd
31115 apache 15 0 60100 8552 4756 S 0.0 0.8 0:00.48 httpd
31114 apache 15 0 59892 6452 3060 S 0.0 0.6 0:00.41 httpd
——————————————————————————————————————————
来自:http://blog.csdn.net/zhangfn2011/article/details/7488746
通过查看Nginx的并发连接,我们可以更清除的知道网站的负载情况。Nginx并发查看有两种方法(之所以这么说,是因为笔者只知道两种),一种是通过 web界面,一种是通过命令,web查看要比命令查看显示的结果精确一些。下面介绍这两种查看方法
No1、通过浏览器查看
通过web界面查看时Nginx需要开启status模块,也就是安装Nginx时加上 --with-http_stub_status_module 然后配置Nginx.conf,在server点里面加入如下内容
配置完后重新启动Nginx后我们可以通过浏览器访问http://localhost/status 查看。
解析:
Active connections //当前 Nginx 正处理的活动连接数。
server accepts handled requests //总共处理了8 个连接 , 成功创建 8 次握手,总共处理了500个请求。
Reading //nginx 读取到客户端的 Header 信息数。
Writing //nginx 返回给客户端的 Header 信息数。
Waiting //开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接
No2、通过命令查看
#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 17
ESTABLISHED 3254
LAST_ACK 236
FIN_WAIT_1 648
FIN_WAIT_2 581
CLOSING 7
CLOSE_WAIT 4916
解析:
CLOSED //无连接是活动的或正在进行
LISTEN //服务器在等待进入呼叫
SYN_RECV //一个连接请求已经到达,等待确认
SYN_SENT //应用已经开始,打开一个连接
ESTABLISHED //正常数据传输状态/当前并发连接数
FIN_WAIT1 //应用说它已经完成
FIN_WAIT2 //另一边已同意释放
ITMED_WAIT //等待所有分组死掉
CLOSING //两边同时尝试关闭
TIME_WAIT //另一边已初始化一个释放
LAST_ACK //等待所有分组死掉
============================================================
来自:http://blog.s135.com/nginx_php_v5/
实践:
[root@localhost 20131212]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 109
ESTABLISHED 63
SYN_RECV 103
LAST_ACK 2
No1、通过浏览器查看
通过web界面查看时Nginx需要开启status模块,也就是安装Nginx时加上 --with-http_stub_status_module 然后配置Nginx.conf,在server点里面加入如下内容
配置完后重新启动Nginx后我们可以通过浏览器访问http://localhost/status 查看。
解析:
Active connections //当前 Nginx 正处理的活动连接数。
server accepts handled requests //总共处理了8 个连接 , 成功创建 8 次握手,总共处理了500个请求。
Reading //nginx 读取到客户端的 Header 信息数。
Writing //nginx 返回给客户端的 Header 信息数。
Waiting //开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接
No2、通过命令查看
#netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 17
ESTABLISHED 3254
LAST_ACK 236
FIN_WAIT_1 648
FIN_WAIT_2 581
CLOSING 7
CLOSE_WAIT 4916
解析:
CLOSED //无连接是活动的或正在进行
LISTEN //服务器在等待进入呼叫
SYN_RECV //一个连接请求已经到达,等待确认
SYN_SENT //应用已经开始,打开一个连接
ESTABLISHED //正常数据传输状态/当前并发连接数
FIN_WAIT1 //应用说它已经完成
FIN_WAIT2 //另一边已同意释放
ITMED_WAIT //等待所有分组死掉
CLOSING //两边同时尝试关闭
TIME_WAIT //另一边已初始化一个释放
LAST_ACK //等待所有分组死掉
============================================================
来自:http://blog.s135.com/nginx_php_v5/
实践:
[root@localhost 20131212]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 109
ESTABLISHED 63
SYN_RECV 103
LAST_ACK 2
《金缕衣》
作者:杜秋娘
劝君莫惜金缕衣,劝君惜取少年时。
花开堪折直须折,莫待无花空折枝。
词中所唱句句直白,却富含人生哲理,劝君珍惜少年青春时光,莫令岁月空蹉跎。杜秋娘的歌声深深打动了唐宪宗,一个普通女子都知道莫负好时光的道理,自己深负复兴大唐之重任,又怎能如此逃避?
人生得意须尽欢,莫使金樽空对月外的另一种诠释。
作者:杜秋娘
劝君莫惜金缕衣,劝君惜取少年时。
花开堪折直须折,莫待无花空折枝。
词中所唱句句直白,却富含人生哲理,劝君珍惜少年青春时光,莫令岁月空蹉跎。杜秋娘的歌声深深打动了唐宪宗,一个普通女子都知道莫负好时光的道理,自己深负复兴大唐之重任,又怎能如此逃避?
人生得意须尽欢,莫使金樽空对月外的另一种诠释。