March 2024

关于”running yum-complete-transaction first” 的提示信息

  • Published in CentOS 6
  • June 13, 2013

今天在用yum升级一台新机器时,顾客用ssh远程把server重新启动了。之后,在使用yum 时总是有提示信息:

There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
The program yum-complete-transaction is found in the yum-utils package.

意思是,有未完成的yum事务,建议先运行yum-complete-transaction命令清除。

处理步骤:

# 安装 yum-complete-transaction

yum install yum-utils

# 运行 yum-complete-transaction

yum-complete-transaction –cleanup-only

# 清除可能存在的重复包

package-cleanup –dupes

# 清除可能存在的损坏包

package-cleanup –problems

Read more...

按行数分割

  • Published in reaver
  • June 5, 2013

有个文件要处理,因为很大,所以想把它切成若干份,每份N行,以便并行处理。怎么搞呢?查了下强大的shell,果然有现成的工具--split
下面记录下基本用法:

 
  1. split [-bl] file [prefix]  


参数说明:

-b, --bytes=SIZE:对file进行切分,每个小文件大小为SIZE。可以指定单位b,k,m
-l, --lines=NUMBER:对file进行切分,每个文件有NUMBER行。

prefix:分割后产生的文件名前缀。

 

示例:

假设要切分的文件为test.2012-08-16_17,大小1.2M12081行。

1)

 
  1. split -l 5000 test.2012-08-16_17  

生成xaaxabxac三个文件。
wc -l 看到三个文件行数如下:
5000 xaa
5000 xab
2081 xac

  1. 总计

2) 

  1. split -b 600k test.2012-08-16_17  

生成xaaxab两个文件
ls -lh 看到 两个文件大小如下:
600K xaa

  1. xab

3)

 
  1. split -b 500k test.2012-08-16_17 example  

得到三个文件,文件名的前缀都是example
ls -lh 看到文件信息如下:
500K exampleaa
500K exampleab
154K exampleac

Read more...

File "/usr/lib/vmware-tools/install/vmware-open-vm-tools-xorg-drv-display/x-conf-rhel.py", line 6, in ?

 

yum remove vmware-* -y
rpm -e --noscripts vmware-open-vm-tools-xorg-drv-display.x86_64
rpm -e --noscripts vmware-open-vm-tools-xorg-drv-mouse.x86_64

 

 

 

Unable to create symbolic link "/usr/lib/vmware-tools/bin"

or

Unable to create symbolic link "/usr/lib/vmware-tools/libconf"

Seems the installer has a bug where it fails to remove the existing directory before creating the symlink (it prompts to overwrite, but of course overwriting a dir with a symlink is not possible - therefore I'd call this a BUG)

The solution is to simply remove the existing dirs:

rm -rf /usr/lib/vmware-tools/libconf
rm -rf /usr/lib/vmware-tools/bin

and run the install again:

./vmware-install.pl -d

Read more...

ntpq -p输出含义

  • Published in CentOS 6
  • June 4, 2013

位置

标志

含义

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实例操作学习记录

  • Published in CentOS 6
  • May 31, 2013

 

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

  • Published in reaver
  • May 30, 2013

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处理超大文件

  • Published in reaver
  • May 30, 2013

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

1.关闭行号显示

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

2.不使用临时文件

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

3.关闭文件检测和转换

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

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

这是我们要打开的文件:

用UE打开:

 

Read more...
Subscribe to this RSS feed