`

HowTo: Add Jobs To cron Under Linux or UNIX?

 
阅读更多

Crontab command

crontab is the command used to install, deinstall or list the tables (cron configuration file) used to drive the cron(8) daemon in Vixie Cron. Each user can have their own crontab file, and though these are files in /var/spool/cron/crontabs, they are not intended to be edited directly. You need to use crontab command for editing or setting up your own cron jobs.

 

Types of cron configuration files

There are different types of configuration files:

  • The UNIX / Linux system crontab : Usually, used by system services and critical jobs that requires root like privileges. The sixth field (see below for field description) is the name of a user for the command to run as. This gives the system crontab the ability to run commands as any user.
  • The user crontabs: User can install their own cron jobs using the crontab command. The sixth field is the command to run, and all commands run as the user who created the crontab

How Do I install or create or edit my own cron jobs?

To edit your crontab file, type the following command at the UNIX / Linux shell prompt:

$ crontab -e

Syntax of crontab (field description)

The syntax is:

1 2 3 4 5 /path/to/command arg1 arg2
or
1 2 3 4 5 /root/backup.sh

 Where,

  • 1: Minute (0-59)
  • 2: Hours (0-23)
  • 3: Day (0-31)
  • 4: Month (0-12 [12 == December])
  • 5: Day of the week(0-7 [7 or 0 == sunday])
  • /path/to/command - Script or command name to schedule
  • Easy to remember format:
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

 

Example: Run backup cron job script

f you wished to have a script named /root/backup.sh run every day at 3am, your crontab entry would look like as follows. First, install your cronjob by running the following command:

crontab -e

 Append the following entry:

0 3 * * * /root/backup.sh

 Save and close the file.

 

More examples

To run /path/to/command five minutes after midnight, every day, enter:

 

5 0 * * * /path/to/command

 Run /path/to/script.sh at 2:15pm on the first of every month, enter:

 

15 14 1 * * /path/to/script.sh

 Run /scripts/phpscript.php at 10 pm on weekdays, enter:

0 22 * * 1-5 /scripts/phpscript.php

 Run /root/scripts/perl/perlscript.pl at 23 minutes after midnight, 2am, 4am ..., everyday, enter:

23 0-23/2 * * * /root/scripts/perl/perlscript.pl

 

How do I use operators?

An operator allows you to specifying multiple values in a field. There are three operators:

  • The asterisk (*: This operator specifies all possible values for a field. For example, an asterisk in the hour time field would be equivalent to every hour or an asterisk in the month field would be equivalent to every month.
  • The comma (,) : This operator specifies a list of values, for example: "1,5,10,15,20, 25".
  • The dash (-) : This operator specifies a range of values, for example: "5-15" days , which is equivalent to typing "5,6,7,8,9,....,13,14,15" using the comma operator.
  • The separator (/) : This operator specifies a step value, for example: "0-23/" can be used in the hours field to specify command execution every other hour. Steps are also permitted after an asterisk, so if you want to say every two hours, just use */2.

How do I disable email output?

By default the output of a command or a script (if any produced), will be email to your local email account. To stop receiving email output from crontab you need to append >/dev/null 2>&1. For example:

 

0 3 * * * /root/backup.sh >/dev/null 2>&1

 To mail output to particular email account let us say vivek@nixcraft.in you need to define MAILTO variable as follows:

MAILTO="vivek@nixcraft.in"
0 3 * * * /root/backup.sh >/dev/null 2>&1

Task: List all your cron jobs

Type the following command:

crontab -l
crontab -u username -l

 To remove or erase all crontab jobs use the following command:

# Delete the current cron jobs #
crontab -r
## Delete job for specific user. Must be run as root user ##
crontab -r -u username

 

Use special string to save time

Instead of the first five fields, you can use any one of eight special strings. It will not just save your time but it will improve readability.

Special string Meaning
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".

Examples

Run ntpdate command every hour:

@hourly /path/to/ntpdate

 Make a backup everyday:

@daily /path/to/backup/script.sh

 

More about /etc/crontab file and /etc/cron.d/* directories

/etc/crontab is system crontabs file. Usually only used by root user or daemons to configure system wide jobs. All individual user must must use crontab command to install and edit their jobs as described above. /var/spool/cron/ or /var/cron/tabs/ is directory for personal user crontab files. It must be backup with users home directory.

Understanding Default /etc/crontab

Typical /etc/crontab file entries:

 

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

 

First, the environment must be defined. If the shell line is omitted, cron will use the default, which is sh. If the PATH variable is omitted, no default will be used and file locations will need to be absolute. If HOME is omitted, cron will use the invoking users home directory.

Additionally, cron reads the files in /etc/cron.d/ directory. Usually system daemon such as sa-update or sysstat places their cronjob here. As a root user or superuser you can use following directories to configure cron jobs. You can directly drop your scripts here. The run-parts command run scripts or programs in a directory via /etc/crontab file:

 

Directory Description
/etc/cron.d/ Put all scripts here and call them from /etc/crontab file.
/etc/cron.daily/ Run all scripts once a day
/etc/cron.hourly/ Run all scripts once an hour
/etc/cron.monthly/ Run all scripts once a month
/etc/cron.weekly/ Run all scripts once a week

How do I use above directories to put my own scripts or jobs?

Here is a sample shell script called clean.cache. This script is created to clean up cached files every 10 days. This script is directly created at /etc/cron.daliy/ directory. In other words create a text file called /etc/cron.daily/clean.cache as follows.

 #!/bin/bash
# A sample shell script to clean cached file from lighttpd web server
CROOT="/tmp/cachelighttpd/"
 
# Clean files every $DAYS
DAYS=10
 
# Web server username and group name
LUSER="lighttpd"
LGROUP="lighttpd"
 
# Okay, let us start cleaning as per $DAYS
/usr/bin/find ${CROOT} -type f -mtime +${DAYS} | xargs -r /bin/rm
 
# Failsafe 
# if directory deleted by some other script just get it back 
if [ ! -d $CROOT ]
then
        /bin/mkdir -p $CROOT
        /bin/chown ${LUSER}:${LGROUP} ${CROOT}
fi

 Save and close the file. Set the permissions:

chmod +x /etc/cron.daily/clean.cache

 

How do I backup installed cron jobs entries?

Simply type the following command to backup your cronjobs to a nas server mounted at /nas01/backup/cron/users.root.bakup directory:

# crontab -l > /nas01/backup/cron/users.root.bakup
# crontab -u userName -l > /nas01/backup/cron/users.userName.bakup

 

 http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/

分享到:
评论

相关推荐

    Linux中的定时任务管理:深入理解和使用cron

    cron是Linux系统中用于定时执行任务的守护进程,它允许用户在指定时间或周期性地执行脚本或命令。本文将详细介绍如何在Linux系统中使用cron来设置和管理定时任务,包括cron的工作原理、配置方法、实际应用以及一些...

    Linux for Beginners: An Introduction to the Linux Operating System

    How to schedule and automate jobs using cron. How to switch users and run processes as others. Where to go for even more in-depth coverage on each topic. What you learn in "Linux for Beginners" ...

    Linux Cron表达式解析

    Linux Cron表达式是一种在Unix和类Unix系统中用于调度任务的机制,它允许用户或系统管理员定义周期性任务的执行时间。Cron表达式由六个或七个由空格分隔的字段组成,每个字段代表一个时间维度:秒、分钟、小时、日期...

    erl-cron:用Erlang编写的Cron实现

    Erlang Cron的实现支持所有标准cron字段(分钟,小时,每月的某天,每月,一周的某天)和符号:*,-/ 在Erlang / OTP 18,Erlang / OTP 19,Erlang / OTP 20上测试; 钢筋/钢筋3。编译$ rebar compileEUnit测试$ ...

    linux 计划任务cron--怎么定时执行的指令

    ### Linux计划任务Cron详解及应用 #### 一、Cron简介 Cron是Linux系统中用于调度周期性任务的守护进程(Daemon),允许用户在固定时间或周期性地执行命令或脚本。通过Cron,用户可以设定复杂的定时任务,如定期...

    精通 LINUX & UNIX Shell 程序设计.pdf 高清下载

    由于提供的内容中仅包含标题、描述、标签和下载链接的重复信息,并没有具体到Linux和UNIX Shell程序设计的技术细节,因此无法直接从这部分内容中提取出符合要求的知识点。为了满足您的要求,我将基于标题和标签中...

    在Unix和Linux操作系统中Cron的用法

    在Unix和Linux操作系统中,Cron是一个非常重要的定时任务调度工具,它允许用户预先设置一系列的时间计划,以便在特定的时间点执行指定的命令或脚本。Cron是系统守护进程,通常在系统启动时自动运行,以确保定时任务...

    基于Purebasic和Java的NLP2Cron:自然语言转换为cron表达式的工具包设计源码

    该工具包名为NLP2Cron,采用Purebasic和Java混合编程语言开发,包含22个文件,其中包括10个Java源文件、2个Markdown文档、2个JSON配置文件、2个Purebasic源文件、1个Git忽略文件、1个许可证文件、1个XML文件、1个...

    lambdacd-cron:您的LambdaCD的cron触发器

    Lambdacd-Cron cron触发器。 地位 用法 在project.clj中添加 :dependencies [[lambdacd-cron " <most> " ]] 将以下代码添加到管道代码的import语句中 ( :require [lambdacd-cron.core :as lambdacd-cron]) 以下...

    Cron-Control:全新运行WordPress的cron系统,允许并行处理

    Cron控制 贡献者:自动的,狂热的标签: cron,cron控制,并发,并行,异步至少需要: 4.4 经过测试: 5.0 需要PHP: 7.0 稳定标签: 2.0 许可证: GPLv2或更高版本许可URI: : 并行执行WordPress cron事件,并...

    LINUX与UNIX+Shell编程指南

    《LINUX与UNIX+Shell编程指南》是一本深入浅出的教程,专为那些希望掌握LINUX和UNIX操作系统以及Shell编程技术的读者设计。在LINUX和UNIX系统中,Shell作为用户与操作系统交互的主要工具,它的强大功能和灵活性使得...

    linux and unix shell

    9. **包管理和软件安装**:在Linux中,`apt`或`yum`用于安装软件包,而在Unix中,可能使用`pkg_add`或`portinstall`。 10. **其他高级功能**:如`find`查找文件,`cron`设置定时任务,`ssh`进行远程登录等。 通过...

    cron4s:Scala的跨平台CRON表达式解析

    CRON是Unix/Linux系统中广泛使用的定时任务调度工具,通过特定的语法来定义周期性的任务。cron4s库使得在Scala环境下,无论是JVM还是Scala.js平台上,都能轻松地处理这些表达式。 ### 1. CRON表达式详解 CRON表达式...

    cron-parser:cron解析器

    cron解析器 具有时区支持的cron表达式解析库。 例子: use chrono::{TimeZone, Utc};use chrono_tz::Europe::Lisbon;use cron_parser::parse;fn main() { if let Ok(next) = parse("*/5 * * * *", &Utc::now()) { ...

    howto:我制作的各种HowTo文档的垃圾场

    howto:我制作的各种HowTo文档的垃圾场

    LINUX与UNIX SHELL编程指南.TXT

    在IT领域,Linux和Unix操作系统以其稳定性和强大的命令行接口而闻名,而Shell则是它们的命令解释器,同时也是强大的编程工具。"LINUX与UNIX SHELL编程指南"这本书旨在教授读者如何有效地利用Shell进行编程和系统管理...

    LINUX与UNIX SHELL编程指南(很全)

    3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 ...

    cron-descriptor:一个将cron表达式转换为人类可读字符串的Python库

    Cron描述符 掌握: 全部: 一个将cron表达式转换为人类可读字符串的Python库。 从移植到Python。 作者:亚当·舒伯特(Adam Schubert)( ) 原始作者和信誉:Brady Holt( ) 执照: 特征 支持所有cron表达式...

    Cron表达式Html源码

    Cron表达式是一种广泛用于计划任务调度的工具,它源于Unix系统,现在也被许多其他操作系统和编程语言支持,包括Java、Python、Node.js等。这种表达式定义了一种时间格式,用于描述周期性的任务执行时间。 Cron...

    WinForm Cron表达式生成器

    WinForm Cron表达式生成器 Quartz.Net Cron表达式生成器winform版  最近使用Quartz.net做了几个同步任务,感觉非常好。表达式设置也是非常灵活,但是新入手发现对表达式不熟,每次都要使用在线生成器。  于是写...

Global site tag (gtag.js) - Google Analytics