> Linux教程 > linux基础 >

时间任务/网络工具的使用/磁盘阵列

 第一、时间任务

    常用的有三个: at 、 cron 、anacron

    对应的服务: atd 、crond 、anacron

    1、at
        特点:a、如果设定的时间点过了,那么任务就失效,不会再执行
            b、任务只是一次性,每次都要自己去再建立

        命令语法:
            at   时间 日期
[root@dns 10]# at 09:43 102809
at> wall "hi,you"
at> <EOT>   <--- ctrl + d

        查看时间任务:
            atq  命令
            查看这个路径下的文件:
                ls /var/spool/at/

        对atd服务使用的限制:
            /etc/at.allow  ,如果这个文件存在,就不去考虑at.deny.而且他的作用:只允许文件里面出现的用户使用atd这个服务
            /etc/at.deny    如果at.allow不存在的时候,才生效,作用:只拒绝里面的用户使用atd
            这两个文件的语法就是:一行一个用户名
vim /etc/at.allow   《---只允许root、tom使用atd,别的都不能
root
tom

   

    2、crond
        特点:
            1、他能够周期性的执行;
            2、任务时间过了,任务就不会执行,需要等到下一个周期到来

        配置文件: /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
0  9 *  * * root run-parts (wall "welocome";wall "again")   《--多个命令用括号圈起来,每个命令用分号分隔


01     *     *     *     *     root         run-parts /etc/cron.hourly
分钟    小时    日    月    星期    执行任务的身份    定义后面是一个目录  命令所在的目录

0    8    *    *    *   
0    20    *    *    *
1-30    *    *    *    *  《---每个小时的前30分钟执行任务
29,58    *    *    *    *  《---每个小时的第29,58分钟执行
*/2    *    *    *    *   《---每隔2分钟执行一次任务
*/2    */3    15    *    *  《--每个月的15号每三个小时,每两分钟,执行任务   
*/2    */3    15    *    7  《--每个月的15号每三个小时,每两分钟,执行任务,或者星期七每三个小时,每两分钟,执行任务



格式:
    分钟 : 0-59
    小时: 0-24
    日:具体看月份
    月:1-12
    星期: 0-7 ,0和7都是代表星期天
    * 代表匹配所有,所有的分钟,所有小时...


如果是多个命令需要执行,就干脆写在一个脚本里:
1、
vim /etc/cron.minute/time.sh
#!/bin/bash
/usr/sbin/ntpdate 10.1.1.1

2、
chmod 755 /etc/cron.minute/time.sh

3、
vim /etc/crontab  <---添加一行
* * * * * root run-parts /etc/cron.minute
4、
service crond restart


设定的方式二:
    crontab -e   <---设定自己的时间任务
0 20 * * * /sbin/init 0   <---格式就这样  * * * * * command或者脚本的路径
* * * * * /etc/cron.minute/time.sh

    crontab -l  看自己的时间任务
    crontab -l -u mary 看mary的时间任务
    crontab -r -u mary 删除mary的时间任务
    crontab -e -u mary 去编辑mary的时间任务

    对应的每个用户设定的时间任务都在这:
    cat /var/spool/cron/*  , *代表用户名


以后用到:  可以在虚拟机的/etc/rc.d/rc.local 添加以下内容,作用:每30秒同步时间
while :; do /usr/sbin/ntpdate 10.1.1.1 > /dev/null  2>/dev/null; sleep; done &

    限制cron的使用:
        /etc/cron.allow  《---默认不存在,要自己创建,原理和作用跟at.allow一样
        /etc/cron.deny


    3、anacron 任务设定
        特点:能够保证cron还没执行的任务去执行

    配置文件: /etc/anacrontab
单位:天    延迟(单位:分钟)设定的时间任务
1           65          cron.daily              run-parts /etc/cron.daily
7           70          cron.weekly             run-parts /etc/cron.weekly
30          75          cron.monthly            run-parts /etc/cron.monthly


    怎么判断时间任务是否执行了呢?
    cat  /var/spool/anacron/cron.daily  《---如果出现的文件名字不是今天的日期,而是昨天的,说明它发现昨天有个任务还没完成
20091028

    要保证生效,就必须:
        chkconfig --level 35 crond on
        chkconfig --level 35 anacron on   《---主要是用来保证开机的时候检测一下以前是否有cron的任务还没执行完,检测完就自动退出进程


学习目标: 学会配置 /etc/crontab
        学会使用 crontab -e -u -l
    保证对应的服务的开启

========================================


第二、网络工具的使用

    ping ifconfig route
   
    配置一台空白的电脑能让它上网:
        1、ifconfig 配IP
        2、配网关
        3、配DNS

    ping
        ping www.baidu.com
        ping -b
        ping 127.0.0.1  <---作用,代表的意义

    mii-tool
        用法:
            mii-tool  《---判断网卡是否通电,是否正常,但不是100%

    cat /proc/net/dev
bytes          接收或者发送的数据量的总的大小   《--用于脚本监控流量的
packets     接收或者发送的数据包的个数      
errs         被驱动程序检测到是错误的包的个数
drop         由于资源的限制,来不处理被逼扔掉的包
fifo         缓存出错
frame         frame的错误个数
compressed
multicast
colls         冲突的包的次数
carrier        出现连接媒介的错误的次数

    netstat
        netstat -r -n  《---显示路由表
        netstat -i -e  《---显示网卡的信息
        netstat -a  查看所有类型的连接信息
        netstat -nt  查看所有的tcp  (-t )的连接信息,-n不把IP转换成域名
        netstat -ntl 只查看tcp连接并且是处于listen状态
            例子:netstat -ntl | grep 80    快速的判断 web服务是否开启
        netstat -utl 只查看udp连接并且是处于listen状态
        netstat -ntlp 显示打开的连接对应的程序 -p 显示程序的路径
       

        SYNC_REV  <---如果发现大量的这中状态的连接,就很可能服务器被SYNC洪水攻击


traceroute
    traceroute  -n www.google.cn
    mtr -n www.baidu.com

    rpm -ivh mtr-gtk-0.71-3.1.i386.rpm
    xmtr 《---图形的mtr工具


tcpdump
    tcpdump arp  《---捕捉arp协议的数据包
    tcpdump tcp  《---捕捉tcp协议的所有数据包
    tcpdump udp
    tcpdump tcp port 22  <--就捕获tcp协议并且是端口22的数据包
    tcpdump tcp port 22 -vv  《--  -vv把数据包的详细信息都记录下来
    tcpdump tcp src port  22  <---只记录源端口是22的数据包
    tcpdump  dst 10.1.1.108  <---只记录目的IP是10.1.1.108的数据包
    tcpdump tcp dst port  80  <---只记录访问我本机80端口的数据包
    tcpdump tcp dst port  80 -vv -w /tmp/test/http.cap

    要看懂捕捉下来的数据包文件,就得安装这个工具
    yum install wireshark.i386 wireshark-gnome.i386 -y
        运行命令 wireshark & 就可以打开工具并打开刚才捕捉下来的文件进行查看



=========================================


第三、raid磁盘阵列
   
    raid0  : 至少两块磁盘,提高存取速度,但不提供数据冗余,不允许坏任何一块磁盘;
    raid1  : 至少两块磁盘,基本没有提高性能,但提供数据镜像,每个磁盘数据一样,允许坏掉一块磁盘
    raid5  : 至少3块磁盘,提高性能的同时,同时提供数据冗余,只允许坏掉一个磁盘

    注意: 数据冗余和数据备份是两个概念


   

    创建软raid的过程:
    例子:创建raid0

        1、新建两个分区,并且分区的类型是fd
            .....
            partprobe

        2、mdadm 创建软raid
        mdadm --create /dev/md0  --level=0  --raid-devices=2 /dev/sda{9,10}
        mdadm --create /dev/md0  --level=0  --raid-devices=2 /dev/sda9 /dev/sda10

        查看创建过程:
            watch cat /proc/mdstat
        查看创建结果:
            tail -20 /var/log/messages
            raid0: done.
        3、为了让软raid能开机自动启用,就可以写配置文件:
        echo "DEVICES /dev/sda9 /dev/sda10" > /etc/mdadm.conf
        mdadm --detail --scan >> /etc/mdadm.conf

        4、格式化并挂载:
            mkfs -t ext3 /dev/md0
            mount /dev/md0 /mnt

        第一次创建好的raid设备就已经激活       


    手工激活raid设备:
        mdadm -As /dev/md0
            如果内核不支持自动激活raid设备而且你没有写/etc/mdadm.conf
           

    手工停止某个raid设备:
        # umount /dev/md0
        # mdadm --stop  /dev/md0
   



    例子2: raid 5

        1、新建两个分区,并且分区的类型是fd
            .....
            partprobe

        2、mdadm 创建软raid
        mdadm --create /dev/md1  --level=5  --raid-devices=3 /dev/sda{11,12,13}
   

        查看创建过程:
            watch cat /proc/mdstat
        查看创建结果:
            tail -20 /var/log/messages
            raid0: done.
        3、为了让软raid能开机自动启用,就可以写配置文件:
        shell> vim /etc/mdadm.conf
        DEVICES /dev/sda9 /dev/sda10 /dev/sda11 /dev/sda12 /dev/sda13
        shell> mdadm --detail --scan >> /etc/mdadm.conf

        4、格式化并挂载:
            mkfs -t ext3 /dev/md1
            mkdir /raid5
            mount /dev/md1 /raid5


   
    模你设备故障:

        手工干掉raid5中的一个设备(分区),模拟故障
    shell> dd if=/dev/zero of=/dev/sda11 bs=1M count=1000
        验证: 发现数据还可以访问.
        但如果实际情况下,真的是设备故障,你用这个命令可以看到故障:
    shell> cat /proc/mdstat
Personalities : [raid0] [raid6] [raid5] [raid4]
md1 : active raid5 sda13[2] sda12[1] sda11[0]
      4016000 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]  《--你会发现还是UUU
   
    所以我们用以下命令模拟故障:
    shell> mdadm /dev/md1 --fail /dev/sda11    《--把sda11模能成故障

    shell>  cat /proc/mdstat
Personalities : [raid0] [raid6] [raid5] [raid4]
md1 : active raid5 sda13[2] sda12[1] sda11[3](F)  <---sda11变了F状态了
      4016000 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]  <---改变了

        验证: /raid5 下的数据还可以访问,就证明了raid5设备是可以坏掉一个设备的,为了防止坏掉另外的设备造成数据丢失,应该马上把新的好的,型号和容量一模一样的设备替换上去:

    shell> mdadm /dev/md1 --add /dev/sda14  《---把新的sda14替换

    shell> cat /proc/mdstat  <---查看添加过程




    删除raid设备:

    1、umount /dev/md1
mdadm /dev/md1 --fail /dev/sda12 --remove /dev/sda12
mdadm /dev/md1 --fail /dev/sda13 --remove /dev/sda13
mdadm /dev/md1 --fail /dev/sda14 --remove /dev/sda14

    2、停止/dev/md1设备
mdadm --stop /dev/md1

    3、删除配置文件对应的信息 /etc/mdadm.conf

    4、有些时候还是无法删除这个md1信息,开机之后还是有他的相关信息的:
mdadm --misc --zero-superblock /dev/sda12
mdadm --misc --zero-superblock /dev/sda13
mdadm --misc --zero-superblock /dev/sda14


    5、把对应的设备文件给干掉
rm -f /dev/md1
       




作业:
    1、使用虚拟机安装一个系统,配置随便你,但需要添加额外的4-5个磁盘(scsi),并用这些磁盘当中的其中3个建立raid 5;
    2、对创建完的raid设备进行格式化并挂载,要求挂载之后能够支持磁盘配额,挂载目录为/www
        提示:要让/www支持其他人读写,chmod 777 /www -R
    3、新建三个用户:tom、mary、bean,并且bean是属于mary组的,分别让他们能使用/www的10M、20M、50M的空间
        edquota -u tom
        edquota -u mary
    4、使用root用户在/www下建立一个叫做html的文件夹,要求这个文件夹的属主关系为tom:mary,权限为755.
    5、要求使用acl控制/www/html文件夹,只能让tom读和访问的权限,mary组读和访问的权限,而bean就具有这个文件夹的所有权限
(责任编辑:IT)