zoukankan      html  css  js  c++  java
  • Linux 定时任务的配置

    通常我们会需要定时启动一些shell脚本,类似Windows中的Task Scheduler, 下面是在AWS EMR Cluster 主几点上配置的步骤:

    1. 先创建一个shell脚本,将需要执行的任务写入脚本

      vi  testcron.sh

    2. 修改该脚本的权限,添加执行权限:

      chmod a+x testcron.sh

    3. 配置crontab, 创建执行任务的schedule:

      crontab -e

      * * * * * /tmp/testcron.sh         #每分钟执行一次testcron.sh

    4. 列出当前用户的所有定时任务:

      crontab -l

    5. 删除当前用户的所有定时任务:

      crontab -r

    6. 也可以配置其他用户:

      crontab -u username -e 

    7. 看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察

    8. 利用 linux flock 锁机制

      利用 flock(FreeBSD lockf,CentOS下为 flock),在脚本执行前先检测能否获取某个文件锁,以防止脚本运行冲突。

      格式:

       flock [-sxun][-w #] fd#
       flock [-sxon][-w #] file [-c] command

      选项:

       -s, --shared:    获得一个共享锁
       -x, --exclusive: 获得一个独占锁
       -u, --unlock:    移除一个锁,脚本执行完会自动丢弃锁
       -n, --nonblock:  如果没有立即获得锁,直接失败而不是等待
       -w, --timeout:   如果没有立即获得锁,等待指定时间
       -o, --close:     在运行命令前关闭文件的描述符号。用于如果命令产生子进程时会不受锁的管控
       -c, --command:   在shell中运行一个单独的命令
       -h, --help       显示帮助
       -V, --version:   显示版本 

      锁类型:

        共享锁:多个进程可以使用同一把锁,常被用作读共享锁
        独占锁:同时只允许一个进程使用,又称排他锁,写锁。

      这里我们需要同时只允许一个进程使用,所以使用独占锁。

    修改后的定时任务如下:

     */1 * * * *  flock -xn /tmp/test.lock -c /tmp/testcron.sh  >> /tmp/testcron_result.log

    为了测试这个功能,我在testcron.sh脚本里,添加了sleep命令

          sleep 10m      #等待10分钟

      sleep 1h        #等待1小时

      sleep 10        #等待10秒钟

  • 相关阅读:
    OLEDB SqlHelper
    .net中数据库事务机制
    C#中的@符号
    C#实现WEB服务器
    Snake.Net
    C#在客戶端和服務端操作Excel文件
    数据库连接字符串大全
    获取cpu序列号,硬盘ID,网卡MAC地址
    Asp.net动态生成html页面(、
    document 文挡对象详解
  • 原文地址:https://www.cnblogs.com/yuzg/p/10406603.html
Copyright © 2011-2022 走看看