crontab 定时任务

转发原文:crontab 定时任务

Shell俗称壳,类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

我的虚拟机是centos7.2.1

接下来 写一个简单的shell命令:

1.创建一个cron目录,把所有的定时任务都统一放在一个目录

cd /mnt

mkdir   cron

2.使用vi编辑器 可以直接 # vim hello.sh编写第一个shell文件 hello.sh, 注意一定要以.sh结尾

vim hello.sh

3.编写第一个shell文件,#!/bin/bash 是必须要写的,表示要是/bin/bash这个执行脚本的命令执行接下来写的脚本, echo "hello world !!"表示想前端打印一句话,具体看各自需求。

手动执行一下看是否成功

4.通过chmod命令赋予该脚本的执行权限chmod 755 hello.sh,否则没有执行权限。然后执行命令 crontab -e  直接进入 vi 编辑模式,添加定时任务,下边图片意为:每隔一分钟执行  hello.sh

可以通过 tail  -f  /var/log/cron  查看log

 

一个简单的shell脚本写完了 但是运行后只能执行一次,接下来说一下计划任务

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

通常  crontab  都是自带的,如果没有可以 yum 安装

yum install  vixie-cron

yum install  crontabs

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

安装完以后开启crontab服务

systemctl   start  crond

service crond start

**

我使用的是CentOS7.2.1  老版本和新版本命令不一样,老版本是:

service  crond  start

命令错误会报:Redirecting to /bin/systemctl start  crond.service

**

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

systemctl  start  crond    //启动服务

systemctl  stop  crond    //关闭服务

systemctl  restart  crond    //重启服务

systemctl  reload  crond    //重新载入配置

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

查看crontab服务是否已设置为开机启动,执行命令:systemctl is-enabled crond

关闭开机自启动  systemctl   disable  crond

让服务开机启动  systemctl   enable  crond.service 

 

设置需要执行的脚本 

新增调度任务可用两种方法: 
1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。 
2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。 
crontab -e配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务 
查看调度任务 
crontab -l //列出当前的所有调度任务 
crontab -l -u jp //列出用户jp的所有调度任务 
删除任务调度工作 
crontab -r //删除所有任务调度工作 (慎用,他会删除所有的计划任务)
直接编辑 vim /etc/crontab ,默认的文件形式如下:

 

前四行是有关设置cron任务运行的环境变量。

SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),

PATH变量定义了执行命令的路径。Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。

如果MAILTO变量定义为空字符串(MAILTO=""),电子邮件不会被发送。执行命令或脚本时HOME变量可用来设置基目录。

 

文件/etc/crontab中每行任务的描述格式如下: 

 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或 执行自定义脚本的命令)

 

查看所有crontab任务:

以root用户执行,cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}

 

 


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值