目录

一、准备工作:

1、shell代码:

2、crontab

2.1 安装crontab 

2.2 开启crontab服务

二、添加定时任务

新增调度任务可用两种方法: 

三、原理


一、准备工作:

1、shell代码:

1.1 使用vi编辑器 可以直接 # vim time.sh编写第一个shell文件 time.sh

$ cat time.sh 
#! /bin/bash
echo $(date +%s) >> /home/ocean/out.txt

#!/bin/bash 表示要是/bin/bash这个执行脚本的命令执行接下来写的脚本,具体代码看各自需求。

1.2 通过chmod命令赋予该脚本的执行权限chmod 777 time.sh,否则没有执行权限

1.3 查看执行结果

$ cat out.txt
1552543807
1552543861
1552543921
1552543981
1552544041
1552544101

2、crontab

2.1 安装crontab 

crontab 定时调用shell脚本执行python文件 定时任务shell脚本_配置文件

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

2.2 开启crontab服务

crontab 定时调用shell脚本执行python文件 定时任务shell脚本_配置文件_02

用以下的方法启动、关闭这个cron服务: 

service crond start //启动服务 
service crond stop //关闭服务 
service crond restart //重启服务 
service crond reload //重新载入配置

查看crontab服务状态:service crond status 
手动启动crontab服务:service crond start

crontab 定时调用shell脚本执行python文件 定时任务shell脚本_重启_03

查看crontab服务是否已设置为开机启动,执行命令:ntsysv 
加入开机自动启动: 

chkconfig –level 35 crond on

也可以用设置开机自动启动crond服务: 

[root@CentOS ~]# chkconfig crond on

crontab 定时调用shell脚本执行python文件 定时任务shell脚本_配置文件_04

查看各个开机级别的crond服务运行情况 

[root@CentOS ~]# chkconfig –list crond

crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 
可以看到2、3、4、5级别开机会自动启动crond服务 

取消开机自动启动crond服务: 

[root@CentOS ~]# chkconfig crond off

接下来直接进入正题,说一下定时任务

二、添加定时任务

新增调度任务可用两种方法: 

1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。 crontab -e配置是针对某个用户的,

$ crontab -e
no crontab for ocean - using an empty one

Select an editor. To change later, run 'select-editor'.
 1. /bin/nano    <---- easiest
 2. /usr/bin/vim.tiny
 3. /bin/ed

 内容编辑为:每一分钟执行一次

# m h dom mon dow  command
 * * * * * /home/ocean/workspaces/shell/time.sh

查看定时任务是否添加成功

$ crontab -l

重启cron:新加入的定时任务不会马上执行,一般要等一会儿,除非你重启服务器

$ sudo service cron restart

查看调度任务 

crontab -l //列出当前的所有调度任务 
crontab -l -u jp //列出用户jp的所有调度任务

删除任务调度工作 

crontab -r //删除所有任务调度工作

注意,新创建的cron作业,不会马上执行,至少要过2分钟才执行。如果重启cron服务则会马上执行。

2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。 而编辑/etc/crontab是针对系统的任务,全局性配置文件 

$ cat /etc/crontab

crontab 定时调用shell脚本执行python文件 定时任务shell脚本_定时任务_05

  • 前四行是有关设置cron任务运行的环境变量。
  • SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),PATH变量定义了执行命令的路径。
  • Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。
  • 如果MAILTO变量定义为空字符串(MAILTO=""),电子邮件不会被发送。
  • 执行命令或脚本时HOME变量可用来设置基目录。

三、原理

ubuntu默认安装了cron,是开机自启动的。

当cron启动后,它会读取它的所有配置文件,然后cron会根据命令和执行时间来调度工作任务。cron有两个配置文件,

  • 一个是一个全局配置文件(/etc/crontab),是针对系统任务的;
  • 一组是crontab命令生成的配置文件(/var/spool/cron下的文件),是针对某个用户的.定时任务配置到任意一个中都可以。