作者存档: admin

grep使用方法汇总

grep最重要的功能就是进行字符串数据的比较,然后将符合需要的字符串打印出来,下面的使用方法大家可以到自己的美国vps上用ssh命令试验,这样记得更牢固。

grep在查找时,是以“行”为单位来进行数据选取的。
grep除了可以进行文件的数据搜索外,也经常应用在输入/输出的数据处理中。
语法:grep [ -acinv ] ‘字符串’ filename
-a,在二进制文件中,以文本文件的方式搜索数据
-c,计算找到“字符串”的次数
-i,忽略大小写
-n,输出行号
-v,反向选择,即显示没有“字符串”的那一行
搜索特定的字符串
grep ‘root’ /var/log/secure
显示/var/log/secure文件中有root的行

使用-n参数显示行号
grep -n ‘root’ /var/log/secure

grep -v ‘root’ /var/log/secure
显示/var/log/secure文件中没有root的行

使用[ ]进行搜索
如果要搜索boot或root时,由于这两个单词有共同的oot部分,可以使用如下的搜索方法:
grep -n ‘[r]oot’ /var/log/secure

在[ ]中,不论有多少个字符,都只代表一个字符。
[ ]中仅代表一个待搜索的字符。例如a [ bcd ] e表示可搜索的字符串可以是abc、ace和ade。
例如,我们可以使用如下语句来搜索含有oo字符的行:
grep -n ‘oo’ /var/log/secure
如果要排除oo前面有字母r的话,可以使用集合字符中的反向选择[^]来实现。
grep -n ‘[^]‘ /var/log/secure
此时,将没有任何输出结果。

假设oo前面不想出现小写字母,可以写为[^abcd...z],还可以简化为[^a-z]。
在一组集合字符中,如果该字符组是连续的,例如大小写英文或数字等,可以使用[a-z]、[A-Z]、[0-9]的方式书写,如果字符串是数字与英文,可以写为[a-zA-Z0-9]。其中,减号(-)代表两个字符之间的所有连续字符。

行首与行尾字符^和$
如果搜索root,并列出只在行首出现root的行,需要使用定位符:
grep -n ‘^root’ /var/log/secure

如果不想让开头是英文字母,可以如下操作:
grep -n ‘^[^a-zA-Z]‘ /var/log/secure
说明:对于^符号,在[ ]内表示反向选择,在[ ]外表示定位在行首。

类似的,要找出行尾以.结束的行,命令如下:
grep -n ‘\.$’ /var/log/secure
由于小数点(.)具有其他的含义,在这里需要使用转义符(\)来解除其特殊意义。

如果要找出空白行,执行如下命令:
grep -n ‘^$’ /var/log/secure
因为只有行首(^)和行尾($),这时候可以找出空白行。

如果要把空白行和以#开始的注释行略掉,执行如下命令:
grep -v ‘^$’ /var/log/secure | grep -v ‘^#’
使用任意字符(.)和重复字符(*)
在正则表达式中,点(.)表示“任意一个”字符。
grep -n ‘r..t’ /var/log/secure
将会显示包括root、r:tt等。

在正则表达式中, *表示重复前面0个或多个字符,因此(o*)表示“空字符或一个o以上的字符,grep -n ‘o*’ /var/log/secure将会把所有的内容显示在屏幕上。
如果要查找至少包括一个o的字符串,则应表示为grep -n ‘oo*’ /var/log/secure;如果至少要包括oo,则应表示为grep -n ‘ooo*’ /var/log/secure。

如果希望字符串的开头为r,结尾为t,r与t之间至少有一个o,且不能有其他字符,应如何表示?
grep -n ‘roo*t’ /var/log/secure

如果希望字符串的开头为r,结尾为t,r与t之间的字符可有可无,可否如下表示:
grep -n ‘r*t’ /var/log/secure

r*t中的星号将表示空字符或一个以上的r,将会显示包括rt、rrt、rrrt、rot、root等字符串的行。以上要求应如下表示:
grep -n ‘r.*t’ /var/log/secure
使用{ }限定连续重复字符范围
假如要找到两个o的字符串,可以这样操作:
grep -n ‘o\{2\}’ /var/log/secure

如果要找到r后面接2-4个o,后面再接一个t的字符串,可以这样操作:
grep -n ‘ro\{2,4\}t’ /var/log/secure
再试下r后面接3-5个o

如果要找到两个及两个以上o的字符串,可以这样操作:
grep -n ‘ro\{2\}t’ /var/log/secure

什么是正则表达式

正则表达式(或称为常规表达式)是通过一些特殊字符的排列,用来搜索、替换、删除一行或多行字符串。正则表达式并不是工具程序,而是一个字符串处理的标准依据。要以正则表达式的方式处理字符串,就要使用支持正则表达式的工具程序,如vi、grep、sed、awk等。管理员可以通过正则表达式选取信息,产生便于查看的报表,简化管理流程。

linux vps中,我们用的最广泛的就是grep命令,通过grep设置正则表达式,我们可以很方便的过滤我们不需要或需要的字符。

如何使用命令重启mysql服务器进程

管理自己美国vps上的网站,往往需要重启apachemysql服务器进程,使用ssh命令可以方便快捷的重启你的mysql数据库和apache服务器。

用什么样的命令?

service mysqld restart //重启mysql数据库服务器
service httpd restart //重启apache网页服务器

是不是很简单。

apache日志分析

apache在配置文件httpd.conf里为每个网站指明了log日志文件的存放路径,我们可以通过下面的命令分析网站的情况。

比如我的apache的日志文件就在/etc/httpd/logs/usa-vps.com-access_log,注意,在下面的log_file指的是你的网站日志文件的名称。

1、查看当天有多少个IP访问:
awk ‘{print $1}’ log_file|sort|uniq|wc -l
2、查看某一个页面被访问的次数:
grep “/index.php” log_file | wc -l
3、查看每一个IP访问了多少个页面:
awk ‘{++S[$1]} END {for (a in S) print a,S[a]}’ log_file
4、将每个IP访问的页面数进行从小到大排序:
awk ‘{++S[$1]} END {for (a in S) print S[a],a}’ log_file | sort -n
5、查看某一个IP访问了哪些页面:
grep ^111.111.111.111 log_file| awk ‘{print $1,$7}’
6、去掉搜索引擎统计当天的页面:
awk ‘{print $12,$1}’ log_file | grep ^\”Mozilla | awk ‘{print $2}’ |sort | uniq | wc -l
7、查看2009年6月21日14时这一个小时内有多少IP访问:
awk ‘{print $4,$1}’ log_file | grep 21/Jun/2009:14 | awk ‘{print $2}’| sort | uniq | wc -l
8.查看访问前十个ip地址
awk ‘{print $1}’ |sort|uniq -c|sort -nr |head -10 access_log
9.访问次数最多的文件或页面
cat access_log|awk ‘{print $11}’|sort|uniq -c|sort -nr
10.通过子域名访问次数,依据referer来计算,稍有不准
cat access.log | awk ‘{print $11}’ | sed -e ‘ s/http:\/\///’ -e ‘ s/\/.*//’ | sort | uniq -c | sort -rn | head -20
11.列出传输大小最大的几个文件
cat www.access.log |awk ‘($7~/\.php/){print $10 ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -100
12.列出输出大于200000byte(约200kb)的页面以及对应页面发生次数
cat www.access.log |awk ‘($10 > 200000 && $7~/\.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100
13.如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
cat www.access.log |awk ‘($7~/\.php/){print $NF ” ” $1 ” ” $4 ” ” $7}’|sort -nr|head -100
14.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
cat www.access.log |awk ‘($NF > 60 && $7~/\.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100
15. 列出传输时间超过 30 秒的文件
cat www.access.log |awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20
16. 列出当前服务器每一进程运行的数量,倒序排
ps -ef | awk -F ‘ ‘ ‘{print $8 ” ” $9}’ |sort | uniq -c |sort -nr |head -20

yum如何改源

修改yum源的方法有两种。

第一种方法是修改 /etc/yum.repos.d/CentOS-Base.repo 这个文件即可,把里面的镜像地址修改为最快的文件服务器地址(参考下面的两个地址)。

比如vi /etc/yum.repos.d/CentOS-Base.repo,显示如下:

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

如果我们安装163的源,就修改为如下:

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever – Base
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[updates]
name=CentOS-$releasever – Updates
baseurl=http://mirrors.163.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[addons]
name=CentOS-$releasever – Addons
baseurl=http://mirrors.163.com/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[extras]
name=CentOS-$releasever – Extras
baseurl=http://mirrors.163.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[centosplus]
name=CentOS-$releasever – Plus
baseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

我们在安装软件常常使用yum命令,但国内国外的主机速度又不一致,需要修改安装源文件,如何改这些源呢?在CentOS系统中,比如我们有下面两个源:

  1. http://mirrors.163.com/
  2. http://mirrors.sohu.com

可以执行下面的命令:

cd /etc/yum.repos.d //进入yum.repos.d这个目录。
mv CentOS-Base.repo CentOS-Base.repo.bak //修改文件名称,做备份。

  • wget http://mirrors.163.com/.help/CentOS-Base-163.repo  //下载文件
  • wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo //download file

最后一定要运行yum makecache生成缓存.

 

Vi复制剪切粘贴命令

如何使用Vi命令进行复制,剪切和粘贴?

vi有三种模式,记住:vi复制剪切粘贴命令是在命令模式里使用,一般进入vi就是命令模式,如果按i就进入插入模式,按ESC又进入命令模式,按:就进入末行模式。

首先说说vi的复制命令:
yy、Y :复制当前光标所在处的行
nyy、nY:复制当前光标所在处及以下的n行

在谈谈vi的剪切命令:
dd :剪切当前光标所在处的行
ndd :剪切当前光标所在处及以下的n行

最后是vi粘贴命令
p:在当前光标处下面粘贴内容。
P:在当前光标处上面粘贴内容。

在centos上安装Vsftpd 软件做FTP服务器

在个人的服务器上安装ftp服务器很简单,配置也容易,下面是步骤:
[root@usa-vps]# yum -y install vsftpd 安装vsftpd
[root@usa-vps]# vi /etc/vsftpd/vsftpd.conf 编辑vsftpd配置文件
找到下面的参数,把#号去掉
anonymous_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
ls_recurse_enable=YES
# 加入下面的参数
# 建一个用户目录 ( 如果没有指定用户,home目录就是FTP的目录)
local_root=public_html
# use localtime
use_localtime=YES
[root@usa-vps]# vi /etc/vsftpd/chroot_list
# 你允许其他用户使用的目录

[root@usa-vps]# /etc/rc.d/init.d/vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@usa-vps]# chkconfig vsftpd on

yum常用命令

yum是一个管理rpm安装包的强大工具,解决了困扰大家的rpm的依赖关系。开通linux vps后,我们可以使用下面常用的yum命令,管理我们的软件。

一、列举包文件

列出资源库中所有可以安装或更新的rpm包
# yum list

列出资源库中特定的可以安装或更新以及已经安装的rpm包
# yum list openvpn //列出名为openvpn的包
# yum list ssl* //列出ssl开头的包

列出资源库中所有可以更新的rpm包
# yum list updates

列出已经安装的所有的rpm包
# yum list installed

列出已经安装的但是不包含在资源库中的rpm包
# yum list extras

注:extras是repos.d中定义的资源列表名称

二、列举资源信息

列出资源库中所有可以安装或更新的rpm包的信息
# yum info

列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息
# yum info ssh //列出ssh包信息
# yum info perl* //列出perl开头的所有包的信息

列出资源库中所有可以更新的rpm包的信息
# yum info updates

列出已经安装的所有的rpm包的信息
# yum info installed

列出已经安装的但是不包含在资源库中的rpm包的信息
# yum info extras

三、搜索

搜索匹配特定字符的rpm包
# yum search perl //在包名称、包描述等中搜索

搜索有包含特定文件名的rpm包
# yum provides realplay

四、管理包

安装rpm包
# yum install perl //安装perl 包
# yum install perl* //安装perl 开头的包

删除rpm包,包括与该包有倚赖性的包
# yum remove perl* //会删除perl-* 所有包

软件组管理
# yum groupinstall “Chinese Support” //安装指定的组
# yum groupupdate “Chinese Support” //安装了的组成员软件包更新
# yum grouplist “Chinese Support” //安装了的组和可以安装的组一览显示
# yum groupremove “Chinese Support” //删除指定的组
# yum groupinfo “Chinese Support” //指定组所包含的软件包显示

五、更新

检查可更新的rpm包
# yum check-update

更新所有的rpm包
# yum update

更新指定的rpm包,如更新kernel和kernel source
# yum update kernel kernel-source

大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级
# yum upgrade

六、清空缓存

清除暂存中rpm包文件
# yum clean packages

清除暂存中rpm头文件
# yum clearn headers

清除暂存中旧的rpm头文件
# yum clean oldheaders

清除暂存中旧的rpm头文件和包文件
# yum clearn all

新开通美国windows vps的使用

新开通的美国windows vps,需要登录到vps的管理页面,地址在发给你的邮件里面。如下:

VPS Control Panel URL: http://xx.xx.xx.xx:5353
VPS Control Panel Username: vmuser123456
VPS Control Panel Password: cdkdlslks323

windows vps与linux vps最大的差别是在管理的方式,一个是窗口方式,一个是命令行方式。

windows vps的管理非常方便,进入管理页面后,点击VNC.

注意要安装java,运行VNC后,你就可以远程管理你的win vps。

第一次要你输入你的administrator的口令。

如有疑问,可提问.

vps安装wordpress后修改固定链接出现404错误的解决方法

购买美国vps公司Burst,开始安装wordpress成功,修改固定链接为usa-vps/%postname%.html,但发现链接出现404错误,如何解决?

首先找apache的配置文件httpd.conf,用vi打开。

进入命令模式:

输入1,$s/AllowOverride None/AllowOverride All

回车,这条命令的意思就是把AllowOverride None全部替换成AllowOverride All。

:wq(保存退出)

重启阿帕奇。

service httpd restart

重新打开网页404错误消失。

第 1 页,共 47 页12345...102030...最旧 »