三月 16th, 2016

Exim 命令行 功能
一、Exim队列的全局管理
1.统计队列邮件数量    
root@localhost# exim –bpc

2.查看exim 队列中的所有邮件信息    
root@localhost# exim –bp

3.汇总队列邮件信息
root@localhost# exim -bp | exiqsumm

4.查看Exim服务的当前工作情况
root@localhost# exiwhat

二、基于邮件ID的队列操作 – ID可为多个
1.删除邮件
root@localhost# exim -Mrm <message-id> [ <message-id> … ]

2.冻结邮件
root@localhost# exim -Mf <message-id> [ <message-id> … ]

3.解冻邮件
root@localhost# exim -Mt <message-id> [ <message-id> … ]

4.强制投递邮件
root@localhost# exim -M <message-id> [ <message-id> … ]

5.强制退回邮件
root@localhost# exim -Mg <message-id> [ <message-id> … ]

6.查看邮件头
root@localhost# exim -Mvh <message-id>

7.查看邮件内容
root@localhost# exim -Mvb <message-id>

8.查看邮件日志
root@localhost# exim -Mvl <message-id>

9.新增一个收件人
root@localhost# exim -Mar <message-id>

0.编辑发件人信息
root@localhost# exim -Mes <message-id>
三、队列邮件ID查找命令 – exiqgrep

1.查看来自指定发件人的所有队列邮件
root@localhost# exiqgrep -f [发件人]@domain

2.查看发给指定收件人的所有队列邮件
root@localhost# exiqgrep -r [收件人]@domain

3.查看天前的队列邮件 (以秒为单位)
root@localhost# exiqgrep -o 86400

4.查看小时内的队列邮件 (以秒为单位)
root@localhost# exiqgrep -y 3600

5.查看700到800字节大小的队列邮件 (支持正则表达式)
root@localhost# exiqgrep -s ‘^7..$’

6.其他常用参数:-z 只查看被冻结的队列邮件-i 只显示邮件ID-c 只显示查找到的邮件数量
四、队列邮件的批量操作

1.删除所有被冻结的邮件
root@localhost# exiqgrep -z -i | xargs exim –Mrm

2 解冻所有被冻结的邮件
root@localhost# exiqgrep -z -i | xargs exim –Mt
 
2.删除所有5天前的队列邮件    
root@localhost# exiqgrep -o 432000 -i | xargs exim –Mrm

3.冻结所有来自某一发件人的邮件    
root@localhost# exiqgrep -i -f 发件人@zeknet.com | xargs exim -Mf
root@localhost# exiqgrep -i -f lovebcco@server121.hosteaseservers.com | xargs exim -Mf   

4.exim 清空发送队列
数据量庞大的情况下用用以下命令清除logout
find /var/spool/exim/input/ -type f -name ‘*’ -print0 | xargs -0 rm &   或者
find /var/spool/exim/input/ -type f -name ‘*’ -print0 | xargs -0 rm -rf

exim -bpru | awk {‘print $3’} | xargs exim -Mrm

三月 14th, 2016

PATH是环境变量,一定要大写.

(1)不同身份用户默认的PATH不同,默认能够随意执行的明朗了也不同,如下(root与jack):

[root@sqj2015 ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@sqj2015 ~]# su – jack

[jack@sqj2015 ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jack/bin

 

  • PHTH是可以修改的,所以一般用户还可以通过修改PATH来执行某些位于/sbin 或/usr/sbin下的命令来查询.
  • 使用绝对路径或相对路径直接指定某个命令文件名来执行,会比查询PATH来的正确
  • 命令应该放置在正确的目录下,执行才会比较方面
  • 本目录(.)最好不要放到PATH当中

 

那如何修改和设置PATH变量呢?如下:

  <1>使用export命令

     export PATH=$PATH:/XXX

  <2>修改profile文件

     在里面加入:export PATH=”$PATH:/XXX”

     让环境变量立即生效需要执行如下命令:

     source /etc/profile

  <3>修改.bashrc文件

     在里面加入:export PATH=”$PATH:/XXX”

  后两种方法一般需要重新注销系统才能生效,最后用echo查看下. /etc/profile对系统里所有用户都有效,而用户主目录下的.bash_profile

eg:

ls命令位于/bin/ls,若将ls由移动成为/root/ls(可用mv /bin/ls /root 命令实现).然后你本身也在/root目录下,请问是否可以直接输入ls来执行呢?若不能,该如何执行这个命令呢?

 

[root@sqj2015 ~]# pwd

/root

[root@sqj2015 ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  test

[root@sqj2015 ~]# mv /bin/ls /root

[root@sqj2015 ~]# ls

-bash: /bin/ls: No such file or directory

[root@sqj2015 ~]# ./ls

anaconda-ks.cfg  install.log  install.log.syslog  ls  test

[root@sqj2015 ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@sqj2015 ~]# PATH=”PATH”:/root

[root@sqj2015 ~]# echo $PATH

PATH:/root

[root@sqj2015 ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  ls  test

 

上面也说过,PATH=”PATH”:/root 这样赋予是也是临时生效的,但是要注意区别export PATH=”$PATH:/root”设置结果,如下:

[root@sqj2015 ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@sqj2015 ~]# PATH=”PATH”:/root

[root@sqj2015 ~]# echo $PATH

PATH:/root

 

[root@sqj2015 ~]# export PATH=$PATH:/root

[root@sqj2015 ~]# echo $PATH

PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root

 

 

“.”代表目录本身,若我把”.”加入到PATH变量中呢?会出现什么样情况呢?

[root@sqj2015 ~]# echo $PATH

PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@sqj2015 ~]# mv /bin/ls /root

[root@sqj2015 ~]# ls

-bash: ls: command not found

[root@sqj2015 ~]# export PATH=$PATH:.

[root@sqj2015 ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  ls  test

[root@sqj2015 ~]# mv /root/ls /home/

[root@sqj2015 ~]# ls

-bash: ls: command not found

[root@sqj2015 ~]# cd /home/

[root@sqj2015 home]# ls

class  jack  ls

 

是不是发现:我们可以在命令所在目录进行命令的执行了.但是由于工作目录并非固定(经常使用cd来切换到不同的目录),因此能够执行的命令有变动(因为灭个目录下面的可执行文件都不相同),这对用户来说并非好事.

另外,若有个坏心用户在/tmp下面做了一个命令,因为/tmp是大家都能够写入的环境,所以他当然可以这么做.假设该命令可能会窃取用户的一些数据,如果你使用root的身份来执行这个命令,那是不是很糟糕?所以,为了安全起见,不建议将”.”加入PATH的查询目录中.

TAGS: ,
三月 14th, 2016

完整的文件名最长可以达到4096个字符,那么你是怎么知道哪个是文件名?哪个是目录名?就是利用斜线(/)来分辨。其实,取得文件名活着目录名称,一般的用途应该是在写程序的时候用来判断使用的。

eg:

[root@sqj2015 ~]# basename /etc/sysconfig/network

network    <==取得文件名

[root@sqj2015 ~]# dirname /etc/sysconfig/network

/etc/sysconfig  <==取得目录名

三月 12th, 2016

         如果你使用过Windows虚拟主机,相信你的网站也遇到过这样的情况.当你访问你的网站的时候,提示Internal server error.这是服务器设置的http友好错误提示,掩盖了真正的错误.但是往往真正的错误有助于我们解决问题.所有有时候我们需要它但是对于Windows虚拟主机客户而言,你是没有权限远程服务器的.所以遇到这种情况,如果有需要可以联系您的主机商设置下.

 

服务器端IIS设置:

          1.“网站”>”ASP”>”调试属性”>”将错误发送到浏览器”的值修改为True .

          2. “网站”>”错误页”>”编辑功能设置”>选择详细错误(D)”

 注:如果不设置上面的第二步,错误同样无法发送到客户端的浏览器上。

 

客户端IE浏览器设置:

  打开IE,”设置”>”Internet选项”>”高级”>取消”显示每个脚本错误的通知”和”显示友好的http错误提示”[重要].

 

三月 10th, 2016

绝对路径:由根目录(/)开始写起的文件名或目录名称.

   eg: /var/spool

相对路径:相对于目前路径的文件名写法. 可以理解为开头不是/就属于相对路径的写法. 

   eg: ./var/spool 或../../var/spool

   这里”.”代表当前的目录,也可以使用./来表示

          ”..”代表上一层目录,也可以使用../来表示

 

举个例子,如下:

  linux 下/var/spool下存在cron mail等目录,如下,我们通过 绝对路径cd /var/spool/cron和cd /var/spool/mail来切换目录. 

[root@sqj2015 ~]# cd /var/spool/cron

[root@sqj2015 cron]# cd /var/spool/mail

[root@sqj2015 mail]# 

若现在已经在mail目录如何使用相对路径切换到cron目录呢?

[root@sqj2015 mail]# cd ../cron

[root@sqj2015 cron]# pwd

/var/spool/cron

 

再假如我还是处于以下目录,怎么通过相对路径切换到/boot.

[root@sqj2015 cron]# pwd

/var/spool/cron

[root@sqj2015 cron]# cd ../../../boot

[root@sqj2015 boot]# pwd

/boot

其实很好理解,要想切换到/boot,相当于先退回/,在切换到boot目录.

[root@sqj2015 boot]# cd /var/spool/cron

[root@sqj2015 cron]# pwd

/var/spool/cron

[root@sqj2015 cron]# cd ../../..

[root@sqj2015 /]# cd /boot

[root@sqj2015 boot]# pwd

/boot

当然上面可以使用更简单的命令cd /boot即可搞定,不过上面只是举个事例.有时候我们为了方面区别,可能把目录定义的很长如第一个目录/home/school/grade1/class1/stud1/ 而另一个目录为/home/school/grade1/class1/stud2,那么我从第一个目录切换到第二目录,cd ../stud2是不是更方面呢?

当然,对于文件的正确性,绝对路径正确度要比较好.

 

有时候会看到类似这样的数据 ./test.sh,代表执行本目录下名为test.sh的文件.

三月 10th, 2016

案例:www.tuimo8.com/admin.php,discuz后台登陆,发现应用模块无法正常显示

首先,应该想到的是:云平台连接问题

操作如下:

         工具>>云平台诊断工具>>图(略)>>这里提示dns解析失败.

本地测试:

cmd>>nslookup>>set type=ns>>tuimo8.com ,如下:

C:\Users\he>nslookup
默认服务器:  dnspai-public-dns.dnspai.com
Address:  101.226.4.6
> set type=ns
> tuimo8.com
服务器:  dnspai-public-dns.dnspai.com
Address:  101.226.4.6

DNS request timed out .

       timeout was 2 seconds .
DNS request timed out .

       timeout was 2 seconds .
*** 请求 dnspai-public-dns.dnspai.com 超时

这里发现DNS均无法正常解析.

 

服务器端:

检查/etc/resolv.conf 配置文件,发现

# Generated by NetworkManager

 nameserver 127.0.0.1

这样服务器根本无法连接外网.可以如下修改:

vi /etc/resolv.conf

# Generated by NetworkManager

#nameserver 127.0.0.1

nameserver 8.8.8.8

nameserver 8.8.4.4

dns设置是及时生效的.

其实到这一步,问题应该已经解决了,你可以再次本地测试下,看DNS能否正常解析.

但是为什么服务器的resolv.conf文件会被修改成这样呢.

在接下来检查/etc/sysconfig/network-scripts/ifcfg-eth1中发现了一条记录:

DNS1=”127.0.0.1”

跟初次检查/etc/resolv.conf 文件记录一样.为了验证,我们做以下测试:

重启网络服务器,来重新加载设置.
service network restart 

再次查看/etc/resolv.conf 文件,发现内容被重置成了

# Generated by NetworkManager

 nameserver 127.0.0.1

 

猜测:

是不是服务器重启,或短暂中断,重新reload的后,/etc/resolv.conf被根据

/etc/sysconfig/network-scripts/ifcfg-eth1进行重置.

做以下操作:

修改/etc/sysconfig/network-scripts/ifcfg-eth1文件:

DNS1=”8.8.8.8”

DNS2=”8.8.4.4”

再次service network restart后,查看/etc/resolv.conf 

# Generated by NetworkManager

search hosteaseservers.com

nameserver 8.8.8.8

nameserver 8.8.4.4

 

注意:

若服务器单网卡添加了多个IP,重启network服务后,你会发现其他IP无法加载,这是执行/scripts/restartsrv_ipaliases来重新加载IP别名.

接下来继续分析问题:

本地测试:

C:\Users\he>nslookup
默认服务器:  dnspai-public-dns.dnspai.com
Address:  101.226.4.6

> set type=ns
> tuimo8.com
服务器:  dnspai-public-dns.dnspai.com
Address:  101.226.4.6

非权威应答:
tuimo8.com      nameserver = ns2.hostease.com
tuimo8.com      nameserver = ns1.hostease.com

DNS解析正常了.

然后在discuz后台,查看应用模块,也可以正常显示了

TAGS: , ,
三月 7th, 2016

有时候我们无法直接访问网站域名,必须加上首页文件。

比如:访问www.abc.com 不行,访问www.abc.com/index.asp(假定index.asp为首页)则可以!

 

这是为什么呢?

 

开始我怀疑是首页文件没有设置,进入IIS设置“默认文档”时会出现错误提示“在唯一密钥属性“value”设置为“default.aspx”(或者index.asp等)时,无法添加类型为“add” ”的重复集合项。  

 

这时,发现在IIS中设置默认文档也不行。

 

解决方法:通过IIS管理器,查找网站,点击该网站,再点击右侧的“浏览”,快速定位到改网站文件目录的位置。然后网站的配置文件,一般名为web.config。右键编辑,在<files>与</files>之间加入以下代码,保存即可!

 

<clear />

<add value=”index.php” /> 

<add value=”Default.htm” /> 

<add value=”index.htm” /> 

<add value=”index.html” /> 

<add value=”iisstart.htm” />

<add value=”default.aspx” />

 

(注意:上面的代码可根据你的网站首页文档类型来自己添加,但<clear />是必须要添加的)

 

 

 

三月 7th, 2016

        很多朋友可能在其他的主机商有其他的虚拟主机,购买HE的主机之后,想把原来的主机上的网站搬家到HE的主机上.下面以wordpress建的博客搬家到hostease空间上的例子.闲话少说下面开始吧.

具体的步骤:

1.到你原来的空间商那里下载备份网站文件,然后上传到hostease对应的目录下解压。

2.然后在再原来的空间商的空间里面用phpmyadmin备份下载数据库(可选择不压缩,压缩.zip).

3.然后在hostease空间开始创建数据库,数据库用户,密码。

4.在就是还原数据库,可以登录phpmyadmin里面把数据库还原到刚才创建的数据库里面。

5.修改连接数据库的参数,例如wordpress程序找到wp-config.php然后修改

define(‘DB_NAME’, ‘填写你在hostease里面创建的数据库’);

/** MySQL数据库用户名,替换掉 “usernamehere” */
define(‘DB_USER’, ‘填写你在hostease里面创建的数据库用户’);

/** MySQL数据库密码,替换掉 “yourpasswordhere” */
define(‘DB_PASSWORD’, ‘密码’);
一版php程序的连接数据库的文件都是xxxconfig.php之类的,只要按照上面的修改连接数据库的参数即可。

6.然后即可用你的域名开始正常访问网站了。

三月 2nd, 2016

今天启动mysql,启动错误,经过检查,原来是/var 磁盘占用100%,通过du -sh * | sort -n 逐步检查,发现/var/lib/mysql,占用大量空间.   在不能扩充/var磁盘的情况下,我们尝试把mysql目录移动到其他磁盘,再通过软链接模式,来达到同样的效果,若下操作:

#/etc/init.d/mysql stop /service mysql stop    
#mv /var/lib/mysql /home/mysql
#ln -s /home/mysql /var/lib/mysql
#/etc/init.d/mysql start

若启动失败,可以查看数据库错误日志,这里遇到这样的错误:

[ERROR] Do you already have another mysqld server running on port: 3306 ?

查看发现3306端口已被占用,如下:

root@ds116 [/home/mysql]# netstat -an |grep :3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      
root@ds116 [/home/mysql]# netstat -an |grep mysql
unix  2      [ ACC ]     STREAM     LISTENING     496886 /var/lib/mysql/mysql.sock

你可以关闭相应进程来达到释放此端口.如若无法奏效,可以尝试重启下服务器,然后再次重启mysql 服务.

TAGS: ,
三月 1st, 2016

很多时候,我们可以通过查看文件改动时间(mtime)来直观的判断文件是否为自己上传,从而断定网站是否曾被黑.

对于服务器管理员,我们可以通过查看mtime来缩短检查数据时间.

 

开始我们简单了解下文件时间:

access time   atime在读取文件或执行文件时会修改
create time   ctime在文件写入,更改所有者,权限。链接时文件的ctime会随之改变
modified time  mtime 在文件写入时会改

 

接下来我们该如何去检查自己数据是否变更:

(1)使用find 命令:

查找在某个时间段之间(如20160228—20160301)的文件,可以使用如下命令:

>> find . -newermt ‘20160228’ ! -newermt ‘20160301’

 

找出”3天以前被改动过的文件”

>> find . -mtime +3 -type f -print

 

找出”3天内被改动过的文件”

>> find . -mtime -3 -type f -print

 

找出”第三天被改动过的文件”

>> find . -mtime 3 -type f -print

>> find . -mtime +2 -mtime -4 -type f -print

注: “.” 表示当前目录

 

(2)其实最直观的方式就是进行文件时间排序

>> cd 相应目录

>> ls -lrt

-l use a long listing format 以长列表方式显示(详细信息方式)

-t sort by modification time 按修改时间排序(默认最新时间的在最前面)

-r reverse order while sorting (反序) 

TAGS: , ,