windows 无法与此域连接,原因是域控制器存在故障或不可用,或者没有找到计算机帐户,请稍后再试。如果此消息持续再现。请与系统管理员联系以得到帮助

对“windows 无法与此域连接,原因是域控制器存在故障或不可用,或者没有找到计算机帐户,请稍后再试。如果此消息持续再现。请与系统管理员联系以得到帮助”这一登陆提示的解决方法!

今天一上班,销售那边的一个CC就打电话过来说电脑用她自己的域账号登陆不了,让我过去看看,好吧!俺过去..用我的账号登陆..结果也是登陆不了..然后用administrator来登陆也同样弹出同一个提示!

解决过程:

(1)用电脑本机的账户登陆,然后检查了一下网络是ok的,dns解析也ok,没折了!

(2)决定拼人品,先退出该域,重启,然后再加入该域,重启,然后问题就解决了!

(3)用域账户登录ok!

linux下实现Apache反向代理

1.简单拓扑:
 
2.实验目的:
实现apache反向代理
3.实验过程:
(1)	Server A
①配置eth0和eth0:0的ip地址
Eth0:	172.16.1.100/24
Ecth0:0	172.16.1.200/24
②安装apache服务器
[root@dns ~}# rpm -ivh /mnt/CentOS/httpd-2.2.3.45.e15.centos.i386.rpm
③编辑apache主配置文件,添加虚拟主机
<VirtualHost 172.16.1.100:80>
    ServerAdmin webmaster@blog.example.com
    DocumentRoot /var/www/html/blog.example.com
    ServerName blog.example.com
    ErrorLog logs/blog.example.com-error_log
    CustomLog logs/blog.example.com-access_log common
</VirtualHost>
###############################################
<VirtualHost 172.16.1.200:80>
    ServerAdmin webmaster@bbs.example.com
    DocumentRoot /var/www/html/bbs.example.com
    ServerName bbs.example.com
    ErrorLog logs/bbs.example.com-error_log
    CustomLog logs/bbs.example.com-access_log common
</VirtualHost>
④启动apache
[root@dns ~]# service httpd restart
停止 httpd:                                               [确定]
启动 httpd:                                               [确定]
(2)Server B
①配置网卡
Eth0:	192.168.1.104/24
Eth1:	172.16.1.1./24
②安装BIND,由于要使用chroot机制,所以要安装bind-chroot,要有配置模板,安装caching-nameserver
[root@dns1 Server]# rpm -ivh bind-9.3.6-16.P1.el5.i386.rpm bind-chroot-9.3.6-16.P1.el5.i386.rpm caching-nameserver-9.3.6-16.P1.el5.i386.rpm
③配置DNS
1.	复制模板文件为named.conf
[root@dns1 ~]# cp -p /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf
2.	修改named.conf文件
options {
	listen-on port 53 { any; };
	listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query { any; };
	allow-query-cache { localhost; };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view wan_resolver {
	match-clients { any; }; match-destinations { any; };
	recursion yes;
	include "/etc/named_wan.zones";
};
view lan_resolver {
	match-clients { 172.16.1.0/24; }; match-destinations { 172.16.1.0/24; };
	recursion yes;
	include "/etc/named_lan.zones";};
3.	使用模板文件生成named_wan.zones和named_lan.zones文件
[root@dns1 ~]# cp -p /var/named/chroot/etc/named.rfc1912.zones /var/named/chroot/etc/named_wan.zones
[root@dns1 ~]# cp -p /var/named/chroot/etc/named.rfc1912.zones /var/named/chroot/etc/named_lan.zones
4.	修改named_wan.zones文件,添加以下记录
zone "example.com" IN {
        type master;
        file "example_wan.zone";
        allow-update { none; };
};
5.	修改named_lan.zones文件,添加以下记录
zone "example.com" IN {
        type master;
        file "example_lan.zone";
        allow-update { none; };
};

zone "1.16.172.in-addr.arpa" IN {
        type master;
        file "1.16.172.local";
        allow-update { none; };
};
6.	编辑正向区域文件example_wan.zone
$TTL    86400
@               IN SOA  dns1.example.com.      root.example.com. (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
        IN      NS      dns1.example.com.
dns1    IN      A       192.168.1.104
blog    IN      CNAME   dns1.example.com.
bbs     IN      CNAME   dns1.example.com.
7.	编辑正向区域文件example_lan.zone
$TTL    86400
@               IN SOA  dns1.example.com.      root.example.com. (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
        IN      NS      dns1.example.com.
        IN      MX  5   dns1.example.com.
dns1    IN      A       172.16.1.1
blog    IN      A       172.16.1.100
bbs     IN      A       172.16.1.200
mail    IN      CNAME   dns1.example.com.
8.	编辑反向区域文件1.16.172.local
$TTL    86400
@       IN      SOA     dns1.example.com. root.example.com.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS      dns1.example.com.
1       IN      PTR     dns1.example.com.
100     IN      PTR     blog.example.com.
200     IN      PTR     bbs.example.com.
9.	修改/etc/resolv.conf
nameserver 192.168.1.104
nameserver 172.16.1.1
10.	启动named
[root@dns1 ~]# service named restart
停止 named:                                               [确定]
启动 named:                                               [确定]
④安装apache
[root@dns1 Server]# rpm -ivh httpd-2.2.3-45.el5.i386.rpm
⑤修改apache主配置文件httpd.conf
1.	加载mod_proxy模块,我这里安装好apache后就已经加载了该模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
2.	配置虚拟主机,实现反向代理
NameVirtualHost 192.168.1.104:80
<VirtualHost 192.168.1.104:80>
    ServerName blog.example.com
    Proxypass / http://blog.example.com/
    ProxyPassReverse / http://blog.example.com/
</VirtualHost>
<VirtualHost 192.168.1.104:80>
    ServerName bbs.example.com
    Proxypass / http://bbs.example.com/
    ProxyPassReverse / http://bbs.example.com/
</VirtualHost>
3.	启动apache
[root@dns1 ~]# service httpd restart
停止 httpd:                                               [确定]
启动 httpd:                                               [确定]
(3)客户端测试
①配置ip地址和dns
 
②访问blog.example.com测试
 
③访问bbs.example.com测试
 
④基本实现apache反向代理

Linux下文件查找命令find和xargs详解实例

PS:find是个很强大的命令,能够匹配正则,查找对应权限,能够帮你精确的定位你的系统中的任何地方任何目录下的文件。下面这篇是关于find命令用法最详细的一篇了,记录下。

总结:zhy2111314
来自:LinuxSir.Org
整理:北南南北
摘要: 本文是find命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解;本文是zhyfly兄贴在论坛中;我对本文进行了再次整理,为方便大家阅读;

目录

版权声明
前言:关于find命令

一、find 命令格式
1、find命令的一般形式为;
2、find命令的参数;
3、find命令选项;
4、使用exec或ok来执行shell命令;

二、find命令的例子;

1、查找当前用户主目录下的所有文件;
2、为了在当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;
3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;
4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;
5、为了查找系统中所有属于root组的文件;
6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件
7、为了查找当前文件系统中的所有目录并排序;
8、为了查找系统中所有的rmt磁带设备;

三、xargs
四、find 命令的参数;

1、使用name选项
2、用perm选项
3、忽略某个目录
4、使用find查找文件的时候怎么避开某个文件目录
5、使用user和nouser选项
6、使用group和nogroup选项
7、按照更改时间或访问时间等查找文件
8、查找比某个文件新或旧的文件
9、使用type选项
10、使用size选项
11、使用depth选项
12、使用mount选项

五、关于本文
六、相关文档


+++++++++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++++++++


版权声明

本文是zhyfly兄贴在LinuxSir.Org 的一个帖子而整理出来的,如果您对版权有疑问,请在本帖后面跟帖。谢谢;本文的HTML版本由北南南北整理;修改了整篇文档的全角及说明文字中的单词中每个字母空格的问题;为标题加了编号,方便大家阅读;

前言:关于find命令

由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。

在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。


一、find 命令格式


1、find命令的一般形式为;

find pathname -options [-print -exec -ok ...]


2、find命令的参数;

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } ;,注意{   }和;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。


3、find命令选项

-name 

按照文件名查找文件。

-perm
按照文件权限来查找文件。

-prune
使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

-user
按照文件属主来查找文件。

-group
按照文件所属的组来查找文件。

-mtime -n +n
按照文件的更改时间来查找文件, – n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。

-nogroup
查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。

-nouser
查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2

查找更改时间比文件file1新但比文件file2旧的文件。
-type

查找某一类型的文件,诸如:

b – 块设备文件。
d – 目录。
c – 字符设备文件。
p – 管道文件。
l – 符号链接文件。
f – 普通文件。

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

另外,下面三个的区别:

   -amin n
查找系统中最后N分钟访问的文件
 

-atime n
查找系统中最后n*24小时访问的文件

-cmin n
查找系统中最后N分钟被改变文件状态的文件

-ctime n
查找系统中最后n*24小时被改变文件状态的文件

-mmin n
查找系统中最后N分钟被改变文件数据的文件

-mtime n
查找系统中最后n*24小时被改变文件数据的文件


4、使用exec或ok来执行shell命令

使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的

在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。

exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。

例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中

# find . -type f -exec ls -l {  } ;
-rw-r--r--    1 root     root        34928 2003-02-25  ./conf/httpd.conf
-rw-r--r--    1 root     root        12959 2003-02-25  ./conf/magic
-rw-r--r--    1 root     root          180 2003-02-25  ./conf.d/README

上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。
在/logs目录中查找更改时间在5日以前的文件并删除它们:

$ find logs -type f -mtime +5 -exec rm {  } ;

记住:在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。

在下面的例子中, find命令在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。

$ find . -name "*.conf"  -mtime +5 -ok rm {  } ;
< rm ... ./conf/httpd.conf > ? n

按y键删除文件,按n键不删除。

任何形式的命令都可以在-exec选项中使用。

在下面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个sam用户。

# find /etc -name "passwd*" -exec grep "sam" {  } ;
sam:x:501:501::/usr/sam:/bin/bash


二、find命令的例子;


1、查找当前用户主目录下的所有文件:

下面两种方法都可以使用

$ find $HOME -print
$ find ~ -print


2、让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;

$ find . -type f -perm 644 -exec ls -l {  } ;


3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;

$ find / -type f -size 0 -exec ls -l {  } ;


4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;

$ find /var/logs -type f -mtime +7 -ok rm {  } ;


5、为了查找系统中所有属于root组的文件;

$find . -group root -exec ls -l {  } ;
-rw-r--r--    1 root     root          595 10月 31 01:09 ./fie1


6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。

该命令只检查三位数字,所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ,才能使用下面这个命令

$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7  -ok
rm {  } ;
< rm ... ./admin.log001 > ? n
< rm ... ./admin.log002 > ? n
< rm ... ./admin.log042 > ? n
< rm ... ./admin.log942 > ? n


7、为了查找当前文件系统中的所有目录并排序;

$ find . -type d | sort


8、为了查找系统中所有的rmt磁带设备;

$ find /dev/rmt -print


三、xargs

xargs – build and execute command lines from standard input

在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;

而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。

来看看xargs命令是如何同find命令一起使用的,并给出一些例子。

下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件

#find . -type f -print | xargs file
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
./.kde/Autostart/.directory:      ISO-8859 text
......

在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:

$ find / -name "core" -print | xargs echo "" >/tmp/core.log

上面这个执行太慢,我改成在当前目录下查找

#find . -name "file*" -print | xargs echo "" > /temp/core.log
# cat /temp/core.log
./file6

在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:

# ls -l
drwxrwxrwx    2 sam      adm          4096 10月 30 20:14 file6
-rwxrwxrwx    2 sam      adm             0 10月 31 01:01 http3.conf
-rwxrwxrwx    2 sam      adm             0 10月 31 01:01 httpd.conf

 

 

# find . -perm -7 -print | xargs chmod o-w
# ls -l
drwxrwxr-x    2 sam      adm          4096 10月 30 20:14 file6
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 http3.conf
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf


用grep命令在所有的普通文件中搜索hostname这个词:

# find . -type f -print | xargs grep "hostname"
./httpd1.conf:#     different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your

用grep命令在当前目录下的所有普通文件中搜索hostnames这个词:

# find . -name * -type f -print | xargs grep "hostnames"
./httpd1.conf:#     different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your

注意,在上面的例子中, 用来取消find命令中的*在shell中的特殊含义。

find命令配合使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。


四、find 命令的参数

下面是find一些常用参数的例子,有用到的时候查查就行了,像上面前几个贴子,都用到了其中的的一些参数,也可以用man或查看论坛里其它贴子有find的命令手册


1、使用name选项

文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。

可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。

不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.txt的文件,使用~作为 ‘pathname’参数,波浪号~代表了你的$HOME目录。

$ find ~ -name "*.txt" -print

想要在当前目录及子目录中查找所有的‘ *.txt’文件,可以用:

$ find . -name "*.txt" -print

想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:

$ find . -name "[A-Z]*" -print

想要在/etc目录中查找文件名以host开头的文件,可以用:

$ find /etc -name "host*" -print

想要查找$HOME目录中的文件,可以用:

$ find ~ -name "*" -print 或find . -print

要想让系统高负荷运行,就从根目录开始查找所有的文件。

$ find / -name "*" -print

如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件,下面的命令就能够返回名为ax37.txt的文件:

$find . -name "[a-z][a-z][0--9][0--9].txt" -print


2、用perm选项

按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。

如在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:

$ find . -perm 755 -print

还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666

# ls -l
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 http3.conf
-rw-rw-rw-    1 sam      adm         34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf
drw-rw-rw-    2 gem      group        4096 10月 26 19:48 sam
-rw-rw-rw-    1 root     root         2792 10月 31 20:19 temp

 

 

# find . -perm 006
# find . -perm -006
./sam
./httpd1.conf
./temp


-perm mode:文件许可正好符合mode

-perm +mode:文件许可部分符合mode

-perm -mode: 文件许可完全符合mode


3、忽略某个目录

如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略。

如果希望在/apps目录下查找文件,但不希望在/apps/bin目录下查找,可以用:

$ find /apps -path "/apps/bin" -prune -o -print


4、使用find查找文件的时候怎么避开某个文件目录

比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件

find /usr/sam -path "/usr/sam/dir1" -prune -o -print
find [-path ..] [expression] 在路径列表的后面的是表达式

-path “/usr/sam” -prune -o -print 是 -path “/usr/sam” -a -prune -o
-print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 -path “/usr/sam” 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。如果 -path “/usr/sam” -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。

这个表达式组合特例可以用伪码写为

if -path "/usr/sam"  then
-prune
else
-print

避开多个文件夹

find /usr/sam ( -path /usr/sam/dir1 -o -path /usr/sam/file1 ) -prune -o -print

圆括号表示表达式的结合。

表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。

查找某一确定文件,-name等选项加在-o 之后

#find /usr/sam  (-path /usr/sam/dir1 -o -path /usr/sam/file1 ) -prune -o -name "temp" -print


5、使用user和nouser选项

按文件属主查找文件,如在$HOME目录中查找文件属主为sam的文件,可以用:

$ find ~ -user sam -print

在/etc目录下查找文件属主为uucp的文件:

$ find /etc -user uucp -print

为了查找属主帐户已经被删除的文件,可以使用-nouser选项。这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。在使用-nouser选项时,不必给出用户名; find命令能够为你完成相应的工作。

例如,希望在/home目录下查找所有的这类文件,可以用:

$ find /home -nouser -print


6、使用group和nogroup选项

就像user和nouser选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/apps目录下查找属于gem用户组的文件,可以用:

$ find /apps -group gem -print

要查找没有有效所属用户组的所有文件,可以使用nogroup选项。下面的find命令从文件系统的根目录处查找这样的文件

$ find / -nogroup-print


7、按照更改时间或访问时间等查找文件

如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。

用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。

希望在系统根目录下查找更改时间在5日以内的文件,可以用:

$ find / -mtime -5 -print

为了在/var/adm目录下查找更改时间在3日以前的文件,可以用:

$ find /var/adm -mtime +3 -print


8、查找比某个文件新或旧的文件

如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项。它的一般形式为:

newest_file_name ! oldest_file_name

其中,!是逻辑非符号。

查找更改时间比文件sam新但比文件temp旧的文件:

例:有两个文件

-rw-r--r--    1 sam      adm             0 10月 31 01:07 fiel
-rw-rw-rw-    1 sam      adm         34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf
drw-rw-rw-    2 gem      group        4096 10月 26 19:48 sam
-rw-rw-rw-    1 root     root         2792 10月 31 20:19 temp
 

 

# find -newer httpd1.conf  ! -newer temp -ls
1077669    0 -rwxrwxr-x   2 sam      adm             0 10月 31 01:01 ./httpd.conf
1077671    4 -rw-rw-rw-   1 root     root         2792 10月 31 20:19 ./temp
1077673    0 -rw-r--r--   1 sam      adm             0 10月 31 01:07 ./fiel


查找更改时间在比temp文件新的文件:

$ find . -newer temp -print


9、使用type选项

在/etc目录下查找所有的目录,可以用:

$ find /etc -type d -print

在当前目录下查找除目录以外的所有类型的文件,可以用:

$ find . ! -type d -print

在/etc目录下查找所有的符号链接文件,可以用

$ find /etc -type l -print


10、使用size选项

可以按照文件长度来查找文件,这里所指的文件长度既可以用块(block)来计量,也可以用字节来计量。以字节计量文件长度的表达形式为N c;以块计量文件长度只用数字表示即可。

在按照文件长度查找文件时,一般使用这种以字节表示的文件长度,在查看文件系统的大小,因为这时使用块来计量更容易转换。
在当前目录下查找文件长度大于1 M字节的文件:

$ find . -size +1000000c -print

在/home/apache目录下查找文件长度恰好为100字节的文件:

$ find /home/apache -size 100c -print

在当前目录下查找长度超过10块的文件(一块等于512字节):

$ find . -size +10 -print


11、使用depth选项

在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用depth选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。

在下面的例子中, find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件。

它将首先匹配所有的文件然后再进入子目录中查找。

$ find / -name "CON.FILE" -depth -print


12、使用mount选项

在当前的文件系统中查找文件(不进入其他文件系统),可以使用find命令的mount选项。

从当前目录开始查找位于本文件系统中文件名以XC结尾的文件:

$ find . -name "*.XC" -mount -print

五、关于本文 

本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解;本文是zhy2111314兄贴在论坛中;我对本文进行了再次整理,为方便大家阅读; ── 北南南北

转自:http://www.ha97.com/4571.html

在RHEL5.6下解决rpm包安装apache出现的依赖问题,缺少libapr-1.so.0与libaprutil-1.so.0

在Red Hat Enterprise Linux Server release 5.6(Tikanga)下用rpm方式安装apache出现以下错误,缺少libapr-1.so.0与libaprutil-1.so.0,如果可以使用yum方式安装的话当然可以直接yum install就能解决问题,不过由于我无法使用yum方式进行安装,所以只能一个一个的解决依赖关系了, libapr-1.so.0这个依赖问题可以通过安装apr-1.2.7-11.e.15_5.3.i386.rpm解决, libaprutil-1.so.0这个依赖关系可以通过安装postgresql-libs-8.1.22-1.e15_5.1.i386.rpm以及apr-util-1.2.7-11.e15_5.2.i386.rpm解决,然后就可以直接rpm -ivh httpd-2.2.3-45.e15.i386.rpm进行apache的安装了..

四个新的 HTTP 状态码

RFC 6585 最近刚刚发布,该文档描述了 4 个新的 HTTP 状态码。

HTTP 协议还在变化?是的,HTTP 协议一直在演变,新的状态码对于开发 REST 服务或者说是基于 HTTP 的服务非常有用,下面我们为你详细介绍这四个新的状态码以及是否应该使用。

428 Precondition Required (要求先决条件)

先决条件是客户端发送 HTTP 请求时,如果想要请求能成功必须满足一些预设的条件。

一个好的例子就是 If-None-Match 头,经常在 GET 请求中使用,如果指定了 If-None-Match ,那么客户端只在响应中的 ETag 改变后才会重新接收回应。

先决条件的另外一个例子就是 If-Match 头,这个一般用在 PUT 请求上用于指示只更新没被改变的资源,这在多个客户端使用 HTTP 服务时用来防止彼此间不会覆盖相同内容。

当服务器端使用 428 Precondition Required 状态码时,表示客户端必须发送上述的请求头才能执行请求,这个方法为服务器提供一种有效的方法来阻止 ‘lost update’ 问题。

429 Too Many Requests (太多请求)

当你需要限制客户端请求某个服务数量时,该状态码就很有用,也就是请求速度限制。

在此之前,有一些类似的状态码,例如 ’509 Bandwidth Limit Exceeded’. Twitter 使用 420 (这不是HTTP定义的状态码)

如果你希望限制客户端对服务的请求数,可使用 429 状态码,同时包含一个 Retry-After 响应头用于告诉客户端多长时间后可以再次请求服务。

431 Request Header Fields Too Large (请求头字段太大)

某些情况下,客户端发送 HTTP 请求头会变得很大,那么服务器可发送 431 Request Header Fields Too Large 来指明该问题。

我不太清楚为什么没有 430 状态码,而是直接从 429 跳到 431,我尝试搜索但没有结果。唯一的猜测是 430 Forbidden 跟 403 Forbidden 太像了,为了避免混淆才这么做的,天知道!

511 Network Authentication Required (要求网络认证)

对我来说这个状态码很有趣,如果你在开发一个 HTTP 服务器,你不一定需要处理该状态码,但如果你在编写 HTTP 客户端,那这个状态码就非常重要。

如果你频繁使用笔记本和智能手机,你可能会注意到大量的公用 WIFI 服务要求你必须接受一些协议或者必须登录后才能使用。

这是通过拦截HTTP流量,当用户试图访问网络返回一个重定向和登录,这很讨厌,但是实际情况就是这样的。

使用这些“拦截”客户端,会有一些讨厌的副作用。在 RFC 中有提到这两个的例子:

  • 如果你在登录WIFI前访问某个网站,网络设备将会拦截首个请求,这些设备往往也有自己的网站图标 ‘favicon.ico’。登录后您会发现,有一段时间内你访问的网站图标一直是WIFI登录网站的图标。
  • 如果客户端使用HTTP请求来查找文档(可能是JSON),网络将会响应一个登录页,这样你的客户端就会解析错误并导致客户端运行异常,在现实中这种问题非常常见。

因此 511 状态码的提出就是为了解决这个问题。

如果你正在编写 HTTP 的客户端,你最好还是检查 511 状态码以确认是否需要认证后才能访问。

英文原文OSCHINA原创翻译

Ps:尼玛,又出状态码,之前的那么多个哥都没记住10个呢…

所谓经验,半数扯淡

今天的文章很简单,我要和大家谈谈“经验”是什么。
首先,各位朋友找工作的时候都有过因为没经验被面试拒绝的问题吧,工作中也因为没有经验而比老员工干得累干得慢还干得差吧。
那“经验”究竟是个什么玩意,让我们这么痴迷,恨不得生下来就有管理国家处理宇宙大事的经验——但实际上我们生下来只有哭的经验。

首先我们把话题扯开,先问你三个不相干的问题:
第一,你是否能计算出一万以内的加减法?肯定没问题吧,那你能不能保证能算对两个随机数(如2467+3142)等于多少?请问这俩数字的加法你以前算过么?
第二,在北京打车,一个很熟悉路况的的哥想带我们抄近路,结果被临时封锁的路段给堵得死死的,的哥明明很熟悉这附近的路况啊?
第三,有个DBA从某知名网站跳槽到你们公司,你们公司因为他辉煌的履历而重用了他,结果你们很快发现这家伙连主键和外键都分不清楚。可是人家履历没造假啊。

请大家想想,这三个问题和“经验”扯上关系能说明了什么道理?
第一,因为我们知道加法的规则,所以两个从未运算过的随机数相加我也有信心算出正确结果;
第二,司机熟悉路况,但无法把控路况,所以他多年的行车经验根本保证不了你正常上班;
第三,从大公司出来的人不一定工作能力就很强,你高薪挖过来的可能是其他公司的弃子。

大家能想的再抽象也更精炼一些么?
第一,有时候,我们所谓的经验是因为我们已经懂了道理成竹在胸,这个时候“经验”等于“懂道理”等于“能力”;
第二,有时候,我们所谓的经验是在用过去的见识来赌未来的趋势,这个时候“经验”等于“撞大运”,结果是喜忧参半的;
第三,有时候,我们把“经历”一厢情愿的误解成了经验;反之误以为没有“经历”也就没有“经验”,也就没有了能力。
那这个事情对我们自己能有什么帮助哪?
第一,懂道理的人才是有能力的人,懂道理的人可以举一反三,能做到举一反三了经验就不是问题。我们不会为烂熟于心的知识而犹豫;
第二,当你用所谓的“经验”来撞大运的时候,想想成功了只是早下班十分钟,失败了可能会丢到工作。做技术工作越好的人,对未确认的技术越是胆怯。
第三,经历都不等同于经验,那就更不等同于能力了,我们要敢于怀疑这些有辉煌履历的纸糊老虎,别被他们误导甚至玩弄了。

接下来我再举个例子验证我的观点,你没有“大并发Apache维护能力”并不是因为你没经验,而是因为你不懂这些道理。
当apache的并发是每秒10次链接的时候,我们用yum安装Apache就可以自动工作了;
当apache的并发是100时,你要考虑一下,256M内存的虚拟机还够用么?
当apache的并发是200时,你要考虑默认的ulimit是1024;
当apache的并发是500时,你要考虑一下,后端的tomcat和mysql能支持并发500链接么?
当apache的并发是1000时,你就要注意,你的低速硬盘只有50M/s的速度;
当apache的并发是5000时,你要考虑文件系统要不要换一个更神速一点的;
当apache的并发是10000的时候,一次get要取多少个文件,系统最大的ulimit是多少?还有,你拿来压测的客户端有多少个随机端口可以分配。
当apache的并发是20000的时候,你家的网卡是千兆还是百兆的?
当apache的并发是50000的时候,如果这个时候系统还没死机,CPU会不会因为过热而烧毁哪?

因此,我们发现大并发的apache并不可怕,要深思的是“浏览器一个get请求都用到哪些角色的哪些资源哪?”在并发量小的时候,这些资源被占用万分之一还是千分之一的差别不大。但在并发量大的时候,这些你所忽视的资源细节都吃紧了,你也就只能承认“没有维护大并发Apache服务的经验”了,并自以为是的认为,“我还年轻,我还要练练,这活还要有经验的老同志去做。”
现在再假设你磨练了数年,为了跑一个apache该掌握的所有知识都掌握了,Apache突然版本升级到2.4或者2.6了,甚至公司不用Apache改用IIS了,你有没有信心说“我有大并发量Web站点的运维经验,我可以胜任工作”。
这个时候,你说有信心,说没把握都对。我再劝一次各位,说有信心的检查一下自己所处的新环境,搞IT撞大运出一次漏子就是极大的损失;说没信心的朋友我要鼓励你一下,你也知道这些所谓的经验就算背后的那些道理了,学会这些新知识点后还有什么好怕的。

例子举完了,最终我回到本文的主题,“所谓经验,多半扯淡”。没经验的朋友别沮丧,学会技术比熬时间混资历要更有用;有经验的朋友别高看自己的经验了,你只是无知者无畏而已;各位不管是招聘还是应聘,多想想自己的经历真的能说明什么么?

本文出自 “让技术做的更清晰” 博客,请务必保留此出处http://caoyameng.blog.51cto.com/4975863/856577

在centos5.x下为apache配置https访问

HTTPS配置
一.	实验内容
Apache实现HTTPS访问
二.实验环境
一台CentOs服务器,一台XP客户端
三.实例过程
1.	Apache要实现HTTPS访问,就需要使用mod_ssl模块,首先安装该模块
[root@dns named]# yum install mod_ssl.i*
2.由于有多种方式配置HTTPS,所以这里就分别实验
1)	自颁发证书的https
①创建一个用于存放证书的目录
[root@dns ~]# mkdir /etc/httpd/.sslkey
②建立网站私钥文件
[root@dns ~]# cd /etc/httpd/.sslkey/
[root@dns .sslkey]# openssl genrsa -out server.key 1024
Generating RSA private key, 1024 bit long modulus
.............................................++++++
.......++++++
e is 65537 (0x10001)
③建立网站证书文件,
[root@dns .sslkey]# openssl req -new -x509 -key server.key -out server.crt
④可以为了加强安全性,修改保存证书文件的文件夹
[root@dns .sslkey]# chmod -R 400 /etc/httpd/.sslkey/
⑤修改APACHE主配置文件,开启SSL
 
⑥客户端测试
 
 
2)CA颁发证书
①建立CA私钥,这个是需要输入私钥密码的
[root@dns .sslkey]# openssl genrsa -des3 -out ca.key 1024
Generating RSA private key, 1024 bit long modulus
............................................++++++
.....................++++++
e is 65537 (0x10001)
Enter pass phrase for ca.key:
Verifying - Enter pass phrase for ca.key:
③生成网站密钥文件,这里的私钥文件要输入一个密码
[root@dns .sslkey]# openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
...++++++
..........++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
④使用网站密钥生成网站证书请求文件
 
⑤建立CA签署证书的脚本,该脚本可以在mod_ssl的源码包里获得(sign.sh),这里直接贴代码了
#!/bin/sh
##
##  sign.sh -- Sign a SSL Certificate Request (CSR)
##  Copyright (c) 1998-2001 Ralf S. Engelschall, All Rights Reserved.
##

#   argument line handling
CSR=$1
if [ $# -ne 1 ]; then
    echo "Usage: sign.sign <whatever>.csr"; exit 1
fi
if [ ! -f $CSR ]; then
    echo "CSR not found: $CSR"; exit 1
fi
case $CSR in
   *.csr ) CERT="`echo $CSR | sed -e 's/\.csr/.crt/'`" ;;
       * ) CERT="$CSR.crt" ;;
esac

#   make sure environment exists
if [ ! -d ca.db.certs ]; then
    mkdir ca.db.certs
fi
if [ ! -f ca.db.serial ]; then
    echo '01' >ca.db.serial
fi
if [ ! -f ca.db.index ]; then
    cp /dev/null ca.db.index
fi

#   create an own SSLeay config
cat >ca.config <<EOT
[ ca ]
default_ca              = CA_own
[ CA_own ]
dir                     = .
certs                   = \$dir
new_certs_dir           = \$dir/ca.db.certs
database                = \$dir/ca.db.index
serial                  = \$dir/ca.db.serial
RANDFILE                = \$dir/ca.db.rand
certificate             = \$dir/ca.crt
private_key             = \$dir/ca.key
default_days            = 365
default_crl_days        = 30
default_md              = md5
preserve                = no
policy                  = policy_anything
[ policy_anything ]
countryName             = optional
stateOrProvinceName     = optional
localityName            = optional
organizationName        = optional
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional
EOT

#  sign the certificate
echo "CA signing: $CSR -> $CERT:"
openssl ca -config ca.config -out $CERT -infiles $CSR
echo "CA verifying: $CERT <-> CA cert"
openssl verify -CAfile ca.crt $CERT

#  cleanup after SSLeay
rm -f ca.config
rm -f ca.db.serial.old
rm -f ca.db.index.old

#  die gracefully
exit 0
⑥执行CA签署证书的脚本
 
⑦修改apache的主配置文件,这个操作和自颁发证书的过程一样了
 
⑧重启apache,这时候会要求输入服务器私钥密码才能重启了
 
⑨将在服务器上生成的ca.crt证书导入到windows客户端中,然后安装该证书
 
⑩客户端访问测试,依然可以成功以https的方式访问网站,同时该证书的颁发者和
自颁发证书的颁发者是不一样的,这是一个受信任的证书
 

3)要求客户端证书(就是说客户端必须安装相应的证书才能访问网站),这可以在之前完成的结果上继续进行
①修改apache的主配置文件,如下修改
 ②生成客户端证书
[root@dns .sslkey]# openssl pkcs12 -export -in server.crt -inkey server.key -out client.p12 -name "client"
Enter pass phrase for server.key:			#这个是输入网站私钥密码
Enter Export Password:					#这个是输入客户端证书的密码
Verifying - Enter Export Password:		#重复输入客户端证书密码
③将客户端证书放到windows客户端,安装客户端证书
 
④客户端测试,出现下图,标明已经实验成功了!

在Centos下配置vsftp服务

一.什么是vsftp

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。

安全性是编写VSFTP的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是VSFTP的两个重要特点。

在速度方面,使用ASCII代码的模式下载数据时,VSFTP的速度是Wu-FTP的两倍,如果Linux主机使用2.4.*的内核,在千兆以太网上的下载速度可达86MB/S。

在稳定方面,VSFTP就更加的出色,VSFTP在单机(非集群)上支持4000个以上的并发用户同时连接,根据Red Hat的Ftp服务器(ftp.redhat.com)的数据,VSFTP服务器可以支持15000个并发用户

二.vsftp的优点

1、它是一个安全、高速、稳定的FTP服务器;

2、它可以做基于多个IP的虚拟FTP主机服务器;

3、匿名服务设置十分方便;

4、匿名FTP的根目录不需要任何特殊的目录结构,或系统程序或其它的系统文件;

5、不执行任何外部程序,从而减少了安全隐患;

6、支持虚拟用户,并且每个虚拟用户可以具有独立的属性配置;

7、可以设置从inetd中启动,或者独立的FTP服务器两种运行方式;

8、支持两种认证方式(PAP或xinetd/ tcp_wrappers);

9、支持带宽限制;

三.实例环境

一台虚拟机(Centos5.6),一台WIN7测试客户端

四.实例过程

(1)默认服务,不安全

1.CentOS5.6默认是没有安装上vsftp这个软件包的,需要自己安装,安装当然是非常的简单,直接用rpm包安装,或是用yum方法安装也可以。(注意rpm包的路径哦)

[root@dns ~]# rpm -ivh /mnt/CentOS/vsftpd-2.0.5-16.el5_5.1.i386.rpm

warning: /mnt/CentOS/vsftpd-2.0.5-16.el5_5.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID e8562897

Preparing...                ########################################### [100%]

   1:vsftpd                 ########################################### [100%]

[root@dns ~]#

2.安装完成就可以立马启动vsftp服务了,这时候我们就可以通过匿名用户(anonymous,ftp),本地用户去登录ftp了

[root@dns ~]# service vsftpd start

为 vsftpd 启动 vsftpd:                                    [确定]

[root@dns ~]#

3.匿名用户登录测试,测试匿名用户是可以登录成功的

wps_clip_image-2317

4.本地用户登陆测试,也是可以登录的,还有一个问题就是本地用户登录可以跨目录,意思就是可以跳到别的目录

wps_clip_image-8302

5.不允许用户跨目录,就是说不让登录的用户跳出自己目录以外的其他目录,修改配置文件/etc/vsftpd/vsftpd.conf

wps_clip_image-10496

6.重启ftp服务器后,在客户端进行测试

wps_clip_image-5463

(2)如何使用虚拟用户登录ftp

1.创建本地映射用户,修改映射用户家目录权限

[root@dns ~]# useradd -s /sbin/nologin virtualuser

[root@dns ~]# ll /home/

总计 12

drwx------ 3 shao        shao        4096 04-25 01:39 shao

drwx------ 3 virtualuser virtualuser 4096 04-25 03:37 virtualuser

[root@dns ~]# chmod o=rwx /home/virtualuser/

[root@dns ~]# ll /home/

总计 12

drwx------ 3 shao        shao        4096 04-25 01:39 shao

drwx---rwx 3 virtualuser virtualuser 4096 04-25 03:37 virtualuser

[root@dns ~]#

wps_clip_image-10143

2.生成虚拟用户文件,该文件为纯文本文件,格式是账户一行密码一行(奇数行是账户,偶数行是密码)

wps_clip_image-28305

3.这时侯就可以生成虚拟用户数据库文件,用db_load命令,如果系统没有该命令,请用rpm包方式或yum方式安装db4-utils这个软件包

[root@dns ~]# db_load -T -t hash -f passwd.txt /etc/vsftpd/virtualuser.db

4.经过上面生成了数据库文件后,就可以去修改PAM认证文件了,这里我就创建一个新的认证文件vsftpd_virtual,内容如下

auth    required        /lib/security/pam_userdb.so db=/etc/vsftpd/virtualuser

account required        /lib/security/pam_userdb.so db=/etc/vsftpd/virtualuser

5.修改vsftpd的主配置文件/etc/vsftpd/vsftpd.conf

wps_clip_image-21841

6.重启vsftpd服务,客户端分别用本地用户和虚拟用户登陆测试

用本地用户测试,登陆失败

wps_clip_image-3964

虚拟用户登录测试,登陆成功

wps_clip_image-29223

(3)基于IP地址的虚拟ftp服务器

1.为虚拟服务器创建一个根目录,然后创建一个虚拟服务器的匿名用户所映射的本地用户

[root@dns ~]# mkdir -p /var/ftp2/pub2

[root@dns ~]# useradd -d /var/ftp2 -M ftp2

2.修改原主配置文件/etc/vsftpd/vsftpd.conf,增加一个属性值listen_address

wps_clip_image-16725

3.复制一份主配置文件,命名为vsftpd2.conf

[root@dns ~]# cp -p /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd2.conf

4.修改该主配置文件

wps_clip_image-11822

5.重启vsftpd

[root@dns ~]# service vsftpd restart

关闭 vsftpd:                                              [确定]

为 vsftpd2 启动 vsftpd:                                   [确定]

为 vsftpd 启动 vsftpd:                                    [确定]

6.客户端测试,分别用地址192.168.1.104和192.168.1.105反问服务器

wps_clip_image-22700

海贼王,不多说了!

海贼真的有催泪效果的..看到顶上战争那里时..热血啊…听说海贼王要到2025年才完结呢..尼玛到时候我是什么样子了..不会也组队出海了吧..哈哈..

海贼王–小剧场版

今天看了这么一个小剧场..挺有意思的..保留一下了…

return top