Ubuntu 设置定时crontab任务

crontab属于常见的自动化运维命令

安装及运行

apt-get install cron
service cron start #启动cron服务
service cron status #查看cron服务状态
cron start/running, process 8876

使用cron的帮助信息

man crontab #详述了crontab的语法
 
CRONTAB(1)                                                                      General Commands Manual                                                                      CRONTAB(1)
NAME
       crontab - maintain crontab files for individual users (Vixie Cron)
SYNOPSIS
       crontab [ -u user ] file
       crontab [ -u user ] [ -i ] { -e | -l | -r }
DESCRIPTION
       crontab is the program used to install, deinstall or list the tables used to drive the cron(8) daemon in Vixie Cron.  Each user can have their own crontab, and though these are
       files in /var/spool/cron/crontabs, they are not intended to be edited directly.
       If the /etc/cron.allow file exists, then you must be listed (one user per line) therein in order to be allowed to use this command.  If the /etc/cron.allow file does not  exist
       but the /etc/cron.deny file does exist, then you must not be listed in the /etc/cron.deny file in order to use this command.
       If  neither of these files exists, then depending on site-dependent configuration parameters, only the super user will be allowed to use this command, or all users will be able
       to use this command.
       If both files exist then /etc/cron.allow takes precedence. Which means that /etc/cron.deny is not considered and your user must be listed in /etc/cron.allow in order to be able
       to use the crontab.
       Regardless  of the existance of any of these files, the root administrative user is always allowed to setup a crontab.  For standard Debian systems, all users may use this com‐
       mand.
       If the -u option is given, it specifies the name of the user whose crontab is to be used (when listing) or modified (when editing). If this option is not given,  crontab  exam‐
       ines  "your"  crontab, i.e., the crontab of the person executing the command.  Note that su(8) can confuse crontab and that if you are running inside of su(8) you should always
       use the -u option for safety‘s sake.
       The first form of this command is used to install a new crontab from some named file or standard input if the pseudo-filename ``-‘‘ is given.
       The -l option causes the current crontab to be displayed on standard output. See the note under DEBIAN SPECIFIC below.
       The -r option causes the current crontab to be removed.
       The -e option is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables.  After  you  exit  from  the  editor,  the  modified
       crontab will be installed automatically. If neither of the environment variables is defined, then the default editor /usr/bin/editor is used.
       The -i option modifies the -r option to prompt the user for a ‘y/Y‘ response before actually removing the crontab.
DEBIAN SPECIFIC
       The  "out-of-the-box"  behaviour for crontab -l is to display the three line "DO NOT EDIT THIS FILE" header that is placed at the beginning of the crontab when it is installed.
       The problem is that it makes the sequence
       crontab -l | crontab -
       non-idempotent -- you keep adding copies of the header. This causes pain to scripts that use sed to edit a crontab. Therefore, the default behaviour of the -l option  has  been

用法解析

crontab [ -u user ] file #加载crontab任务时加载file文件,如果不指定文件则接受键入的命令
crontab [ -u user ] [ -i ] { -e | -l | -r }
crontab -l #显示系统cron任务
crontab -l -u username #显示用户username的cron任务
crontab -e #编辑当前用户的cron任务
crontab -e -u root #编辑root用户cron任务
crontab -r #删除当前用户cron任务
crontab -r -u username #删除用户username全部cron任务
crontab -ir #删除全部cron任务且无需确认

添加crontab任务

建议直接添加系统级cron任务以避免不同用户导致的不执行的bug

编辑cron文件

sudo vi /etc/crontab #开始编辑
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don‘t have to run the `crontab‘
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
0  2    * * *   root    find /home/svnuser/csvn/data/dumps/ -type f -mtime +7 -exec rm -f {} \;
#delete overtime old dump.zip by xxxx 2016-9-22 10:53:29

在末尾注释上一行添加cron任务

# m h dom mon dow user  command
0  2    * * *   root    find /home/svnuser/csvn/data/dumps/ -type f -mtime +7 -exec rm -f {} \;

解析:在每天的凌晨2点0分,以root权限删除svn备份中的超过7天的zip文件,手动很麻烦,cron很适合

# m h dom mon dow user  command
  | |  |   |   |   |       |--所需执行的命令
  | |  |   |   |   |--对应执行命令的用户,比如root/username
  | |  |   |   |--星期0~7,可以多选,比如1,4-表示周一及周四,周日0/7同义,,*表示每周
  | |  |   |--月份1~12,*表示每月
  | |  |--日起1~31,*表示每日
  | |--小时1~23,0表示0点
  |--分钟1~59,*或者*/1表示每分钟

配置完成后保存,重启cron服务

sudo service cron restart

查看cron任务

sudo crontab -l #此时不会显示系统级cron任务,只显示用户级,请参考crontab -e命令设置

ps:部分情况下,cron在执行任务时需要环境变量,此时需要在运行命令之前先运行环境变量。

2016-9-22

时间: 2024-11-05 21:56:42

Ubuntu 设置定时crontab任务的相关文章

ubuntu 下使用crontab定时执行java程序

题记 之前使用solr进行全文检索,涉及到检索更新问题,这里采用定时更新方法,现在使用的系统为ubuntu,因此考虑crontab. 解决思路 一.准备工具 打包java程序jar 安装crontab 二.编写crontab 脚本 过程 一.工具准备 1,制作jar包,可以通过java jar命令,也可以通过eclipse工具. 2.安装crontab ubuntu上安装比较方便: sudo apt-get install crontab 二.编写crontab脚本 1.认识crontab Cr

linux设置定时任务crontab

linux设置定时任务crontab 前段时间参照一个博友的git设置了mongoDB的定时备份,后来发现并未成功,今天重新配置了一下,把crontab的两种设置方式都尝试了,而且测试可以正常工作. 测试机器 ubuntu14.04 1.(推荐方式)用户级别的定时任务设置 使用如下命令 crontab -e 添加一条测试脚本: #*/1 * * * * sh ~/Desktop/myshare/cronjob.sh#每隔一分钟执行桌面文件夹中的这个脚本 然后,更新crontab service

Ubuntu 下关于crontab的使用详解

如果碰到了需要在指定的时间运行php脚本的情况,比如定时进行网站的数据统计.自动执行数据库备份任务.定时发送email等等. 如果我们不使用Cron来执行php脚本,或许我们会采用php include的方法. 比如在index.php 中添加代码:<?php include "crontab.php"?> 当访客通过浏览器访问http://xxxx/index.php的时候,自动执行了crontab.php. 当然这只是一种思路,这种方法并不能指定时间定时运行PHP脚本,

buff/cache内存缓存过大,设置定时清理

buff/cache内存缓存过大,设置定时清理 buff/cache居然占用内存达到10个G的内存,解决方法:1.编写脚本 vim cleanCache.sh 编写内容如下: echo 1 > /proc/sys/vm/drop_caches ehco 2 > /proc/sys/vm/drop_caches ehco 3 > /proc/sys/vm/drop_caches 2.给脚本添加执行权限chmod 777 cleanCache.sh3.配置定时执行脚本crontab -e (

ubuntu 设置ssh 登陆

今天老板过来与我商量实验室买小型服务器的事情.老板咨询了华科的一个老师之后对买小型服务器有点犹豫.我和老板都没接触过小型服务器,而且据说服务器对散热和湿度都有要求,我们实验室本来空间就很紧张,确实没有太大的地方安置新来的服务器了. 老板担心我一个人搞不定服务器的维护,我自己心里也没有主意.后来我去咨询了院里面其他做生物信息学分析的实验室,好像他们也不是很在行.楼上付老师实验室的同学告诉我,他们用一个性能和配置好一点的主机代替了.我自己现在用的这台电脑是老板自己配的.老板自己对电脑挺在行的,这台电

MacBook设置定时关机

Mac定时关机.重启.休眠命令行 - 有梦想的蜗牛 - 博客频道 - CSDN.NET http://blog.csdn.net/showhilllee/article/details/44067275 苹果mac电脑系统如何设置定时自动关机_百度经验 http://jingyan.baidu.com/article/da1091fb364982027849d6ab.html

Ubuntu 设置简单密码,复杂度太高

Ubuntu 中创建的用户密码复杂度很高,如果想设置1234 ,或者与账户名相同的密码时,SystemSetting 中是不可以设置的. 可以通过简单的命令来设置 其中 anyongfei 是账户名 sudo passwd anyongfei Ubuntu 设置简单密码,复杂度太高,布布扣,bubuko.com

ubuntu设置固定ip

设定IP $sudo gedit /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.0.111 netmask 255.255.255.0 gateway 192.168.0.1 保存,并关闭gedit. 这样,IP并没有立即生效.需要执行 $sudo /etc/init.d/networking restart这时候就能ping到局域网中

Ubuntu 设置固定ip,NetWork-Manager不能保存固定ip解决办法

Ubuntu 设置固定ip,NetWork-Manager不能保存固定ip解决办法 如题: 使用windows时间过长,形成审美疲劳啊,但是郁闷的是windows个性化能力也太弱了点吧 而ubuntu真是完美的替代方案.. 由于个人笔记本无线网卡出现问题,学校使用有线又必须固定ip,但是使用图形界面(Network-manager)设置固定ip(manual)的时候,底下的save按钮为灰色,倒置一直不能设置固定ip,但是百度或者google设置固定ip,几乎100%的都是要求从命令行修改/et