Linux下添加计划任务,Linux系统下使用crontab添加计划任务的方法



在服务器中添加定期执行的任务,在很多情况下是非常必要的。比如,每天清理一次/tmp目录下的文件;没几分钟检查某一守护进程是否正常等等。这样计划任务就显得尤为方便。下面将介绍如何在Linux系统中添加计划任务。

一、什么是Crontab

简而言之,Crontab提供了允许给定的任务以一定的间隔在后台运行的机制。需要注意的是,并不是所有的系统都支持Crontab,需要和系统管理员联系,但是至少大部分应该是支持的。

二、Crontab如何工作

一个Cron计划就是一个文本文件,系统以及每一个用户都有他们自己的Cron计划。

对于用户的Cron计划,都会存放到/var/spool/cron/crontabs目录中,但是系统不允许用户直接对该文件进行修改,而是必须通过以下命令修改:

crontab -e

使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。

有的系统可以允许用户选择使用哪种文本编辑器对该文件进行修改,也有的只允许默认使用vi编辑器。

cron计划文件中的每一行只可能是以下三种中的任意一种:注释(以#开头)、空行和任务。

每一条计划任务至少包含六个部分,每一个部分之间以一个(必须是一个,不多不少)空格隔开,但是最后一个部分中允许包含空格。

前五个部分规定了该任务运行的时间。

需要注意的是,这个时间是采用了系统时间,而不是太平洋标准时间。

每一个部分的意义如下:

field allowed values

----- --------------

minute 0-59

hour 0-23

day of month 1-31

month 1-12 (or names, see below)

day of week 0-7 (0 or 7 is Sun, or use names)

前五个部分的语法参考下边的例子,最后一个部分时间到达的时候要执行的命令。

crontab的用户手册中推荐每一个命令使用绝对路径,例如调用rm命令时写作:/bin/rm,这是为了防止由于每一个用户的PATH环境变量不同而导致命令无法找到的错误。

三、一些例子

(1) 手册中的例子

# 在每天的00:05AM执行

5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1

# 在每月1日的02:15PM执行

15 14 1 * * $HOME/bin/monthly

# 在工作日(周一到周五)的10:00PM执行

0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%

# 在0-23小时区间内,每两小时执行一次,即0点,2点,...,22点,在这些时间之后的23分钟执行

23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"

# 每周日的04:05AM执行

5 4 * * sun echo "run at 5 after 4 every sunday"

# 在每个月的第二个周六的04:00AM执行

0 4 8-15 * 6 test $(date +u) -eq 6 && echo "2nd Saturday"

(2) 预定义任务的前五个部分可以由以下左边字符串代替,右边为其解释:

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 * * * *".

四、系统的Cron计划

系 统的Cron计划文件存放在/etc/crontab路径下。与用户的crontab文件不同,root用户可以直接对该文件进行修改,而不用使用 crontab -e命令。除此之外,系统crontab文件中任务的定义也有所不同,在前五个部分之后插入了一个“用户”部分。以下是我的/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 )

#

五、使设置生效

设置完成后,重启cron即可使设置的计划任务定时执行了,重启命令如下:

service crond restart

Linux系统下不同机器之间拷贝文件的方法

在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/administrator/news.txt root@192.168.6.129:/etc/squid ...

Linux系统下对NFS服务安全加固的方法

NFS(Network File System)是 FreeBSD 支持的一种文件系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源.不正确的配置和使用 NFS,会带来安全问题. 概述 N ...

Linux系统中为php添加pcntl扩展的方法

1.首先看下 phpize命令 所在的目录  (ps:我的目录/usr/bin/phpize)如果没有找到的话 执行安装yum install php53_devel (ps:请注意自己的版本) 安装 ...

Linux系统下python代码运行shell命令的方法

方法一:os.popen #!/usr/bin/python # -*- coding: UTF-8 -*- import os, sys # 使用 mkdir 命令 a = 'ls' b = os. ...

Linux系统下实现远程连接MySQL数据库的方法教程

1.在服务器端开启远程访问首先进入mysql数据库,然后输入下面两个命令: grant all privileges on *.* to 'root'@'%' identified by 'passw ...

Linux系统下修改环境变量PATH路径的三种方法

这里介绍Linux的知识,比如把/etc/apache/bin目录添加到PATH中有三种方法,看完之后你将学会Linux系统下如何修改环境变量PATH路径,需要的朋友可以参考下 电脑中必不可少的就是操 ...

Linux系统下如何运行.sh文件

在Linux系统下运行.sh文件有两种方法,比如我在root目录下有个datelog.sh文件 第一种(这种办法需要用chmod使得文件具备执行条件(x): chmod u+x datelog.sh) ...

在Linux系统下制作系统启动盘(Ubuntu Linux)

在Linux系统下制作系统启动盘有两种方法: 1.用dd命令 2.用Linux自带的图形界面工具 Startup Disk Creator 本教程使用第2种方式,用Linux自带的图形界面工具制作系统 ...

LINUX系统下添加映射存储LUN

LINUX系统下添加映射存储LUN(无需重启) 背景:Oracle rac环境 添加新实例,重新划分存储空间,从存储映射新的LUN. 问题:映射后,linux操作系统无法识别新的LUN,不能重启系统, ...

随机推荐

Spring——jar包详解(转)

Spring——jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spr ...

Ueditor文本编辑器(新浪SAE平台版本) - 下载频道 - CSDN.NET

Ueditor文本编辑器(新浪SAE平台版本) - 下载频道 - CSDN.NET Ueditor文本编辑器(新浪SAE平台版本)

开通域名绑定DDNS

一.初衷 我想要有一个自己的域名,然后有自己的server,在server上搭一个网站或者开通一个ftp服务,我想通过这个域名来访问它. 二.什么是DDNS DDNS 动态dns,电信宽带采用拨号联网 ...

C#打印

public partial class Form1 : Form { PrintDocument printDocument; StringReader lineReader = null; pub ...

mysql超出最大连接数解决方法

遇到mysql超出最大连接数,相信不少人第一反应就是查看mysql进程,看有没有慢查询,当然这个做法是完全正确的!但是很多时候真正的问题不在这里.今天有遇到同样的问题,一味查看mysql进程和慢查询日 ...

如何设置body高度为浏览器高度

html{height:100%} body{min-height:100%} 有时我们的页面上内容不多,但设计师要求背景色必须铺满全屏,这时候只需在样式表中加上这行,body就以浏览器的高度显示,超 ...

舵机&数据处理&stm32内存之堆栈溢出(遇到的问题)

产品名称:TOWER PRO(辉盛)大扭力舵机MG996R (MG995升级产品)6v/11Kg厂家编号:MG996R产品净重: 55g产品尺寸: 40.7*19.7*42.9mm产品拉力: 9.4k ...

Yahoo Programming Contest 2019 补题记录(DEF)

D - Ears 题目链接:D - Ears 大意:你在一个\(0-L\)的数轴上行走,从整数格出发,在整数格结束,可以在整数格转弯.每当你经过坐标为\(i-0.5\)的位置时(\(i\)是整数),在 ...

Springboot项目使用aop切面保存详细日志到ELK日志平台

上一篇讲过了将Springboot项目中logback日志插入到ELK日志平台,它只是个示例.这一篇来看一下实际使用中,我们应该怎样通过aop切面,拦截所有请求日志插入到ELK日志系统.同时,由于往往 ...

SEO之基于thinkphp的URL伪静态

最近基于thinkphp开发了个导购网站,现在有时间,将遇到的伪静态问题整理下,与大家分享.1.设置URL伪静态在config.ini.php中设置,如果只想前台URL伪静态,那么只在前台的confi ...