【转】Linux下c语言写的定时器(计时器)
【实现功能】:下的C编程:编写一个程序(库),实现定时器(计时器)的功能,它能为用户提供在同一进程中多次使用的定时器。这里要求用信号来实现。
【解题思路】:编写一个结构体Timer代表一个计时器,然后再定义Timer类型的数组myTimer[N],用来保存我们设置的定时器;再定义函数setTimer()生成计时器,并将生成的计时器保存到myTimer中,这样通过多次调用,就可以在同一个进程中生成多个计时器;定义timeout()信号处理函数,每隔一秒产生一个信号,通过调用timeout()对所有的定时器扫描一遍,检查哪些计时器超时。
【程序代码】:如下阅读全文
linux umount 时出现device is busy 的处理方法--fuser,20253进程在使用,退出或杀死:
    * 查询: fuser -m /media/share  #/media/share 是挂载在本地的目录
    * 显示: /media/share: 25023c  #25023c   是进程编号,25023是进程PID。用ps aux|grep 25023进行查看是哪个进程导致出现device is busy
—————————————————————某个文件是谁在读取,反查进程有用———————————————————————————————


[root@iZ25dcp92ckZ multepoolserver]# ps aux|grep hhvm
www      15801  0.0 14.0 826616 142904 ?       Sl   14:15   0:00 /usr/bin/hhvm --mode server --user www --config /etc/hhvm/server.ini --config /etc/hhvm/php.ini --config /etc/hhvm/config.hdf
www      15804  0.0  0.1 115212  1404 ?        S    14:15   0:00 bash -c ! fuser /data/runsock/hhvm.sock
www      15805  0.0  0.0 107904   828 ?        R    14:15   0:00 fuser /data/runsock/hhvm.sock
root     15807  0.0  0.0 110224   904 pts/0    S+   14:15   0:00 grep --color=auto hhvm
[root@iZ25dcp92ckZ multepoolserver]# fuser /data/runsock/hhvm.sock
/data/runsock/hhvm.sock: 15801
——————————————————————————————————————————————————————————————

我的日志文件太大了,一直在写,但关了还有程序在写,能反查到是谁在写么?
du -sh Remote-20131216.log  
4.3G    Remote-20131216.log
lsof abc.txt 显示开启文件abc.txt的进程:
lsof  Remote-20131216.log  .
安装lsof包(yum install lsof),安装完成可以使用lsof命令。
没有:
回忆未来-向东-Jàck  下午 03:41:05
我就是要这个啊哈哈。
没有囁。
大侠江  下午 03:42:36
COMMAND 有没有进程记录
如过没有就没有了
回忆未来-向东-Jàck  下午 03:44:20
我这边是加载的NFS,Linux都挂载到日志上了。
可能是这个原因吧?NFS网络挂载的。
linux中TOP命令显示出COMMAND进程名?
top 后有一个
http://www.ibm.com/developerworks/cn/aix/library/au-lsof.html
大侠江  下午 03:48:40
lsof 显示的的COMMAND
回忆未来-向东-Jàck  下午 03:49:51
好几列啊,就lsof  lsof |grep xxxx.avi 虽然有点慢,但是可以用。
lsof -f 不行的,先用grep试试吧。那就去掉-f,直接+文件试一试?
不行的。还是 grep 吧  lsof 加上-n貌似会快一点。
确实快了很多,瞬间返回。


这个lsof是啥原理,是扫整个系统的打开文件句柄了?
遍历 /proc/实现的。

fuser
fuser -v file
使用-v选项将显示更全的信息:
# fuser -v /root
            USER     PID    ACCESS   COMMAND
/root:      root    17923    ..c..      bash
            root    24869    ..c..      atop


root@119.10.*.23:~# fuser -v -n tcp 80
                     用户     进程号 权限   命令
80/tcp:              root       7717 F.... nginx
                     www        7718 F.... nginx
                     www        7719 F.... nginx

来自:http://www.cnblogs.com/bangerlee/articles/2460614.html
         http://www.cnblogs.com/yuboyue/archive/2011/07/18/2109838.html
方法:

lsof-4.82-4.el6.x86_64
[root@localhost htdocs]# rpm -qa|grep lsof
lsof-4.82-4.el6.x86_64

/usr/sbin/lsof|grep "Remote-20131216.log"
阅读全文
背景:有时用wireshark抓到的post数据时,需要把一列并成一行形成CUrl格式的数据进行模拟Post请求,用awk快速实现一列变一行。
一、一列变成一行的AWK实现方法:
请教!怎么把一个文本的一列,换成一行?
在vi中能做吗?
sed可以做到
是吗?请教sed怎么实现呢?谢谢!
也就是一个文件是这样的:
oplasttr
dsprjord
accontsup106
alprjinfo
holiday
把它替换成oplasttr dsprjord accontsup106 alprjinfo holiday
cat test.txt | awk '{printf "%s ",$0}'
AWK可以取出任何一列并形成行:
例子:  
[root@WANGJIAN ~]# cat file  
a 13  
b 1  
c 23  
d 234  
[root@WANGJIAN ~]# awk '{printf "%s", $1}' file  
abcd  

把a、b、c、d与相应的值放到file里,然后通过awk语句实现列变行的转换。

实践如下:
[root@test tmp]# vi test
You have new mail in /var/spool/mail/root
[root@test tmp]# cat test | awk '{printf "%s ",$0}'    
oplasttr dsprjord accontsup106 alprjinfo holiday

[root@test tmp]# cat test | awk '{printf "%s ",$1}'
oplasttr dsprjord accontsup106 alprjinfo holiday

而用wireshark导出的Post或Get参数时是以如下形式进行分布的:
Content-Disposition: form-data; name="playlist"
20362
------------GI3GI3gL6GI3ae0gL6Ef1ei4gL6gL6
Content-Disposition: form-data; name="user_name"
20120926173632167912
------------GI3GI3gL6GI3ae0gL6Ef1ei4gL6gL6
Content-Disposition: form-data; name="email"
21240168
------------GI3GI3gL6GI3ae0gL6Ef1ei4gL6gL6
用editplus处理下就形成下面的格式了:
1)Content-Disposition: form-data; name=" 全部替换掉。
2)"$ 用正则把后面的"给去掉。
3)------------GI3GI3gL6GI3ae0gL6Ef1ei4gL6gL6 替换掉。
4)用^[\t ]*\n  正则把空行去掉。
形成下面的结构,再用awk处理一下就形成了post的格式(数据多时这样做最省力,少了就自己拼吧):
playlist
20362
user_name
20120926173632167912
email
21240168
如下处理:

自己的实践下要多行,问了下scottjiang兄弟一行搞定:

来自:http://linux.sheup.com/linux/linux5480.htm

二、sed和awk实现打印奇数行和偶数行
假设文件为test.txt
1.奇数行:
    awk实现:awk '{if (NR%2==1) print $0}'  test.txt
    sed实现:sed -n 'p;n' test.txt
2.偶数行:
    awk实现:awk '{if (NR%2==0) print $0}'  test.txt
    sed实现:sed -n 'n;p' test.txt
来自:http://blog.chinaunix.net/uid-7845870-id-3203124.html


三、awk 多列变多行的转换:
tony@tony-LIFEBOOK-LH532:~$ cat test
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5

怎么变成
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
——————————————————————
AWK:

实践如下:
[root@test tmp]# vi test
[root@test tmp]# cat test|awk '{for(i=1;i<=NF;i++)a[i]=a[i]?a[i]" "$i:$i}END{for(i=1;i<=NF;i++)print a[i]}'
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
来自:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4078467
实践发现,这块如果是xterm会显示,好像linux不显示这个标签,这块应该可以设置:http://jackxiang.com/post/3474/里,让标签显示文件路径,有描述:
让标签显示文件路径:
Options => Session Options => Terminal => Emulation
选择Terminal为Xterm/VShell,勾选“ANSI Color”,这样就会自动修改标签标题,还会包含当前目录。

==========================================================
实践OK如下:
vim /etc/sysconfig/bash-prompt-xterm
echo -ne "\e]2;仿真机\a"
再登录出现如下提示:
-bash: /etc/sysconfig/bash-prompt-xterm: Permission denied
加上权限:
chmod -R 777  /etc/sysconfig/bash-prompt-xterm
进示更加丰富:
echo -ne "\e]2;仿真机@$(ifconfig eth0|grep "inet addr"|cut -f2 -d:|awk '{print $1}')\a"

/etc/sysconfig/bash-prompt-xterm: line 1: ifconfig: command not found
echo -ne "\e]2;仿真机@$(/sbin/ifconfig eth0|grep "inet addr"|cut -f2 -d:|awk '{print $1}')\a"

一)CentOS6最终这样写,以eth0网卡为例:


二)CentOS7,因ifconfig的返回ip格式有变得这样:


———————————————————————————————————————————————————————————————
有时会不小心在ctrl+B时误按成Ctrl+V后发现按错了,一瞬间又按了b(或ctrl+b),于是,把原来的会话标签页给去勾选了,标签没了,就当前了。
,查看并勾选会话标签页选项。
http://linuxroad.blog.51cto.com/765922/1022602
在linux系统中设置的方法(此法适用于所有远程登录的软件)

这时候只需要简单两步即可搞定
[root@centos581 sysconfig]# vim /etc/sysconfig/bash-prompt-xterm
echo -ne "\e]2;$(ifconfig eth0|grep "inet addr"|cut -f2 -d:|awk '{print $1}')\a"

[root@centos581 sysconfig]# chmod 755 /etc/sysconfig/bash-prompt-xterm

当然,你也可以定义让其显示你指定的字符串。
比如:
[root@centos581 sysconfig]# vim /etc/sysconfig/bash-prompt-xterm
echo -ne "\e]2;hello\a"



CentOS7修改好像无效,于是查了一下:
一个是可能修改了hostname:http://jackxiang.com/post/5640/
二是linux下的shell——如何修改shell的提示符,能够出现登录用户名、主机名和路径
  有的机器上可能登上去后显示总是-bash-3.00$,解决方法是对比其他机器的~/.bash_profile文件,发现补充上以下东西就可以显示"xx@机器名 当前dir“了。

2 if [ -f ~/.bashrc ]; then
  3     . ~/.bashrc
  4 fi
  5 PATH=$PATH:$HOME/bin
  6 export PATH
  7 unset USERNAME



深入的看下,发现是在/etc/bashrc文件里面有/etc/sysconfig/bash-prompt-xterm这样的设置,/etc/bashrc:

17 # are we an interactive shell?
18 if [ "$PS1" ]; then
19     case $TERM in
20     xterm*)
21         if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
22             PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
23         else
24             PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\007"'
25         fi
26         ;;

发现是这个变量在阿里云里有值,而没有加载导致的,如下,非阿里去是没有这个PROMPT_COMMAND参数的: -AddTime:2015-10-12
PROMPT_COMMAND=""; //加一行清空这个变量也就对了,PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm能运行进去了,呵呵:
if [ -z "$PROMPT_COMMAND" ]; then 这一行阿里云给加上了,其它常规linux没有的,像centOS啥的:
-z STRING
              the length of STRING is zero
PROMPT_COMMAND估计是干这事的:Linux利用PROMPT_COMMAND实现操作记录的功能,http://www.bdqn.cn/news/201312/12316.shtml
Linux 利用 PROMPT_COMMAND 实现审计功能  :http://blog.163.com/ly_89/blog/static/1869022992011756434459/
看了下:/var/log/sa:
sa01  sa03  sa05  sa07  sa09  ... sa30 (一个月的日志)
————————————————————————
if [ "$PS1" ]; then
  if [ -z "$PROMPT_COMMAND" ]; then
    case $TERM in
    xterm*|vte*)
      if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
          PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
      elif [ "${VTE_VERSION:-0}" -ge 3405 ]; then
          PROMPT_COMMAND="__vte_prompt_command"
      else
          PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
      fi
      ;;
来自:http://www.cnblogs.com/mangu-uu/archive/2012/10/08/2715503.html

cat /etc/sysconfig/bash-prompt-xterm
echo -ne "\e]3;阿里云bobWB's VPS@$(/sbin/ifconfig eth1|grep "inet"|awk  -F" " '{print $2}')\a"
下次登录后就secureCRT标签里就会出现:
阿里云bobWB's VPS@101.200.1.***
————————————————————————————————————————————————————————————————
方法:
步骤一:
使用xterm让标签显示文件路径:
Options => Session Options => Terminal => Emulation
选择Terminal为Xterm/VShell,勾选“ANSI Color”,这样就会自动修改标签标题,还会包含当前目录,
这样就会自动修改标签标题,还会包含当前目录,类似这样:
user@host:/home/user/

步骤二:把IP地址由localhost修改为真实IP,多机器时好维护
将服务器名称设为你清楚的名字或者是ip地址,
这样连上服务器了,标签只是显示名称了,而不是登入后的帐号名和登入服务器的主机名:
________________________________________________________________
永久性修改服务器名称:
编辑/etc/sysconfig/network
修改HOSTNAME=新名称
保存后退出
同时修改/etc/hosts
添加一行 127.0.0.1    新名称
保存后退出
好了,如果是服务器建议还是重启一次,更新主机名,如果是普通用户电脑,那么就继续玩吧,这次就暂时用hostname修改,下次重启就正常了。

步骤三:对投影仪、Linux下的目录因颜色导致看不清的解决办法:
在使用投影仪的时候,可以勾选“Use color scheme”,即可以实现白底黑字效果,这样比黑底白字看的清楚些。
设置成xterm后,会发现在黑色背景下,目录的颜色太深,看不太清楚:
目录看不清的解决方案:Global Options => Terminal => Appearance => ANSI Color:将Normal color的颜色改成自己喜欢的颜色即可。(勾选“ANSI Color”, 才能显示鲜艳的颜色)
改变显示的最大列(默认80列,不满屏):
1) Global Options => Terminal => Appearance, 调整最大列为300;(实践Ok:选项->全局选项->外观->最大列:300)
2) Options => Session Options => Terminal => Emulation,调整逻辑列为132(或其他)(实践Ok:选项->会话选项->终端->仿真->逻辑列:132)

参考:
http://blog.opvps.com/securecrt-%E6%98%BE%E7%A4%BA%E6%A0%87%E7%AD%BE%E8%AE%BE%E5%AE%9A/
http://z515123.blog.51cto.com/679304/647679
Dig 在CentOS6.4下面的安装方法及查找某命令在哪个包的方法:http://jackxiang.com/post/7038/
一)
安装DNS服务器的时候,想测试一下DNS服务器,发现没有host dig nslookup命令,原来是没有安装bind-untils,立即yum install bind-untils搞定如下:
yum install bind-utils
它们各自的位置在:
[root@localhost site]# ls /usr/bin/nslookup
/usr/bin/nslookup
You have new mail in /var/spool/mail/root
[root@localhost site]# ls /usr/bin/dig
/usr/bin/dig
[root@localhost site]# ls /usr/bin/host
/usr/bin/host
实践如下:
Total download size: 1.0 M
Installed size: 2.6 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm                                                                                    | 878 kB     00:00    
(2/2): bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm                                                                                   | 182 kB     00:00    
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                        9.0 MB/s | 1.0 MB     00:00    
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 32:bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64   1/2
  Installing : 32:bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64   2/2
  Verifying  : 32:bind-libs-9.8.2-0.17.rc1.el6_4.6.x86_64   1/2
  Verifying  : 32:bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64   2/2
Installed:
  bind-utils.x86_64 32:9.8.2-0.17.rc1.el6_4.6                                                                                                                
Dependency Installed:
  bind-libs.x86_64 32:9.8.2-0.17.rc1.el6_4.6                                                                                                                
Complete!

二)我的LINUX服务器没有strace命令,CENTOS 6.4,怎么安装它呢
打开终端,输入命令:rpm -qa |grep strace,如果显示为空。
3. 如果没有这个显示结果,可以采取如下方式:
3.1 在系统光盘中查找对应的软件包,一般在Server目录下;
3.2 可以去Linux系统对应的官方网站进行下载对应的软件包;
4. 安装方式:
4.1 如果在图形界面,通常双击安装即可;
4.2 如果是在命令行界面,进入对应的路径,输入命令“rpm -ivh strace等文件全称.rpm”安装即可;
4.3 安装完成后使用命令“rpm -qa |grep strace”查询即可知道是否安装正确。

注:如果已经安装了yum源即可直接输入命令:root#yum -install strace-4.5.18-5.el5
使用:
复杂的用法还是直接man strace看说明吧,这里说个最简单的用法就是 strace -p <PID>针对进程跟踪。

Egg:
Total download size: 172 k
Installed size: 533 k
Is this ok [y/N]: y
Downloading Packages:
strace-4.5.19-1.17.el6.x86_64.rpm | 172 kB     00:00    
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : strace-4.5.19-1.17.el6.x86_64   1/1
  Verifying  : strace-4.5.19-1.17.el6.x86_64   1/1

Installed:
  strace.x86_64 0:4.5.19-1.17.el6
背景: 在树莓派上编译安装Nginx出现下面错误,因为是相当于debian上安装,所以得atp-get。
阅读全文
预告:最后我安装了盗版的VMware8,升级了一下(会提示你卸载旧版本),也就没有下面一堆的乱七八糟的问题了,但那个192.168.137.1还是由那个注册表修改下,NAT方式Linux也就能上网了。
背景:重装系统后,配置Vmware后有可能里面的Linux无法上网。尽管IP一样的,但是就他妈的上不了外网,给升级Rpm包带来困难,路由如下:
root@192.168.137.128:~# traceroute baidu.com
traceroute to baidu.com (220.181.111.86), 30 hops max, 60 byte packets
1  192.168.137.2 (192.168.137.2)  0.348 ms  0.307 ms  0.295 ms
2  * * *
3  * * *
4  * * *
修改后是这样的:
root@192.168.137.128:~# traceroute baidu.com
traceroute to baidu.com (220.181.111.86), 30 hops max, 60 byte packets
1  192.168.137.1 (192.168.137.1)  0.188 ms * *
2  * * *
3  * * *
。。。。。。
29  * * *
30  * * *
也就是说还是没明确的路由,但Ping是通的,Curl是通的,能获取到数据就是Ok。

......
Is this ok [y/N]: y
Downloading Packages:
traceroute-2.0.14-2.el6.x86_64.rpm    
......
Running Transaction
  Installing : 3:traceroute-2.0.14-2.el6.x86_64    
  Verifying  : 3:traceroute-2.0.14-2.el6.x86_64    
Installed:
  traceroute.x86_64 3:2.0.14-2.el6      
Complete!
________________________________________________________________________________________________________
防火墙是要开启的,否则在共享时会返回null的问题:
1.services.msc
2.找到:Windows Firewall,启动类型:自动,启动:让服务状态为已启动。
——网上其实很多方法,都不行,我想可能是Vmware6.0和其下面的虚拟机的一个重装后的小Bug—————
解决办法:【第8条才是关键,特别注意。】
0)删除:修改 /etc/udev/rules.d/70-persistent-net.rules 文件
删除掉 关于 eth0 的信息。修改 第二条 eth1 的网卡的名字为 eth0. 重启服务器。
http://jackxiang.com/post/5651/
1)移动:下ifcfg-eth0到ifcfg-eth0.bak
2)关闭:ifconfig eth0 down
3)启动:ifconfig eth0 up
4)  重置:/etc/init.d/network reload
5)还原:ifcfg-eth0.bak -》ifcfg-eth0
6)重启:service network restart
7)把services.msc里的Vmware服务都全开了。
8)一系列都做了通过service network restart还是不能获取到新的DHC ip段:
VMware下->Edit->Virtue Network Settings...->DHCP->选 Vmware8(properties)->Start IP address(这块由:192.168.137.128修改最后一位:129),也就再service network restart 获取到129了,再修改回去就成(我估计这里之所以修改128成129是因为DHCP有缓存:192.168.157.128终于变为:192.168.137.128),呵呵,不容易,不知vmware的高版本有没有这个问题。
9)有时间win7要修改成:192.168.137.128 才能上网,而前面默认就是128,你得修改下vmware下的linux才能变IP第三位(由129变到128),而你修改的是最后一位128到129,于是你想还回去,可就又不行了,这也是vmware6.0的问题,这样就Ok了:
你再修改为更低:如:192.168.137.120 (128),再修改下注册表到另外的IP(192.168.138.0),再启动Vmware进行修改到:192.168.138.128。为此,你再关闭后修改注册表改回:192.168.137.0,启动vmware还回去(192.168.137.128)就可以了。
其实以上所有操作都是为了能让vmware下的linux能够获取到正确且能上网的ip:192.168.137.128。这个128是由dhcp确定的,必须修改,但修改后又有可能上不了外网。(这点也是奇怪的),也就只能这样折腾了,vmware6.0害人呐,呵呵。

最后,这个Vmware6.0下的虚拟Linux也就可以上网更新rpm了,NAT的Vmware6.0生成的Vmware8的访问类型:无法连接到Internet(其实也能访问),再就是防火墙要打开,否则共享会出现null的提示。
vi /etc/sysconfig/network-scripts/ifcfg-eth0  
阅读全文
https://bitbucket.org/PinIdea/fcgi_ext/
老外点评:
该用法有点意思,不过是特定场景下的应用:
有点像分布式事务
规避php的高资源消耗
原先的php代码中需要访问solr获得搜索结果,然后回传nginx
但是solr不稳定,或者说获得结果的时间比较长,不确定
这样php代码必须得持有很多资源等待结果
所以导致系统负载很大
改进方案就是在nginx和php之间增加golang的deamon程序
让golang去等待搜索结果
得到结果后,扔给后方的php,再回传nginx
所以golang等待的时候,就不会持有那么多资源
每次vim 一个文件,光标都在最上面的位置,不是上次我编辑的位置了..
进入vim后键入:
'0
即回到当初你编辑的位置
ctrl + o 回到光标回到上次位置
ctrl+i,ctrl+o跳转位置,完全没看手册啊

try  Ctrl+ o
配合ctrl + ] 阅读代码时尤其便捷
——————————————————————
PS: 如果想把光标停止在指定的行, 这样
vim +n urfile // n为行号
如果要停留在行尾, 这样
vim + urfile
来自:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1024941&page=1
http://blog.longwin.com.tw/2012/09/vim-last-read-line-2012/
http://bbs.chinaunix.net/thread-1271757-1-1.html


vim-重新打开回到上次所编辑文件的位置:
应用场景:
在每次退出一份文件后再重新打开该文件时,希望光标停留在当时退出的地方;也就是说当我程序写到hello.c的第100列时突然有事必须关电脑了,那在我下次打开电脑以vim打开hello.c, 希望光标还是停留在第100列,怎么办?

解决方案就是在.vimrc里面加上这一行即可:
au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif  

google大神的礼物: 
http://bbs.chinaunix.net/viewthread.php?tid=1024941&page=1
我的无线WIFI设置成这个iP以后,连接到这个WIFI的用户才能上网,设置成192.168.0.1就不行,为什么?
192.168.136.*也不行,但我不知道为什么?是不是192.168.137.*这个IP 段具有特别的意义?

是这样的:因为在192.168.1.0/24这个的意思就是说前24位是网络位,而后八位是主机位
在你的网关中规定了,子网掩码是255.255.255.0对吧?这个的意思和/24一样,只不过是另一种表示方式,而你的网关地址应该是192.168.137.*对吧,这两个数据确定了你网络192.168.137.0
并不是这个ip有什么特别,在路由器里设置一下就好了

点击确定(OK)之后,将会出现如下的说明:
大致是说,将会自动把无线网卡的ip地址设置成为192.168.137.1的地址。
点击确定(OK),即可。
win7简单搭建WIFI热点使iphone快速上网(很仔细)
2012-1-26 12:35:21 上传下载附件 (27.5 KB)


(10)、这个时候查看无线网卡的IP地址,确保一定要是上面提示说明的IP地址。
ip地址:192.168.137.1
掩码:255.255.255.0


摘录:http://bbs.app111.com/thread-176775-1-1.html
这个更界面化:http://www.cnblogs.com/rocketfan/archive/2009/11/15/1603465.html

GNU gprof 是一款linux平台上的程序分析软件(unix也有prof)。借助gprof可以获得C程序运行期间的统计数据,例如每个函数耗费的时间,函数被调用的次数以及各个函数相互之间的调用关系。gprof可以帮助我们找到程序运行的瓶颈,对占据大量CPU时间的函数进行调优(gprof统计的只是CPU的占用时间,对I/O瓶颈貌似无能为力,耗时甚久的I/O操作很可能只占据极少的CPU时间)。
gprof的使用非常简单,在编译链接的时候加上"-pg"选项,然后按照正常方式运行程序,如果程序正常退出,一个名为gmon.out将会产生。使用gprof可查看gmon.out中的统计结果:

gprof <options> [executable-file] [profile-data-file(s)……] [>outfile]

可通过man gprof 查看各选项含义,通常会加上"-b"选项禁止显示冗长的说明信息。
executable-file如果没有指定,则会默认为a.out。
profile-data-file可跟多个文件,若没有指定,默认gmon.out。
统计信息较多,最好重定向到outfile方便查看。
最终呈现的统计信息包括两张表:flat table和call graph。flat table列出了各个函数的运行时间(不包括子函数)及所占总运行时间的比率,函数的调用次数;call graph还包括函数之间的调用关系,详细列出了每个函数在它的各个子函数上所耗费的时间。
下面一个简单的例子说明一下两张表中各项的含义:
待分析的程序源码:
#define MAX 10000000
void f() {
long long sum = 0;
for (long long i=0;i<MAX;i++)
sum += i;
}
void g() {
long long sum = 0;
for (long long i=0;i<MAX;i++)
sum += i;
f();
}
int main() {
long long sum = 0;
for (long long i=0;i<MAX;i++)
sum += i;
f();
g();
}

Flat profile:
Each sample counts as 0.01 seconds.
  %          cumulative          self         self                           total          
time         seconds         seconds    calls        ms/call      ms/call     name    
50.00         0.07                 0.07         2            35.00       35.00         f()
28.57         0.11                 0.04         1            40.00       75.00         g()
21.43         0.14                 0.03                                                        main
% time:各个函数占用的时间比率(不包括子函数),这一列加起来应该为100%
cumulative seconds:累积时间,当前行减去上一行即为当前函数耗费时间
self seconds:当前函数耗费时间(不包括子函数)
self calls:调用次数
ms/call:调用一次耗费的平均时间(不包括子函数),单位毫秒
total ms/call:同上,但包括子函数
name:函数名

call graph:
granularity: each sample hit covers 4 byte(s) for 7.14% of 0.14 seconds
index      % time    self     children    called        name
                                                                     <spontaneous>
[1]            100.0    0.03       0.11                        main [1]
                             0.04       0.04         1/1           g() [2]
                             0.04       0.00         1/2           f() [3]
-----------------------------------------------
                             0.04       0.04          1/1          main [1]
[2]              53.6    0.04       0.04          1             g() [2]
                             0.04       0.00          1/2          f() [3]
-----------------------------------------------
                             0.04       0.00          1/2          g() [2]
                             0.04       0.00          1/2          main [1]
[3]              50.0    0.07       0.00           2            f() [3]
-----------------------------------------------

每个函数都分配了一个index,index按升序排列,一个函数对应一个entry,两个entry之间用虚线隔开。
在每个entry中,以[index]起头的行称为primary line。primary line上面的行称为caller's line,列举的是调用该函数的函数;下面的行subroutine's line列举的是该函数调用的子函数。这三种line的各项名称虽然相同,但有着截然不同的含义。
以下都以第二个entry为例说明:

primary line
index      % time    self     children    called        name
[2]              53.6    0.04       0.04          1             g() [2]
%time:g()耗费的时间比率。该比率包括了调用的f(),因此各个entry的该项数字加起来不等于100%。
self:同flat table的self seconds。
children:f()耗费的时间。下面的subroutines's line 的self项和children项之和应等于该数值。
called:只被调用了一次。

subroutine's line
index      % time      self       children       called        name
                                0.04       0.00            1/2           f() [3]
self:f()被g()调用过程中,f()的耗费时间0.04s。
children:f()被g()调用过程中,f()中的子函数耗费时间为0。
called:f()一共被调用了2次,其中有1次被g()调用。

caller's line
index      % time      self       children       called        name
                               0.04       0.04            1/1            main [1]
self:g()被main()调用过程中,g()的耗费时间。
children:g()被main()调用过程中,g()中的子函数耗费的时间。
called:g()一共被调用了1次,其中1次是被main()调用的。

gprof的基本原理
类似于gdb,gprof需要对待分析的程序做一些改动,因此在程序编译的时候需要加上"-pg"选项,如果程序的某个模块在编译的时候没有加上"-pg",则该模块的函数会被排除在统计范围之外。比如想要查看库函数的profiling,则需在链接库函数的时候用“-lc_p"代替”-lc"(gprof是各个类UNIX的标准工具,系统自带的链接库通常有两个版本,它们的区别在于编译的时候是否加上了"-pg"。用-lc_p等于告诉编译器选择加上了"-pg"的那个版本)。
加上"-pg"选项后,程序的入口会于main()之前调用monstartup(),主要是申请内存存储接下来获取的统计信息。
在每个函数中会调用mcount(),主要是在函数的堆栈中查询父函数和子函数的地址并保存下来。
最后会在程序退出前调用_mcleanup(),将统计结果保存到gmon.out中,并完成清除工作。
gprof统计各个函数的运行时间是采用的抽样的方法,周期性的查看Program counter指向哪一个函数的地址段,并把结果以直方图的形式保存下来。

PS:
有人建议在编译时不要加上"-g"选项,因为这样可能会影响分析结果。
通常gprof的采样周期是0.01s,统计项越接近这个值误差可能越大。若函数的运行时间低于0.01S,统计值会显示为0。

关于这一主题的有用链接:
http://www.cs.utah.edu/dept/old/texinfo/as/gprof_toc.html:关于options, flat table, call graph有更详细的论述。
http://wiki.waterlin.org/Cpp/gprof.html:对gprof的实现原理论述得很清晰。
http://sam.zoy.org/writings/programming/gprof.html:对多线程profiling。
http://linuxfocus.org/English/March2005/article371.meta.shtml:提到了perl和java的profiling方法。

来自:http://blog.sina.com.cn/s/blog_6608391701013phr.html
Linux查看文件句柄占用多的进程 :

其中第一列是打开的句柄数,第二列是进程ID。
可以根据ID号来查看进程名:

8798 8770 8797 8770 8769 8764 8763 8713 8618 均是PHP的PHP-FPM的句柄数,也就是说第一是virtualBOX,再才是certmonger服务,后是clock-applet,再后是php-fpm进程,这些进程文件数分布排列很正常~
(1)这个没啥用就关了得了:
certmonger 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
chkconfig certmonger  off
root@119.10.6.54:~# chkconfig certmonger  off
root@119.10.6.54:~# chkconfig --list|grep certmonger
certmonger      0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭
root@119.10.6.54:~# service certmonger stop
停止 certmonger:                                          [确定]

重启后按Esc或者F5键,可以查看系统启动过程,卡在哪里,我的是在certmonger启动OK之后卡住的,完全有必要停掉,来源:
http://www.linuxidc.com/Linux/2015-02/112688.htm

(2)/usr/libexec/clock-applet --oaf-activate-iid=OAFIID:GNOME_ClockApplet_Factory --oaf-ior-fd=29
这个好像是gnome的时间同步啥的一个服务,暂时不关。
(1)查看Linux系统默认的最大文件句柄数,系统默认是1024

(3)对服务器没有用的也关了,调节cpu速度用来省电,常用在Laptop上:
service cpuspeed stop
chkconfig cpuspeed off

——————————————————————————————————————————————————
ulimit -n
1024

(2)查看当前进程打开了多少句柄数
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
131 24204 
57 24244  
57 24231   ........
其中第一列是打开的句柄数,第二列是进程ID。

(3)可以根据ID号来查看进程名。
ps aef|grep 24204
nginx  24204 24162 99 16:15 ?    00:24:25 /usr/local/nginx/sbin/nginx -s

来自:http://www.examw.com/linux/all/146041/

accept4() failed (24: Too many open files)
如何优化这个
ulimit -n 是多少?
文件描述符不够用了
1024
这个可以开大点
能开多大,如何去衡量啊
内存足够都可以
一般开10万
好的,我看看。
来源:PHP高级编程QQ对话。
=========================================
实践如何找到当面数据库打开了多少个文件句柄数的如下实践:
1)先PS一下获取到Mysql的进程号:
root      4935  0.0  0.0  63992   272 ?        S    Aug06   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/conf/my.cnf
mysql     5622  4.5 83.4 14974096 6823984 ?    Sl   Aug06 149:07 /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/conf/my.cnf --basedir=/usr/local/mysql --datadir=/data/db/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/db/mysql/localhost.localdomain.err --open-files-limit=65535 --pid-file=/data/db/mysql/localhost.localdomain.pid --socket=/tmp/mysqld.sock --port=3306
2)得到如下两个进程号:
4935
5622

3)通过lsof获取到所有进程的句柄数再grep一下就得到了当前mysql的进程为4935的句柄数:
/usr/sbin/lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|grep 4935
4 4935
4)一样的方法:
/usr/sbin/lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|grep 5622
4 5622

目前只打开了4个文件句柄数量,远远底于系统默认值1024。

=========================================
在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:
    # lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more    
        131 24204  
         57 24244  
         57 24231  
         56 24264  
其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。
    ps -aef|grep 24204  
    mysql    24204 24162 99 16:15 ?        00:24:25 /usr/sbin/mysqld  
哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。
但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:
    ulimit -HSn 4096  
以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后。
用普通用户登录,执行ulimit -n,查看文件打开数。
如果太小,默认值是1024,则进行如下操作:
使用root用户修改/etc/ security /limit.conf文件。
在文件最后加如下两句话:
*   soft nofile 50000
*   hard nofile 50000
参考:http://hi.baidu.com/itnote/item/7347bfea829e3ee3fa42bad8
背景:把一个项目代码(里面有.svn)拷贝到另一个文件夹里,用: cp -Rf /home/soruce/* /home/tmp/   发现soruce下面没有.svn,在它的子目录下有。
于是:
用命令 cp /home/soruce/* /home/tmp/
不能拷贝.隐藏文件,cp .*还行。
*为什么不匹配.文件呢,查manual也没有找到答案。

把dira目录中的所有文件(包括隐藏文件)复制到dirb中
正解:cp -a /tmp/dira/. /tmp/dirb
man 一下 cp
-a ,--archive
same as -dpR
实践成功拷贝当前目录的隐藏文件如下:

只拷贝点的隐藏文件的方法:

来自:http://blog.csdn.net/wzwind/article/details/8587764
在“工具-》首选项-》语法”设置函数模式。
其实就是匹配函数的正则表达式。

一:让EditPlus支持PHP5的函数列表:
将函数模式改为:
^[ \t]*[a-z| ]*function[ \t].*\([^;]*$

二:C/C++
默认:^[A-Za-z_].*\([^;]*$  这个匹配还成。
有兄弟说这个,实践感觉好像匹配多了点如else给匹配上了,如下:
^[\t ]*[a-zA-Z]+[\t ]+[a-zA-Z_][a-zA-Z0-9_]*[\t ]*\(.*\)[/t ]*\{?[\t ]*[\r\n$]
[Wed Jul 10 21:12:46.109914 2013] [unique_id:alert] [pid 3870] (EAI 2)Name or service not known: AH01564: unable to find IPv4 address of "jackxiang.localdomain"

添加:
127.0.0.1   jackxiang.localdomain  
    xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如 # find . -type f -name "*.log" | xargs rm -rf *就将以log结尾的文件删除了,如果我想去移动或者复制就需要使用参数来代替了。 xargs  -i 参数或者-I参数配合{}即可进行文件的操作。 -I replace-str
              Replace  occurrences  of  replace-str  in the initial-arguments with names read from standard input.  Also, unquoted blanks do not terminate
              input items; instead the separator is the newline character.  Implies -x and -L 1.

       --replace[=replace-str], -i[replace-str]
              This option is a synonym for -Ireplace-str if replace-str is specified, and for -I{} otherwise.  This option is deprecated; use -I  instead.
man了一下看的还是不太懂,通过例子,做作实验将我的理解写一下。 ############### 操作的目录下的文件###############[root@test05 ab]# ls
1kk.zip  3kk.zip  5kk.zip  b.rar  d.rar  f.rar  h.rar  j.rar  mini.txt  ni.txt
2kk.zip  4kk.zip  a.rar    c.rar  e.rar  g.rar  i.rar  k.rar  nii.txt###################使用 i 参数 ##################
[root@test05 ab]# find . -type f -name "*.txt" | xargs -i cp {}  /tmp/k/
[root@test05 ab]# ls ../k/
mini.txt  nii.txt  ni.txt
[root@test05 ab]# ###################  使用 I  参数 ################
[root@test05 ab]# find . -type f -name "*.txt" | xargs -I {} cp {}  /tmp/n/
[root@test05 ab]# ls ../n/
mini.txt  nii.txt  ni.txt 结果出来了,  加-i 参数直接用 {}就能代替管道之前的标准输出的内容; 加 -I 参数 需要事先指定替换字符

来自:
http://hi.baidu.com/xmflycat/item/359efb2dbc490799b6326358
---------------------------------------------------------------------------------------------------------------------
如下实践,更容易理解:
查看线程的方法:
          ps -efL, 其中的LWP是线程ID(why是这个), nlwp是线程数.
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
也就是第四位,是它的线程ID,而第二位则是进程的PID,第三位是子进程号:

看线程PID:
ps -efL|grep logstash|awk '{print $4}'|wc
    148     148     888

查看进程28740是主进程,28741是子进程,28265则是程序的主进程来自:
[root@iZ25dcp92ckZ ~]# ps aux|grep 28265
root     28265  0.0  0.3 116648  3412 pts/0    Ss   21:29   0:00 -bash:
也就是bash终端~





列名分别是:
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
其中
UID为User ID.
PID为processid,进程标识符
PPID为 parent processid,父进程标识符2,
LWP为light weight process orthread, 轻量级进程,即线程标识符
NLWP为,number oflwps(threads) in the process, 线程的数量

摘自:http://blog.csdn.net/jiafu1115/article/details/19070015

——————————————————————————————————————————————————————
48属于www用户的id,这儿我这个没有添加,所以没有显示www,对上面这些线程进行跟踪:

————————————————————————————————

1、 cat /proc/${pid}/status
Threads:        2 //这个是核心,2个线程!如下:
[root@test multepoolserver]# cat /proc/26202/status
Name:   multipepollserv
State:  S (sleeping)
SleepAVG:       58%
Tgid:   26202
Pid:    26202
PPid:   18260
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
FDSize: 256
Groups: 0 1 2 3 4 6 10
VmPeak:    26036 kB
VmSize:    26036 kB
VmLck:         0 kB
VmHWM:      1144 kB
VmRSS:      1144 kB
VmData:    10508 kB
VmStk:        84 kB
VmExe:        16 kB
VmLib:      3052 kB
VmPTE:        80 kB
StaBrk: 03103000 kB
Brk:    03124000 kB
StaStk: 7fff73219100 kB
Threads:        2
SigQ:   1/70656
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 0000000180004407
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff
Cpus_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,000000ff
Mems_allowed:   00000000,00000003

2、pstree -p ${pid}
[root@test multepoolserver]# pstree -p 26202
multipepollserv(26202)─┬─multipepollserv(26203)
                       └─{multipepollserv}(26204)

26204 就是一个线程。

[root@test multepoolserver]# ps aux|grep httpmut
root     26202  0.0  0.0  26036  1144 pts/10   Sl+  17:35   0:00 [httpmut: master process] H?????5r%
www      26203  0.0  0.0  15840   468 pts/10   S+   17:35   0:00 [httpmut: worker process] H?????5r%

3、top -p ${pid} 再按H   或者直接输入 top -bH -d 3 -p  ${pid}
[root@test multepoolserver]# top -p 26202
按大写的H(shift+h),就能看到有几个线程:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
26202 root      18   0 26036 1144  984 S  0.0  0.0   0:00.00 multipepollserv
26204 root      20   0 26036 1144  984 S  0.0  0.0   0:00.00 multipepollserv

top -bH -d 3 -p 26202  //3秒刷新一次
[root@test multepoolserver]# top -bH -d 3 -p 26202
top - 17:39:34 up 650 days,  3:35, 10 users,  load average: 1.04, 1.01, 1.01
Tasks:   2 total,   0 running,   2 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.9%us,  0.3%sy,  0.0%ni, 97.8%id,  0.9%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8180460k total,  7648040k used,   532420k free,  1269016k buffers
Swap:  8385920k total,   218976k used,  8166944k free,  4855668k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
26202 root      18   0 26036 1144  984 S  0.0  0.0   0:00.00 multipepollserv
26204 root      20   0 26036 1144  984 S  0.0  0.0   0:00.00 multipepollserv

top -H
手册中说:-H : Threads toggle
加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。

4、ps xH
手册中说:H Show threads as if they were processes
这样可以查看所有存在的线程。

5、ps -mp <PID>
手册中说:m Show threads after processes
这样可以查看一个进程起的线程数。
http://liulinxia02.blog.163.com/blog/static/268687720111129103740947/

[root@test multepoolserver]# ps aux|grep httpmut
root     26202  0.0  0.0  26036  1144 pts/10   Sl+  17:35   0:00 [httpmut: master process] H?????5r%
www      26203  0.0  0.0  15840   468 pts/10   S+   17:35   0:00 [httpmut: worker process] H?????5r%
root     26206  0.0  0.0  61172   748 pts/14   S+   17:35   0:00 grep httpmut
[root@test multepoolserver]# ps -mp 26202
  PID TTY          TIME CMD
26202 pts/10   00:00:00 multipepollserv
    - -        00:00:00 -
    - -        00:00:00 -
[root@test multepoolserver]# ps -mp 26203
  PID TTY          TIME CMD
26203 pts/10   00:00:00 multipepollserv
    - -        00:00:00 -







——————————————————————————————————————————

在linux中查看线程数的三种方法

在linux中查看线程数的三种方法
  www.2cto.com  
1、top -H
手册中说:-H : Threads toggle
加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。

2、ps xH
手册中说:H Show threads as if they were processes
这样可以查看所有存在的线程。

3、ps -mp <PID>
手册中说:m Show threads after processes

这样可以查看一个进程起的线程数。

来源:http://www.2cto.com/os/201212/177103.html
更多:http://www.360doc.com/content/13/0512/13/9085503_284797175.shtml
VMware虚拟机网络设置为NAT方式,而虚拟机(系统为CentOS)中的默认gateway并不使用VMnet8这块虚拟网卡的IP地址(192.168.38.1),而默认使用的是192.168.38.2,为什么?

真实系统中的vmnet8网卡IP地址是网关,你虚拟机里面的网卡IP地址怎么可能和vmnet8设置的地址一样?

那个虚拟的网卡就是网关,所以你虚拟系统里面的网卡IP地址只能是192.168.38.X,网关要设置成你真实系统里面看到的vmnet8的网卡IP,否则无法上网。

追问:
    你误解了,我是说虚拟机里面的网卡的网关不是vmnet8网卡的ip地址,详细情况为:虚拟机:网卡ip为192.168.38.128,网关为192.168.38.2。主机:vmnet8网卡ip为192.168.38.1我想问的是为什么虚拟机中网卡的网关不为192.168.38.1而为192.168.38.2?

回答:

    你打开你虚拟机安装目录,找到vmnetcfg.exe配置这个文件,然后找到vmnet8,在NAT配置里面也会看到这样一行,默认网关192.168.38.2

    主机网卡IP 192.168.38.1是对外连接的IP,192.168.38.2是LAN网络,就是虚拟机NAT网络的网关,




vmnet8就相当于连接到内网的网卡,而虚拟机本身则相当于运 行在内网上的机器

所以192.168.38.2没错呀。
因为.1被用来连接主机的实际网卡了,所以,网关是:192.168.38.2。

来处:http://wenwen.soso.com/z/q228962597.htm

二:用DHCP上vmware8下进行上网:
设置主机名称与默认网关(通过vi编辑器打开/etc/sysconfig/network文件)

  [root@hostname root]# vi /etc/sysconfig/network

  按照下图设置,注意HOSTNAME这里设置成daquan.wang.com,配置完成后,重启机器后hostname会变成daquan。


设置网卡参数(通过vi编辑器打开/etc/sysconfig/network-scripts/ifcfg-eth0文件)
ONBOOT="yes"      
DEVICE="eth0"    
BOOTPROTO="dhcp"

设置DNS主机的IP(通过vi编辑器打开/etc/resolv.conf文件)

  [root@hostname root]# vi /etc/resolv.conf

  下图无需设置,大家看一下即可,如果不是如下,重新启动机器应该就会自动设置,因为已经设置为DHCP,nameserver会自动设置成VMnet8的Gateway IP Address,nameserver就起到Windows下的DNS Server作用,这种设置类似于Windows域环境下的DNS转发器,说明这个地址会自动转发DNS查询到主机的DNS。

来源 :http://www.linuxeden.com/html/netadmin/20080307/50368.html
分页: 19/24 第一页 上页 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 下页 最后页 [ 显示模式: 摘要 | 列表 ]