• linux如何执行定时任务


    前言:最近在做一个前端监控系统,用到分表分库的功能,由于代码上无法做到实时新建表,所以只能够曲线救国,使用linux系统的定时任务来完成。

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

    安利一下我的开源项目 前端监控系统

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

    一、如何创建一个脚本

    先写一个简单的shell命令:

    1. 使用pwd命令查看当前路径为/root目录:

    2. 使用vi编辑器 可以直接输入命令$: vim hello.sh  编写第一个shell文件 hello.sh, 请以.sh结尾

      以“#”开头的为注释行,不会被执行。

      [ #!/bin/bash ] 作为shell脚本文件的开头,

      [ echo "你好, www.webfunny.cn !" ] 表示打印这句话。

      [ node -v ] 表示查看node版本号

    3. 执行命令$:chmod 755 hello.sh,通过chmod命令赋予该脚本的执行权限,否则没有执行权限。

       执行命令$:/root/hello.sh 表示在全路径下执行该shell脚本。

    到此,第一个简单的脚本就完成了。

    下边我们就开始创建定时任务了。

    crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活。crond 常常在后台运行,定时检查是否有预定的作业需要执行。

    二、安装crontab 

      1)Ubantu系统下安装crontab(看清操作系统)

       正常情况下需要先执行$:apt-get upgrade 进行升级

             安装:apt-get install cron
             启动:service cron start
             重启:service cron restart
             停止:service cron stop
             检查状态:service cron status
             查询cron可用的命令:service cron
             检查Cronta工具是否安装:crontab -l

      2)CentOS系统下安装cron(看清操作系统)

             1)vixie-cron 软件包是 cron 的主程序;

        2)crontabs 软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

         安装:yum install vixie-cron
         安装:yum install crontabs

      基本命令:

      service crond start //启动服务
      service crond stop //关闭服务
      service crond restart //重启服务
      service crond reload //重新载入配置
      service crond status //查看crontab服务状态

    三、开启crontab服务

      可以参考第二步骤的命令。

    四、设置需要执行的脚本 

    直接编辑 vim /etc/crontab ,默认的文件形式如下:

      前四行是有关设置cron任务运行的环境变量。SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),PATH变量定义了执行命令的路径。

      文件/etc/crontab中每行任务的描述格式如下,其实就是cron表达式

      minute hour day month dayOfWeek command
     
      minute - 从0到59的整数 
      hour - 从0到23的整数 
      day - 从1到31的整数 (必须是指定月份的有效日期)
      month - 从1到12的整数 (或如Jan或Feb简写的月份)
      dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
      command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令) 
     
      root表示以root用户身份来运行
      run-parts表示后面跟着的是一个文件夹,要执行的是该文件夹下的所有脚本
      对于以上各语句,星号(*)表示所有可用的值。例如*在指代month时表示每月执行(需要符合其他限制条件)该命令。 
      整数间的连字号(-)表示整数列,例如1-4意思是整数1,2,3,4
      指定数值由逗号分开。如:3,4,6,8表示这四个指定整数。
      符号“/”指定步进设置。“/<interger>”表示步进值。如0-59/2定义每两分钟执行一次。步进值也可用星号表示。如*/3用来运行每三个月份运行指定任务。
     
    最终配置如下,每分钟执行一次:

     

    定时打印结果如下:


    五、nodejs如何调用shell脚本

      这点本不属于这个篇文章的主题,但也是在解决问题中遇到的方法,所以一同放在这里。

      linux下定时执行shell脚本完成了,但是再执行命令的时候却不尽如人意。所以转而使用nodejs来调用shell脚本,反倒可以成功。

    var callFile = require('child_process');
    callFile.execFile('./create_table.sh', [], null, function (err, stdout, stderr) {
                console.log(err, stdout, stderr);
    });

    参考博文:https://blog.csdn.net/longgeaisisi/article/details/90477975

    参考博文:https://www.cnblogs.com/bcphp/p/7084967.html

  • 相关阅读:
    js 把数组中每个元素的某个字段取出
    vue 实现单选/多选效果
    js常用的array方法
    js的split()和join()的用法
    HTML 转 PDF 之 wkhtmltopdf
    微信小程序api封装(promise)
    常用的正则表达式
    更改MySQL的存储目录
    CentOS 6.X 安装VirtualBox-5.1
    CentOS 6.X 安装VNC Server实现图形化访问
  • 原文地址:https://www.cnblogs.com/warm-stranger/p/11861744.html
Copyright © 2020-2023  润新知