ntpq -p输出含义


位置

标志

含义

remote之前

*

响应的NTP服务器和最精确的服务器

+

响应这个查询请求的NTP服务器

blank(空格)

没有响应的NTP服务器

列表上方

remote

响应这个请求的NTP服务器的名称

refid

NTP服务器使用的更高一级服务器的名称

st

正在响应请求的NTP服务器的级别

when

上一次成功请求之后到现在的秒数

poll

本地和远程服务器多少时间进行一次同步,单位秒, 在一开始运行NTP的时候这个poll值会比较小,服务器同步的频率大,可以尽快调整到正确的时间范围,之后poll值会逐渐增大,同步的频率也就会相应减小

reach

用来测试能否和服务器连接,是一个八进制值,每成功连接一次它的值就会增加

delay

从本地机发送同步要求到ntp服务器的往返时间

offset

主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒,offset越接近于0,主机和ntp服务器的时间越接近

jitter

统计了在特定个连续的连接数里offset的分布情况。简单地说这个数值的绝对值越小,主机的时间就越精确
Read more...

awk实例操作学习记录

 

awk '/^root/ { print }' /etc/passwd    打印以root开头的行

 


awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。
awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。
例子:
一般语法格式
1.# awk '{ print }' /etc/passwd
或# awk '{ print $0 }' /etc/passwd
马上显示/etc/passwd的内容,其中$0变量表示整个当前行
2.# awk '{ print "william" }' /etc/passwd
或# awk '{ print "" }' /etc/passwd
第一条按照/etc/passwd文件中的行数显示william,第二条则显示空行。
 
字段
3.# awk -F: '{ print $1 }' /etc/passwd
或# awk -F: '{ print $1 $3 }' /etc/passwd
第一条打印输入文件中每一行中出现的第一个字段,第二条则打印第一和第三字段。其中-F:表示指定“:”作为字段分隔符。
4.# awk -F: '{ print $1 " " $3 }' /etc/passwd
# awk -F: '{ print "username: "$1 "\t\tuid: " $3 }' /etc/passwd
例3中输出的结果两个字段之间没有空格,这第一条命令就是加空格,第二条则加了文本标签。
 
外部脚本
5.# awk -f my.awk /etc/passwd
如果要运行外部的脚本加上-f选项即可,其中my.awk是脚本,/etc/passwd是要操作的文本。
 
BEGIN和END块
6.BEGIN{
FS=":"        相当于命令行中的-F:
}
{ print $1 }
END{
print "william"
}
awk开始处理文件之前会执行BEGIN块,awk处理文件之后会执行END块。
 
表达式和块
7.# awk '/root/ { print }' /etc/passwd    打印包含root的行
# awk '/^root/ { print }' /etc/passwd    打印以root开头的行
# awk '/~root/ { print NR NF }' /etc/passwd    有以root结尾的行打印当前记录数和当前记录字段数
# awk '/^root|wang/ { print }' /etc/passwd    打印以root或wang开头的行
# awk '/^[rw]/ { print }' /etc/passwd    打印以字母r或w开头的行
# awk '$1 ~/[0-9]/ { print }' /etc/passwd    打印字段1中以数字结尾的行
# awk -F: '$4 ^/[0-9]/ { print }' /etc/passwd    打印字段4中以数字开头的行
8.# awk -F: '$4==27 { print }' /etc/passwd    打印字段4等于27的行
# awk -F: '$4!=27 || $3>492 { print }' /etc/passwd    打印字段4不等于27或字段3大于492的行
# awk -F: '$4==27 || $3>42 { print $1+10 }' /etc/passwd    假如字段4等于27或者字段3大于42,打印$1+10的值,如果$1不是数字默认为0。
# awk -F: '{print $4==27 ? "ok" : "err"}' /etc/passwd    字段4等于27打印ok,否则打印err
# awk '/^root/,/^bin/' /etc/passwd    打印以root开头到以bin开头的所有行,假如出现第二个以root开头的行,则到下一个yibin开头的行结束或到文件结尾。
 
条件语句
9.BEGIN{
FS=":"
}
{
if($3==27){
        if($4==27){
        print "love"
        }
}
else if($1 ~/root/) { print "one"}    //~是包含,^是不包含
else {
         print "others" " " $1}
}
END{
print "william"
}
 
变量
10.BEGIN   {x=0}
/^$/ {x=x+1}
END {print "There are "x" blank lines."}
计算空白行的数量
11.# awk -f my.awk x=8 ./test.c 
原来是5,加入x=8后,结果变成了13.另外BEGIN   {x=0}可以不要。
12.BEGIN   {x="0.01"}    //注意变成字符串了
/^$/ {x=x+1}
END {print "There are "x" blank lines."}
执行# awk -f my.awk  ./test.c 结果是5.01
 
字段分隔符
前面设置FS=":",当然也可以设置多个任意字符为分隔符。
例如:
FS="\t+"    +号表示一个或多个
FS="root[0-9][0-9]"    表示root后面接两个数字为分隔符
 
记录分隔符
NR 记录号 NS 记录分隔符 FS字段分隔符
比如通讯录把名字 地址 电话号码整理为一个记录。其中文本如下
wang
Hunan Chenzhou
123456
 
li
Guangzhou Zhuhai
654321
13.执行脚本为:BEGIN {
    FS="\n"
    RS=""
}
{print $1 ","$2","$3}
输出:
wang,Hunan Chenzhou,123456
li,Guangzhou Zhuhai,654321
 
14.执行脚本为:BEGIN   {
FS="\n"
RS=""
OFS="-"    输出字段间隔
ORS="\nnext:\n"    输出记录间隔
}
{print $1, $2, $3}
输出:
wang-Hunan Chenzhou-123456
next:
li-Guangzhou Zhuhai-654321
next:
 
循环语句
15.BEGIN   {
FS="\n"
RS=""
OFS="-"
ORS=""
}
{
x=1
while(x<NF){
print $x "\t"    上面的OFS赋值将不起作用
x++
}
print $NF "\n"}
此外有do while,for,break,continue。
 
数组
16.
数组下标经常从1开始,而不是0
数组下标字符串化 例如:myarr["name"]="wang" 就算不是字符串也会被看成字符串。
17.delete myarr[1]     删除数组元素1
18.if (wang in myarr) {print "ok"}     查看数组元素
 
字符串函数
string="Wo men shi ku bi de cheng xu yuan !"
print string[2]     会报错!!
怎么办?
print length(string)    打印字符串长度
print index(string,"men")    查找men在字符串中的位置
print tolower(string)    转换为小写
print toupper(string)    转换为大写
mysbu=substr(string,startpos,maxlen)    在startpos开始截取maxlen这么长的字符
print match(string,/men/),RSTART,RLENGTH    寻找匹配men的位子和长度
sbu(old,new,string) 替换一个
gsbu(old,new,string)    全部替换
num=split("1,2,3,4,5,6",mynum,",")    切开字符串,并将各部分放到整数下标的数组中
 
函数格式
function 函数名(参数)
{
    ……
}

 

Read more...

可以连接网络 浏览器无法上网

简单来说netsh winsock reset命令含义是重置 Winsock 目录。如果一台机器上的Winsock协议配置有问题的话将会导致网络连接等问题,就需要用netsh winsock reset命令来重置Winsock目录借以恢复网络。

winsock是windows网络编程接口,从Windows XP SP2开始内置了一条命令使用netsh能够对该接口进行修复。

netsh是一个能够通过命令行操作几乎所有网络相关设置的接口。比如设置IP,DNS,网卡,无线网络等。
netsh winsock reset:
先进入netsh
然后进入winsock这个部件
对winsock这个部件执行reset命令。
效果就是重置Winsock。对于一些WinSock被破坏导致的问题有奇效。在netsh出现之前,对于WinSock问题的修复是非常繁琐的。

Read more...

Remove duplicates line from files

perl -ne 'print unless $a{$_}++' file > out put file

 

 

awk '{a[$1]} END {for(i in a) print i}' filename > out put file

 

sort myfile.txt | uniq > out put file

 

 

awk '!_[$0]++' file

 

 

ruby -00 -ne 'puts $_.split("\n").uniq' file

 

 

perl -ne 'print unless $a{$_}++' file

 

 

sed '$!N; /^\(.*\)\n\1$/!P; D'

 

 

 

Read more...

使用UltraEdit处理超大文件

UE可以处理几乎任意大小的文件,当你想阅读GB级别的LOG文件时,UE时很好的选择。

1.关闭行号显示

关闭行号显示可以让你更快的打开一个大型文件。

2.不使用临时文件

不使用临时文件可以减少加载大型文件的时间。你可以设置阈值来合理使用这个功能。

3.关闭文件检测和转换

最后,关闭文件检测和转换功能,就能快捷的打开大型文件了。

设置好以后,我们用一个4GB的文件来做测试。

这是我们要打开的文件:

用UE打开:

 

Read more...

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

解决办法非常简单:

#vim /web/apache/conf/httpd.conf (在这里/web/apahce是我安装apache的目录,你默认安装的话应该是/usr/local/apache2/icons)

找到#ServerName www.example.com:80   把#去掉,再重启apache即可没事了。

现象:

bogon:~/webserver/httpd-2.0.59 # /usr/local/apache2/bin/apachectl start
httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
httpd (pid 20183) already running


這個問題應該是沒有在 /etc/httpd/conf/httpd.conf 中設定 ServerName  

vi /usr/local/apache2/conf/httpd.conf


最简单的,修改httpd.conf文件,增加:
ServerName www.example.com:80
我的改为:

ServerName www.example.com:80



再次启动就正常了!
------------------------------------------------------------------------------------------------------------------------------------------------------------
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
httpd (pid 7907) already running
修改:去掉注释即可。
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName www.example.com:8080


解决方案:
进入apache的安装目录:
Windows : D:\Program Files\Apache Software Foundation\Apache2.2\conf
linux : /usr/local/apache/conf
用记事本打开httpd.conf
将里面的#ServerName localhost:80注释去掉即可。
再执行httpd
然后可以通过浏览器访问http://localhost:80,如果页面显示“It works!”,即表示apache已安装并启动成功。

Read more...

[warn] NameVirtualHost *:80 has no VirtualHosts

错误:[warn] NameVirtualHost *:80 has no VirtualHosts 

原因:定义了多个NameVirtualHost

解决:Ubuntu之前的版本定义在/etc/apache2/sites-available/default, 8.04后在/etc/apache2/ports.conf

故可以将/etc/apache2/ports.conf中的NameVirtualHost *:80注释掉

这个问题的本质是在没有定义域名是一个端口只能对应一个虚拟主机,将NameVirtualHost *:80改为其他端口也可以解决

如果有多个不同的域名的话,用同样的端口也可以

Read more...
Subscribe to this RSS feed
Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/vhosts/shan.info/httpdocs/templates/gk_publisher/html/com_k2/templates/default/category.php on line 191