zoukankan      html  css  js  c++  java
  • 〖Linux〗-- while 、for、函数、计划任务

    【while 、for、函数、计划任务】

    while循环
    
    while
    
    do
    
    动作
    
    done
    
    需要无限循环时我们会选择while :
    
    echo -e 格式处理,将
    的意义不变。
    
    exit 指退出执行程序
    
    break 指跳出本层循环
    
    continue 跳出本次循环
    
     
    
    用户登录程序,判断用户名密码输入是否非法,输入错误重新输入,登录成功之后,执行操作命令,输入exit 退出,重新登录
    
    
    for循环
    
    事例:
    
    for i in {1..100}
    
    do
    
    echo $i
    
    done
    
    检测网络IP地址是否占用 (192.168.16.0/24段)
    
     
    
    循环检测一个网段。
    
    for i in {1,253}
    
    do
    
    ping -c1 192.168.16.$i &> /dev/null    将ping的处理文件全部处理为空,不在终端上打印处理文件。
    
    if [ $? -ne 0 ]
    
    then
    
        echo '192.168.16.$i is available! '>> /tmp/a.txt 
    
                                将数据直接导入到文档之中,不在终端上显示。
    
    else
    
        echo '192.168.16.$i is unavailable!'
    
    fi
    
    done
    
     
    
    case语法
    
     
    
    事例:
    
    read -p "username: " -t 5 uname
    echo
    if [[ -z $uname ]]
    then
    uname=default
    fi
    
    case  $uname  in      #循环判定值在哪里
    root)                # root下,输出,;;表示结束。
    echo "welcome $uname"
    ;;
    seker)
    echo "welcome $uname"
    ;;
    default)
    echo "welcome $uname"
    ;;
    *)                 #查看所有
    echo "no user $uname"
    esac
    
     
    
    函数
    
    交互式shell中的函数
    
    function  ***(){     #定义一个函数
    
                        #注意:每条命令后都要加;
    
    }***
    
    return 返回值 可以自定义
    
     
    
    计划任务 crontab
    
    计划时间内要完成的任务,包已自动安装,并开机自启动
    
     
    
    首先需要知道的是,无论是系统级还是用户级的cron计划都是文本文件,系 统的计划文件存放在/etc/crontab路径下。用户的计划文件放在/var/spool/cron/用户名,不管是哪一种,都可以满足我们定制计划任务的需求。
    
    root用户可以直接对文件进行修改来编写计划任务也可以使用 crontab -e命令,而普通用户只能使用后者。除此之外,系统crontab文件中任务的定义也有所不同,在前五个部分之后插入了一个“用户”部分。
    
     
    
    语法 :
    
    crontab -e -u 用户名(权限)
    
    crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]
    
     
    
    crontab任务配置基本格式:
    
    
    *  *  *  *  *  command
    分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)  命令
    
    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令
    
    参  数: 
    -e  编辑该用户的计时器设置。 
    -l  列出该用户的计时器设置。 
    -r  删除该用户的计时器设置。 
    -u<用户名称>  指定要设定计时器的用户名称。
    
     
    
    查看计划任务配置 crontab -l            date +%F_%T 时间格式
    
     
    
    实例:
    
    * * * * * echo ' date +%F_%T ' >> /tmp/test.log   每分钟将数据打印到log文件中
    
     
    
    查看cron服务是否起作用:
    
    如果我们要查看定时任务是否准时调用了可以/var/log/cron中的运行信息
    
    cat /var/log/cron
    
    也可以用tail -f /var/spool/mail/用户名,来查看普通用户的计划任务执行情况
    
    此处需要记住两点:
    
    第一:cron 守护进程每分钟都检查 /etc/crontab 文件、etc/cron.d/ 目录、以及 /var/spool/cron 目录中的改变。如果发现了改变,它们就会被载入内存。这样,当某个 crontab 文件改变后就不必重新启动守护进程了。
    
    第二:crontab的用户手册中推荐每一个命令使用绝对路径,例如调用rm命令时写作:/bin/rm,这是为了防止由于每一个用户的PATH环境变量不同而导致命令无法找到的错误。
    
     
    
     
    
     
    
    举例:
    
    30 21 * * * /usr/local/etc/rc.d/apache restart #每晚的21:30 重启apache
    
    45 4 1,10,22 * * /usr/local/etc/rc.d/apache restart #每月1、10、22日的4 : 45重启apache
    
    10 1 * * 6,0 /usr/local/etc/rc.d/apache restart #每周六、周日的1 : 10重启apache
    
    0,30 18-23 * * * /usr/local/etc/rc.d/apache restart #每天18 : 00至23 : 00之间每隔30分钟重启apache
    
    0 23 * * 6 /usr/local/etc/rc.d/apache restart #每星期六的11 : 00 pm重启apache
    
    * 23-7/1 * * * /usr/local/etc/rc.d/apache restart #晚上11点到早上7点之间,每隔一小时重启 apache
    
    * */1 * * * /usr/local/etc/rc.d/apache restart #每一小时重启apache
    
    0 11 4 * mon-wed /usr/local/etc/rc.d/apache restart #每月的4号与每周一到周三的11点重启apache
    
    0 4 1 jan * /usr/local/etc/rc.d/apache restart #一月一号的4点重启apache
    
    */30 * * * * /usr/sbin/ntpdate 210.72.145.44 #每半小时同步一下时间
    
    0 */2 * * * www /usr/bin/somecommand >> /dev/null 2>&1 #以用户www的身份每两小时就运行某个程序:
    
    
    0 1 * * * /home/testuser/test.sh
    每天晚上1点调用/home/testuser/test.sh
    
    */10 * * * * /home/testuser/test.sh
    每10钟调用一次/home/testuser/test.sh
    30 21 * * * /usr/local/etc/rc.d/lighttpd restart
    上面的例子表示每晚的21:30重启apache。
    
    45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
    上面的例子表示每月1、10、22日的4 : 45重启apache。
    
    10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
    上面的例子表示每周六、周日的1 : 10重启apache。
    
    0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
    上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
    
    0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
    上面的例子表示每星期六的11 : 00 pm重启apache。
    
    * */1 * * * /usr/local/etc/rc.d/lighttpd restart
    每一小时重启apache
    
    * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
    晚上11点到早上7点之间,每隔一小时重启apache
    
    0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
    每月的4号与每周一到周三的11点重启apache
    
    0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
    一月一号的4点重启apache
    
    */30 * * * * /usr/sbin/ntpdate 210.72.145.44
    每半小时同步一下时间
  • 相关阅读:
    Poly2Tri介绍[转]
    Threejs 开发3D地图实践总结【转】
    cesium and three.js【转】
    Three.js中如何显示帧速【转】
    Cesium学习笔记(七):Demo学习(自由控制飞行的飞机)[转]
    cesium原理篇(三)--地形(1)【转】
    cesium原理篇(二)--网格划分【转】
    Cesium原理篇:3D Tiles(1)渲染调度【转】
    shell脚本监控阿里云专线网络状态,若不通通过触发阿里云的进程监控报警
    jstat命令总结
  • 原文地址:https://www.cnblogs.com/SHENGXIN/p/7568079.html
Copyright © 2011-2022 走看看