欢迎来到cool的博客
7

Music box

Click to Start

点击头像播放音乐
新博客链接

Linux/Mac Crontab 定时任务

https://wxnacy.com/2018/01/15/linux-crontab/

Linux 中使用 crontab 来定时执行命令或指定脚本。

Hello World

先什么都不要说,跟我一起 Hello World
首先修改 ~/.bash_profile

1
export EDITOR=vim

 

然后执行 source ~/.bash_profile 使配置生效
随后新建一个定时任务

1
$ crontab -e

 

将下面的文字复制进去

1
* * * * * /bin/echo Hello World `date`\n >> ~/output

 

1
crontab: installing new crontab

这代表你已经创建一个定时任务,它的作用是,每分钟在 ~/output 文件中添加一行带有时间标记的字符串 Hello World,如下

1
2
3
4
5
Hello World Sun Jan 14 20:14:01 CST 2018n
Hello World Sun Jan 14 20:15:01 CST 2018n
Hello World Sun Jan 14 20:16:01 CST 2018n
Hello World Sun Jan 14 20:17:01 CST 2018n
Hello World Sun Jan 14 20:18:01 CST 2018n

 

你使用 tail -f ~/output 命令就可以每隔一分钟看到一行输出。

使用说明

不管你有没有成功的实现刚才的效果,现在来跟我一起看看刚才就做了些什么吧

  • crontab -e crontab 执行定时任务,需要配置任务列表,这条命令就是在编辑任务
  • export DEITOR=vim 是为了指定编辑任务时,使用的编辑器,现在绝大多数 Linux 都是用 Vim
    编辑生成的任务文件在目录 /var/spoot/cron 中(这是 CentOS 系统,如果是 Ubuntu 则是在 /var/spoot/cron/crontabs 目录中)有一个用户名命名的文件,比如 root ,剩下的操作刚才已经有所介绍,还有一些常用命令

    查看任务列表

    1
    
    $ crontab -l
    
1
* * * * * /bin/echo Hello World `date`\n >> ~/output

删除任务

1
$ crontab -r

这样刚才生成的文件就会被删除掉

第二种方法

如果你不像文件生成在这个目录中,也可以做如下操作

1
2
3
4
5
$ vim ~/roottab         # 手动生成一个配置文件

* * * * * /bin/echo Hello World `date`\n >> ~/output

$ crontab ~/roottab     # 启动定时任务,并制定该文件

 

配置文件格式

下面来详细说说 crontab 文件格式

1
2
3
4
5
6
7
* * * * * /bin/echo Hello World `date`\n >> ~/output
|-|-|-|-|-|- 分钟 0 ~ 59
  |-|-|-|-|- 小时 0 ~ 23
    |-|-|-|- 日   1 ~ 31
      |-|-|- 月   1 ~ 12
        |-|- 周   0 ~ 7
          |- 需要执行的命令

 

更多使用实例

1
2
3
4
5
6
7
8
9
10
# 每分钟执行一次
* * * * * /bin/echo Hello World `date`\n >> ~/output
# 每小时执行一次
* */1 * * * /bin/echo Hello World `date`\n >> ~/output
# 每小时的第3和第15分钟执行
3,15 * * * * /bin/echo Hello World `date`\n >> ~/output
# 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * /bin/echo Hello World `date`\n >> ~/output
# 每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 /bin/echo Hello World `date`\n >> ~/output

服务状态

Ubuntu

1
2
# 启动、重启,停止、重载、运行状态
$ service cron start|restart|stop|reload|status

 

CentOS < 7

1
2
3
4
5
6
# 启动、重启,停止、重载、运行状态
$ service crond start|restart|stop|reload|status

$ chkconfig sshd on     # 开机自启sshd
$ chkconfig sshd off    # 开机关闭自启sshd
$ chkconfig --list sshd # 查看每个运行级别类型中服务的当前状态

 

CentOS >= 7

1
2
3
4
5
6
7
$ systemctl enable crond.service     # 开机自启crond
$ systemctl disable crond.service    # 开机关闭自启crond
$ systemctl start crond.service      # 启动crond
$ systemctl restart crond.service    # 重启
$ systemctl stop crond.service       # 停止
$ systemctl reload crond.service     # 重新加载
$ systemctl status crond.service     # 查看启动状态

返回列表