前言:最近在做一个前端监控系统,用到分表分库的功能,由于代码上无法做到实时新建表,所以只能够曲线救国,使用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

linux如何执行定时任务的更多相关文章

  1. linux中执行定时任务对oracle备份(crontab命令)

    执行定时任务对oracle表数据备份: 1.创建sh脚本 [oracle@localhost ~]$ vi bak.sh 2.添加脚本内容 #!/bin/bash #:本脚本自动备份7天的数据库,每次 ...

  2. Linux 执行定时任务 shell脚本

    Linux上面执行定时任务,我们可以利用crontab -e直接编辑定时任务 另外我们还可以写好shell脚本,定时去执行shell脚本,这两个方法都可以起到定时执行的作用 下面我详细说一下入如何执行 ...

  3. Linux下Crontab定时任务的使用教程 以及 无法执行定时任务的解决方案

     前言 本文学习思路:Linux的corntab定时任务的使用教程  --> 定时任务无效的解决方案  Linux的corntab定时任务的使用教程 1. 首先,输入命令 打开crontab定时 ...

  4. 『学了就忘』Linux系统定时任务 — 88、循环执行定时任务

    目录 1.crond服务管理与访问控制 2.crontab命令的访问控制 3.用户级别的crontab命令 4.crontab命令的注意事项 5.系统的crontab设置 (1)/etc/cronta ...

  5. linux定时执行任务crontab命令用法

    linux系统的定时任务是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所 ...

  6. PHP执行定时任务

    PHP执行定时任务 1.当PHP像文件写入信息的时候 <?php for ($i=0; $i < 10; $i++) { $str="我是第".$i."条&q ...

  7. linux定时执行任务 转

    转自:http://www.cnblogs.com/thinksasa/archive/2013/06/06/3121030.html linux定时执行任务   (1)Linux下如何定时执行php ...

  8. ubuntu 下执行定时任务

    Window shell文件在linux系统下执行不了的解决办法 一些人喜欢用vim来写linux shell script, 但是, 有的人喜欢在Windows下用一些方便的编辑器(比如鼎鼎大名的N ...

  9. linux 中的定时任务crontab使用方法

    linux 中的定时任务crontab使用方法: 切换到root用户,sudo su root (可以设置成不需要输入密码) sudo su - (需要输入当前帐号的密码才能进入.) crontab ...

随机推荐

  1. Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging

    1665 - Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT a ...

  2. 管理node.js的nvm

    我们坑同时在运行2个项目.而2个不同的项目所使用的node版本又不一样,或者是要用更新的node版本进行试验或学习.这种情况下,对于维护多个版本的node将会是一键非常麻烦的事情,而nvm就是为了解决 ...

  3. ESA2GJK1DH1K基础篇: 移植官方MQTT包,让TCP实现MQTT功能(以GPRS模块为例)

    前言 这节代码将在这一节的基础上实现 拷贝第一节测试里面的MQTT文件夹到当前工程 当前工程建个MQTT的文件夹,用于存放那个MQTT文件夹里面的内容 添加文件到里面 注意:::: 实际源码拷贝位置 ...

  4. 常用STL使用指北

    常用STL使用指北 set和multiset set和multiset都是基于红黑树(显然是一个二叉搜索树)的STL. 定义 我们可以使用(multi)set<元素类型>名称来定义一个(m ...

  5. 一些精简的JavaScript代码集合

    日历 创建过去七天的数组,如果将代码中的减号换成加号,你将得到未来7天的数组集合 // 创建过去七天的数组 [...Array(7).keys()].map(days => new Date(D ...

  6. 在导入pytorch时libmkl_intel_lp64.so找不到

    安装或者更新完pytorch后,运行不了,显示错误: (base) xu@xusu:~$ python Python (default, Dec , ::) [GCC ] :: Anaconda, I ...

  7. ef core 全局过滤

    有些固定的条件,基本每个查询的时候需要带的条件,我们可以使用全局过滤来帮我们,这样后面的查询就不用每次都带条件了. 微软自带的:https://docs.microsoft.com/zh-cn/ef/ ...

  8. 《Linux就该这么学》自学笔记_ch21_使用Git分布式版本控制系统

    <Linux就该这么学>自学笔记_ch21_使用Git分布式版本控制系统 文章主要内容: 分布式版本控制系统 使用Git服务程序 提交数据 移除数据 移动数据 历史记录 还原数据 管理标签 ...

  9. kali渗透

    局域网-断网&劫持(kali)   1.查看局域网中的主机 fping –asg 192.168.1.0/24 2.断网 arpspoof -i wlan0 -t 192.168.100 19 ...

  10. Maven -------------- Eclipse 安装maven ,配置setting文件

    1.设置maven路径 Window->Preferences->Maven->Installations-> 选择maven的路径,如果原来有低版本的建议删除 选择好后点击f ...