linux命令记录

1、用tar打包时忽略文件的目录结构,不保存目录结构

-C, --directory DIR
change to directory DIR
[root@hongdi lhd]# tar -cvf c.tar -C /home/lhd a.txt
a.txt
[root@hongdi lhd]# tar -tvf c.tar
-rw-rw-r-- lhd/lhd       10240 2009-02-03 13:12 a.txt

http://blog.csdn.net/chinalinuxzend/archive/2009/02/03/3860113.aspx

2、Linux下查看apache连接数

查看httpd进程数(即prefork模式下Apache能够处理的并发请求数):
Linux命令:
ps -ef | grep httpd | wc -l

查看Apache的并发请求数及其TCP连接状态:

Linux命令:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

返回结果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057

说明:  
   SYN_RECV表示正在等待处理的请求数;
    ESTABLISHED表示正常数据传输状态;
   TIME_WAIT表示处理完毕,等待超时结束的请求数。

http://hi.baidu.com/vyatta/blog/item/e4ad588df6214c15b21bba68.html

3、linux下查看网络流量

watch -n 2 /sbin/ifconfig eth0

http://hi.baidu.com/vyatta/blog/item/3c7388cc167a511600e9283c.html

4、linux下查看端口是被哪个应用程序使用

netstat -ant|grep LISTEN 可以显示出所有监听中的端口
lsof -i :端口 查看端口是被哪个应用程序使用

5、如何查看某個進程打開了多少個文件?

在Linux下,我們使用ulimit -n命令可以看到單個進程能夠打開的最大檔案控制代碼數量(socket連接也算在裡面)。系統預設值1024。
對於一般的應用來說(象Apache、系統進程)1024完全足夠使用。但是如何象squid、mysql、java等單進程處理大量請求的應用來說就有 點捉襟見肘了。如果單個進程打開的檔案控制代碼數量超過了系統定義的值,就會提到“too many files open”的錯誤提示。如何知道當前進 程打開了多少個檔案控制代碼呢?lsof -n | awk '{print $2}' | sort | uniq -c | sort -nr | more

其中第一列是打開的檔案控制代碼數量,第二列是進程號。

但是如果系統併發特別大,尤其是squid伺服器,很有可能會超過1024。這時候就必須要調整系統參數,以適應應用變化。Linux有硬性限制和軟性限制。可以通過ulimit來設定這兩個參數。方法如下,以root用戶運行以下命令:ulimit -HSn 4096
以上命令中,H指定了硬性大小,S指定了軟性大小,n表示設定單個進程最大的打開檔案控制代碼數量。個人覺得最好不要超過4096,畢竟打開的檔案控制代碼數越多響應時間肯定會越慢。設定控制碼數量後,系統重啟後,又會恢復預設值。如果想永久保存下來,可以修改.bash_profile檔,可以修改 /etc/profile 把上面命令加到最後。

也可以修改內核.重啟機器就可以

vi /usr/include/bits/typesizes.h
__FD_SETSIZE 1024
修改為
__FD_SETSIZE 4096

你可能感兴趣的:(apache,c,linux,网络应用,C#)