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
[实践Ok]secureCRT同时操作多个不同终端(多个会话窗口),secureCRT-多个终端上同时执行同个命令。及secureCRT使用按钮栏进行密码发送常用操作。
Unix/LinuxC技术 jackxiang 2013-12-12 12:40
背景:在小公司里没有多少台机器,运维或开发想执行命令则用到,大批量机器上千、万台则需要有zoomkeeper和shell配合,以web形式提供出管理工具,如codebuilder、pms、ccs等。
一:Securecrt同时操作多个会话窗口:
1,选中:查看/交互窗口
2,开启多个会话窗口
3,右击任何一个会话窗口下面的交互窗口,选中:发送交互到所有标签
4,在交互窗口输入命令,就会同时在多个会话窗口执行了!
来自:http://blog.itpub.net/9240380/viewspace-668253
参看:http://blog.sina.com.cn/s/blog_8e5b826701011msc.html
实践如下,我的是英文版本,如下:
在SecureCRT下的view下选中Chat wWndows后,下面出现一个小窗框,然后在小窗口上面点右键盘选中:Send Chat to All Tabs.即可。
背景:有时线上的mysql比较怪异,所以,有这个标签进行分组并一点就Ok的玩意会相对方便不容易出错些:
二:SecureCRT使用按钮栏进行密码发送常用操作:
1)使用按钮栏:选择查看-》按钮栏会显示按钮栏,勾选按钮栏,勾选之后最下面多出了一个按钮栏,在上面可以新建的按钮。
2)新建按钮如:鼠标移动到按钮栏上,单击右键,会有new button ,new button bar,delete button bar选项。第一个是在按钮栏添加按钮,new button bar是增加新的按钮栏,最后是删除按钮栏。
3)按钮栏的作用:就是单击它可以和secureCRT窗口进行交互,比如我要连接某个机器,但是机器名很长不想记录怎么办?那就通过新建一个按钮来解决啊。如下图所示。注意send String是按钮发送的命令,如果不加“\n”,那么不会执行,需要在窗口中显示的输入回车才能执行,label中是新建的button名称,一般命名为机器名或者操作名称。有了这个功能就可以把多个机器的地址分别建一个button,这样只需要输入一次,就可以不用记忆繁琐的机器名而进行机器的远程连接了。
3)按钮栏的下拉框分组:(1)默认(default)(2)线上地址(3)数据库三个按钮栏了。如果不需要这么多怎么办?删除就可以了。同样的,增加的button也可以修改、删除。
来自,参考有图:http://jingyan.baidu.com/album/d3b74d64a752671f77e6092a.html
一:Securecrt同时操作多个会话窗口:
1,选中:查看/交互窗口
2,开启多个会话窗口
3,右击任何一个会话窗口下面的交互窗口,选中:发送交互到所有标签
4,在交互窗口输入命令,就会同时在多个会话窗口执行了!
来自:http://blog.itpub.net/9240380/viewspace-668253
参看:http://blog.sina.com.cn/s/blog_8e5b826701011msc.html
实践如下,我的是英文版本,如下:
在SecureCRT下的view下选中Chat wWndows后,下面出现一个小窗框,然后在小窗口上面点右键盘选中:Send Chat to All Tabs.即可。
背景:有时线上的mysql比较怪异,所以,有这个标签进行分组并一点就Ok的玩意会相对方便不容易出错些:
二:SecureCRT使用按钮栏进行密码发送常用操作:
1)使用按钮栏:选择查看-》按钮栏会显示按钮栏,勾选按钮栏,勾选之后最下面多出了一个按钮栏,在上面可以新建的按钮。
2)新建按钮如:鼠标移动到按钮栏上,单击右键,会有new button ,new button bar,delete button bar选项。第一个是在按钮栏添加按钮,new button bar是增加新的按钮栏,最后是删除按钮栏。
3)按钮栏的作用:就是单击它可以和secureCRT窗口进行交互,比如我要连接某个机器,但是机器名很长不想记录怎么办?那就通过新建一个按钮来解决啊。如下图所示。注意send String是按钮发送的命令,如果不加“\n”,那么不会执行,需要在窗口中显示的输入回车才能执行,label中是新建的button名称,一般命名为机器名或者操作名称。有了这个功能就可以把多个机器的地址分别建一个button,这样只需要输入一次,就可以不用记忆繁琐的机器名而进行机器的远程连接了。
3)按钮栏的下拉框分组:(1)默认(default)(2)线上地址(3)数据库三个按钮栏了。如果不需要这么多怎么办?删除就可以了。同样的,增加的button也可以修改、删除。
来自,参考有图:http://jingyan.baidu.com/album/d3b74d64a752671f77e6092a.html
背景:
(1)vim /usr/local/etc/keepalived/keepalived.conf
(2)keepalived基本安装即可完成,启动测试之:
service keepalived restart
来自:
http://www.cnblogs.com/littlehb/archive/2012/12/13/2816652.html
lb_algo 实现keepalive,
这块的参数在如果进行多个memcache进行连接时很重要:
LVS的10个调度算法 :
keepalived 配置有个 lb_algo的参数,参照下面的文章设置 http://chqz1987.blog.163.com/blog/static/51438311201272804410941/
virtual_server 61.164.122.8 80 {
delay_loop 6 #(每隔10秒查询realserver状态)
lb_algo wrr #(lvs 算法)
lb_kind DR #(Direct Route)
persistence_timeout 60 #(同一IP的连接60秒内被分配到同一台realserver)
protocol TCP #(用TCP协议检查realserver状态)
real_server 61.164.122.9 80 {
weight 3 #(权重)
TCP_CHECK {
connect_timeout 10 #(10秒无响应超时)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 61.164.122.10 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
(1)vim /usr/local/etc/keepalived/keepalived.conf
(2)keepalived基本安装即可完成,启动测试之:
service keepalived restart
来自:
http://www.cnblogs.com/littlehb/archive/2012/12/13/2816652.html
lb_algo 实现keepalive,
这块的参数在如果进行多个memcache进行连接时很重要:
LVS的10个调度算法 :
keepalived 配置有个 lb_algo的参数,参照下面的文章设置 http://chqz1987.blog.163.com/blog/static/51438311201272804410941/
virtual_server 61.164.122.8 80 {
delay_loop 6 #(每隔10秒查询realserver状态)
lb_algo wrr #(lvs 算法)
lb_kind DR #(Direct Route)
persistence_timeout 60 #(同一IP的连接60秒内被分配到同一台realserver)
protocol TCP #(用TCP协议检查realserver状态)
real_server 61.164.122.9 80 {
weight 3 #(权重)
TCP_CHECK {
connect_timeout 10 #(10秒无响应超时)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 61.164.122.10 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
题外:全球最大色情网站的CTO 点名用redis 曰 :我随身在争议行业,但是也无法磨灭我对技术的创新。在网上看一聊天视频网站用的是:Apache/2.4.2 (Unix) PHP/5.3.3。
年轻女子的穿着有时性感有时保守,语言有时平常有时挑逗,通过视频与用户交流。用户则送上鲜花、钻戒等网络虚拟品,而这些虚拟物需要通过真实的钱币购买积分再购买。这就是9158(就约我吧)网站最重要的盈利模式。公司创办人傅政军未必如此描述其盈利模式。
其母公司浙江天格信息技术有限公司(下称“天格公司”)已经是中国最大的网络娱乐社区、网络文化活动、专业平台策划公司。公司自2005年创办至今,几乎每年的营业收入都要翻一番。中国移动互联网产业联盟常务副理事长兼秘书长李易告诉《投资者报》记者,其2012年的营收很可能已经超过10亿元。
摘录自:http://finance.sina.com.cn/stock/t/20130114/095814276751.shtml
目前apache:Apache HTTP Server 2.4.7 Released
LNAMP第二版(nginx 1.2.0+apache 2.4.2+php 5.4)
pache官方宣称apache 2.4在性能上提升了很多
onnection:Keep-Alive
Date:Mon, 09 Dec 2013 14:13:01 GMT
ETag:"2b49-4ec60e4ca43aa"
Keep-Alive:timeout=1200
Server:Apache/2.4.2 (Unix) PHP/5.3.3
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Type:text/html
Date:Mon, 09 Dec 2013 14:27:13 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=1200
Pragma:no-cache
Server:Apache/2.4.2 (Unix) PHP/5.3.3
Transfer-Encoding:chunked
X-Powered-By:PHP/5.3.3
来自:http://kerry.blog.51cto.com/172631/857461
windows下PHP5.5.6+Apache2.4.7配置:
http://jingyan.baidu.com/article/e6c8503c1484dce54f1a1887.html
select与epoll、apache与nginx实现原理对比:
http://www.tuicool.com/articles/AzmiY3
年轻女子的穿着有时性感有时保守,语言有时平常有时挑逗,通过视频与用户交流。用户则送上鲜花、钻戒等网络虚拟品,而这些虚拟物需要通过真实的钱币购买积分再购买。这就是9158(就约我吧)网站最重要的盈利模式。公司创办人傅政军未必如此描述其盈利模式。
其母公司浙江天格信息技术有限公司(下称“天格公司”)已经是中国最大的网络娱乐社区、网络文化活动、专业平台策划公司。公司自2005年创办至今,几乎每年的营业收入都要翻一番。中国移动互联网产业联盟常务副理事长兼秘书长李易告诉《投资者报》记者,其2012年的营收很可能已经超过10亿元。
摘录自:http://finance.sina.com.cn/stock/t/20130114/095814276751.shtml
目前apache:Apache HTTP Server 2.4.7 Released
LNAMP第二版(nginx 1.2.0+apache 2.4.2+php 5.4)
pache官方宣称apache 2.4在性能上提升了很多
onnection:Keep-Alive
Date:Mon, 09 Dec 2013 14:13:01 GMT
ETag:"2b49-4ec60e4ca43aa"
Keep-Alive:timeout=1200
Server:Apache/2.4.2 (Unix) PHP/5.3.3
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Type:text/html
Date:Mon, 09 Dec 2013 14:27:13 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=1200
Pragma:no-cache
Server:Apache/2.4.2 (Unix) PHP/5.3.3
Transfer-Encoding:chunked
X-Powered-By:PHP/5.3.3
来自:http://kerry.blog.51cto.com/172631/857461
windows下PHP5.5.6+Apache2.4.7配置:
http://jingyan.baidu.com/article/e6c8503c1484dce54f1a1887.html
select与epoll、apache与nginx实现原理对比:
http://www.tuicool.com/articles/AzmiY3
PHP运行模式
Php/Js/Shell/Go jackxiang 2013-12-8 17:40
背景:群里有兄弟问PHP到底有几种运行模式,想在apache下运行fastcgi来运行PHP,guisu写的博客是4种,百度知道里采纳的是5种。
一、百度知道:
php一共分为五大运行模式:包括cgi 、fast-cgi、cli、isapi、apache 模块的 DLLCGI
CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执 行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。阅读全文
一、百度知道:
php一共分为五大运行模式:包括cgi 、fast-cgi、cli、isapi、apache 模块的 DLLCGI
CGI即通用网关接口(Common Gateway Interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执 行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。阅读全文
学习是随时随地的事,每当我们玩着手机只是在聊天刷消息、织围脖、看新闻、玩游戏各种无聊的时候
不如学习吧~~这里我搜集了一些嵌入式学习C语言的一些相关APP,和大家分享,妈妈再也不用担心我的学习~~
部分手机上的APP应用都在这了,由于此类应用很好找,所以笔者就不一一发布,只给出应用名称,大家自行搜索下载安装
1、C语言宝典
集各种C语言基础知识于一身
2、C语言手册
比上一个APP功能稍微强大点
3、C_functions
涵盖几乎所有C语言函数,对于高级编程很有用
网络上有很多此类的应用,只要你愿意下功夫搜索,还是能淘到很多有用又有意思的APP的
欢迎大家共享
来自:http://forum.eepw.com.cn/thread/235738/1
不如学习吧~~这里我搜集了一些嵌入式学习C语言的一些相关APP,和大家分享,妈妈再也不用担心我的学习~~
部分手机上的APP应用都在这了,由于此类应用很好找,所以笔者就不一一发布,只给出应用名称,大家自行搜索下载安装
1、C语言宝典
集各种C语言基础知识于一身
2、C语言手册
比上一个APP功能稍微强大点
3、C_functions
涵盖几乎所有C语言函数,对于高级编程很有用
网络上有很多此类的应用,只要你愿意下功夫搜索,还是能淘到很多有用又有意思的APP的
欢迎大家共享
来自:http://forum.eepw.com.cn/thread/235738/1
crontab 指定执行用户
Unix/LinuxC技术 jackxiang 2013-12-5 10:46
1)查看当前用户下的cron任务:crontab -l
2)编辑当前用户的定时任务:crontab -e
3)编辑root用户linuxso的定时任务: crontab -u root -e
阅读全文
2)编辑当前用户的定时任务:crontab -e
3)编辑root用户linuxso的定时任务: crontab -u root -e
阅读全文
linux 如何查看用户id
Unix/LinuxC技术 jackxiang 2013-12-4 23:17
背景:查一个日志,出现48的用户值:
-rwxrwxrwx 1 48 48 1421133 Dec 5 15:14 checkdaemon_album_20131205.php
-rwxrwxrwx 1 root root 1431216 Dec 5 15:14 checkdaemon_report_20131205.php
-rwxrwxrwx 1 www www 3752063 Dec 5 15:14 core-20131205.php
————————————————————————————————————————————
用户的ID就是USER ID喽,也就是常说的UID.有一个文件专门存放UID信息的,在/etc/passwd里。root用户的ID是0.
从1~499的大多是系统服务或软件厂商自定议的ID。而普通的用户的UID是从500开始往后依次加1.
实践示例:
你也可以用 cat /etc/passwd | grep <你的用户名> 来查看你的ID。
我是:504,而su成root后,
查看当前root用户,也可直接输入:id
当然,也可以通过:
也可看到root是0,我还是504:
root:x:0:
xiangdong:x:504:
这儿也可以查看,特殊在它能查到一些非登录的用户Id:
www:x:48:48::/home/www:/sbin/nologin
最后,用finger吧:
[root@localhost 20131205]# finger 48
-bash: finger: command not found
yum install finger
finger www
[root@localhost 20131205]# finger www
Login: www Name:
Directory: /home/www Shell: /bin/bash
Never logged in.
No mail.
No Plan.
来自:http://zhidao.baidu.com/link?url=z6Ca_wyf6UwLZGun4pb8o8Lj3VxyUwhzQ4XzVZGOSARChu935hy_YOlSJPagp7eRi2KbVuE1Z17t6TcQCNwaAa
-rwxrwxrwx 1 48 48 1421133 Dec 5 15:14 checkdaemon_album_20131205.php
-rwxrwxrwx 1 root root 1431216 Dec 5 15:14 checkdaemon_report_20131205.php
-rwxrwxrwx 1 www www 3752063 Dec 5 15:14 core-20131205.php
————————————————————————————————————————————
用户的ID就是USER ID喽,也就是常说的UID.有一个文件专门存放UID信息的,在/etc/passwd里。root用户的ID是0.
从1~499的大多是系统服务或软件厂商自定议的ID。而普通的用户的UID是从500开始往后依次加1.
实践示例:
你也可以用 cat /etc/passwd | grep <你的用户名> 来查看你的ID。
我是:504,而su成root后,
查看当前root用户,也可直接输入:id
当然,也可以通过:
也可看到root是0,我还是504:
root:x:0:
xiangdong:x:504:
这儿也可以查看,特殊在它能查到一些非登录的用户Id:
www:x:48:48::/home/www:/sbin/nologin
最后,用finger吧:
[root@localhost 20131205]# finger 48
-bash: finger: command not found
yum install finger
finger www
[root@localhost 20131205]# finger www
Login: www Name:
Directory: /home/www Shell: /bin/bash
Never logged in.
No mail.
No Plan.
来自:http://zhidao.baidu.com/link?url=z6Ca_wyf6UwLZGun4pb8o8Lj3VxyUwhzQ4XzVZGOSARChu935hy_YOlSJPagp7eRi2KbVuE1Z17t6TcQCNwaAa