zoukankan      html  css  js  c++  java
  • 第十八天-linux系统定时任务crond深入实战

    1.每隔1分钟,打印一个+号到oldboy.log,请给出crontab完整命令。

    #printf + every minute
     *  *  *  *  * echo '+'>> /oldboy.log 

    2.每隔2个小时将/etc/services文件打包备份到/tmp下(最好每次备份成不同的备份包)。
        (1)在命令行测试

    root@xiaorui:~# ll /etc/services
    -rw-r--r-- 1 root root 19605 10月 25  2014 /etc/services
    root@xiaorui:~# cd /etc/
    root@xiaorui:/etc# tar zcvf /tmp/services_$(date +%F-%H).tar.gz ./services

        (2)编写脚本:

    vim /server/scripts/tar.sh
    #every two hour tar /services to tmp
    cd /etc/
    tar zcf /tmp/services_$(date +%F-%H).tar.gz ./services

        (3)编写crontab -e

    #every two hour tar /etc/services to tmp
    00  */2  * * * /bin/sh /server/scripts/tar.sh >/dev/null 2>&1

        技巧:
        1、命令行测试好,规范脚本存放路径。
        2、定时任务打包或处理其他工作,不要在屏幕输出,可以放到日志文件里。
        3、从定时任务到脚本的工程尽量复制,防止重敲错。    
        4、执行脚本要叫/bin/sh
        5、结尾定向到空,>/dev/null 2>&1
    3.每天晚上12点,打包站点目录/var/www/html备份到/data目录下(最好每次备份按时间生成不同的备份包)。
        解答:
        查看脚本:

    cat tar.site.sh
    cd /var/www && tar zcfp /data/html_$(date +%Y%m%d).tar.gz ./html

        定时任务:

    ##tar /var/www/html by shell scrpt by xiaorui at 20151201
    00 00 * * * /bin/sh /server/scripts/tar_site.sh >/dev/null 2>&1

    4.每周六、日上午9:00和下午14:00来老男孩这里学习(执行程序/server/script/oldboy.sh代替学习)。

    ##study from oldboy at 9:00 and 14:00 on sat and sun    
    00 9,14 * * 6,7 /bin/sh /server/script/oldboy.sh >/dev/null 2>&1

    5.请描述下列路径的内容是做什么的?
        /etc/sysctl.conf    和系统内核优化有关
        /etc/rc.local         开机自启动任务的配置文件
        /etc/hosts            域名解析文件
        /etc/fstab             系统开机时自动挂载所有分区的配置文件
        /var/log/secure    系统安全日志,记录用户登陆本机的信息
    6.添加一个用户oldboy,并指定属于sa组,要求组ID为801,uid为808,并且不创建家目录及禁止其登陆。

    groupadd -g 801 sa
    useradd -g sa -u 808 oldboy -M -s /sbin/nologin
    xiaorui@xiaorui:~$ useradd --help

    用法:useradd [选项] 登录
            useradd -D
               useradd -D [选项]
    选项:
        -b, --base-dir BASE_DIR       新账户的主目录的基目录
        -c, --comment COMMENT         新账户的 GECOS 字段
        -d, --home-dir HOME_DIR         新账户的主目录
        -D, --defaults               显示或更改默认的 useradd 配置
        -e, --expiredate EXPIRE_DATE  新账户的过期日期
        -f, --inactive INACTIVE          新账户的密码不活动期
        -g, --gid GROUP               新账户主组的名称或 ID
        -G, --groups GROUPS        新账户的附加组列表
        -h, --help                          显示此帮助信息并推出
        -k, --skel SKEL_DIR          使用此目录作为骨架目录
        -K, --key KEY=VALUE                 不使用 /etc/login.defs 中的默认值
        -l, --no-log-init              不要将此用户添加到最近登录和登录失败数据库
        -m, --create-home          创建用户的主目录
        -M, --no-create-home            不创建用户的主目录
        -N, --no-user-group          不创建同名的组
        -o, --non-unique             允许使用重复的 UID 创建用户
        -p, --password PASSWORD        加密后的新账户密码
        -r, --system                        创建一个系统账户
        -R, --root CHROOT_DIR             chroot 到的目录
        -s, --shell SHELL             新账户的登录 shell
        -u, --uid UID                       新账户的用户 ID
        -U, --user-group              创建与用户同名的组
        -Z, --selinux-user SEUSER          为 SELinux 用户映射使用指定 SEUSER

    7.老男孩老师定时任务总结:

      书写的方法:
      要领1:为定时任务规则加必要的注释
      要领2:执行shell脚本任务前加/bin/sh
      要领3:定时任务命令或脚本结尾加>/dev/null 2>&1
      要领4:定时任务命令或程序最好写到脚本里执行
      要领5:在指定用户下执行相关定时任务
      要领6:生产任务程序不要随意打印输出信息 tar zcf echo 123 >a.log
      要领7:定时任务执行的脚本要规范路径
      要领8:配置定时任务的规范操作过程

      工作中调试定时任务的方法:
      1、增加执行任务的频率调试任务(某些任务不能用于生产环境)
      2、调整系统时间调试任务(不能用于生产环境)
      3、通过脚本日志输出调试定时任务
      4、注意一些任务命令带来的问题
      5、注意环境变量导致的定时任务故障
      6、通过crond定时任务服务日志调试定时任务
      7、其他稀奇古怪的问题调试的方法

      crontab定时任务生产应用问题箴言:
      1、系统环境变量问题
      2、定时任务要用绝对路径
      3、脚本权限问题,要用/bin/sh
      4、时间变量问题用反斜线转义 例如:\%
      5、>/dev/null 2>&1问题
      6、定时任务规则之前加注释
      7、使用脚本程序替代命令行定时任务
      8、避免不必要的程序及命令输出
      9、切到目标目录的上一级打包目标
      10、定时任务脚本中的程序命令用全路径

    8.


    9.linux定时任务生产java服务无法执行问题群友案例
      http://oldboy.blog.51cto.com/2561410/1541515

  • 相关阅读:
    Mysql 中的日期时间字符串查询
    PyQt5中的信号与槽,js 与 Qt 对象之间互相调用
    vue学习初探
    【Java】JDBCUtil模板
    【明哥报错簿】之【 "javax.servlet.http.HttpServlet" was not found on the Java Build Path || HttpServletRequest/HttpServletResponse cannot be resolved to a type】
    【开发工具IDE】Eclipse相关配置
    【Java】JAVA开发人员常见环境工具安装
    【Java】自动获取某表某列的最大ID数
    【Java】全站编码过滤器GenericEncodingFilter代码与配置
    【Linux】无法将 Ethernet0 连接到虚拟网络“VMnet8”
  • 原文地址:https://www.cnblogs.com/migongci0412/p/5008936.html
Copyright © 2011-2022 走看看