当前位置:  操作系统/服务器>linux

使用linux命令crontab间隔时间执行其它命令

    来源: 互联网  发布时间:2014-08-25

    本文导语:  1.1 /etc/crontab 文件 在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。 如: 代码如下:[root@dave ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-par...

1.1 /etc/crontab 文件

在/etc目录下有一个crontab文件,这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。

如:

代码如下:

[root@dave ~]# cat /etc/crontab

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



1.2 /etc/cron.deny 和 /etc/cron.allow 文件
代码如下:

/etc/cron.deny 表示不能使用crontab 命令的用户

/etc/cron.allow 表示能使用crontab的用户。



如果两个文件同时存在,那么/etc/cron.allow 优先。如果两个文件都不存在,那么只有超级用户可以安排作业。

每个用户都会生成一个自己的crontab 文件。这些文件在/var/spool/cron目录下,如:

代码如下:

[root@dave ~]# cd /var/spool/cron

[root@dave cron]# ls

oracle  root



我们直接查看这个文件,里面的内容和对应用户显示的crontab -l 一致。
代码如下:

[root@dave cron]# cat oracle

00 6 * * * /u02/scripts/del_st_archive.sh >/u02/scripts/del_st_arch.log 2>&1

[root@dave cron]# cat root

0 12 * * * /root/bin/sync-clock.sh

[root@dave cron]#



二.  Crontab 使用说明

2.1  Crontab语法

代码如下:

usage:  crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

 -e      (edit user's crontab)

 -l      (list user's crontab)

 -r      (delete user's crontab)

 -i      (prompt before deleting user's crontab)

 -s      (selinux context)

其中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。

帮助:

代码如下:

[root@dave ~]# man crontab

CRONTAB(1)  CRONTAB(1)

NAME

crontab - maintain crontab files for individual users (ISC Cron V4.1)

SYNOPSIS

crontab [-u user] file

crontab [-u user] [-l | -r | -e] [-i] [-s]

OPTIONS

-u     It  specifies  the name of the user whose crontab is to be tweaked.  If this  option is not given, crontab examines "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.

-l     The current crontab will be displayed on standard output.

-r     The current crontab will be be removed.

-e     This  option  is used to edit the current crontab using the editor specified by the VISUAL or EDITOR environment variables.  After you exit from the edi-tor, the modified crontab will be installed automatically.

-i     This  option  modifies the -r option to prompt the user for a ¡¯y/Y¡¯ response before actually removing the crontab.

-s     It will append the current SELinux security context string as  an  MLS_LEVEL setting  to  the  crontab file before editing / replacement occurs - see the documentation of MLS_LEVEL in crontab(5).


代码如下:

SEE ALSO

crontab(5), cron(8)

FILES

/etc/cron.allow

/etc/cron.deny

STANDARDS

The crontab command conforms to IEEE Std1003.2-1992 (¡®¡®POSIX¡¯¡¯).  This new  command syntax  differs  from  previous versions of Vixie Cron, as well as from the classic

SVR3 syntax.

DIAGNOSTICS

A fairly informative usage message appears if you run it with a bad command line.

AUTHOR

Paul Vixie

4th Berkeley Distribution16 Januar 2007 CRONTAB(1)

2.2  Crontab 格式说明

我们可以用crontab -e 添加要执行的命令。 命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。

添加的命令必须以如下格式:

* * * * * /command path
前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。

前5个字段分别表示:

分钟:0-59

小时:1-23

日期:1-31

月份:1-12

星期:0-6(0表示周日)

还可以用一些特殊符号:

*: 表示任何时刻

,: 表示分割

-:表示一个段,如第二端里: 1-5,就表示1到5点

/n : 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.


一些示例:

代码如下:

00 8,12,16 * * * /data/app/scripts/monitor/df.sh

30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh

10 8,12,16 * * * /data/app/scripts/monitor/check_ind_unusable.sh

10 8,12,16 * * * /data/app/scripts/monitor/check_maxfilesize.sh

10 8,12,16 * * * /data/app/scripts/monitor/check_objectsize.sh



代码如下:

43 21 * * * 21:43 执行

15 05 * * *    05:15 执行

0 17 * * * 17:00 执行

2.3  & 后台执行命令

当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。

如:

代码如下:

30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh &


在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。

不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:

如:

代码如下:

command >out.file 2>&1 &

在这个例子中,2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。

2.4  2>&1 含义

先看一个例子:

代码如下:

0 2 * * * /u01/test.sh >/dev/null 2>&1 &


这句话的意思就是在后台执行这条命令,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null 文件,也就是清空。

在这里有有几个数字的意思:

0表示键盘输入

1表示标准输出

2表示错误输出.


我们也可以这样写:

代码如下:

0 2 * * * /u01/test.sh  >/u01/out.file &  --这里没写,默认是1

0 2 * * * /u01/test.sh  1>/u01/out.file &

0 2 * * * /u01/test.sh  2>/u01/out.file &

0 2 * * * /u01/test.sh  2>/u01/out.file  2>&1 &

将tesh.sh 命令输出重定向到out.file, 即输出内容不打印到屏幕上,而是输出到out.file文件中。

2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件out.file。

&1 表示的是文件描述1,表示标准输出,如果这里少了&就成了数字1,就表示重定向到文件1。

& :后台执行

测试:

代码如下:

ls 2>1 : 不会报没有2文件的错误,但会输出一个空的文件1;

ls xxx 2>1: 没有xxx这个文件的错误输出到了1中;

ls xxx 2>&1: 不会生成1这个文件了,不过错误跑到标准输出了;

ls xxx >out.txt 2>&1 == ls xxx 1>out.txt 2>&1;  因为重定向符号>默认是1,这句就把错误输出和标准输出都传到out.txt 文件中。



2.5  2>&1写在后面的原因

格式:command > file 2>&1   == command  1> file 2>&1

首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。

如果改成: command 2>&1 >file

2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。


    
 
 

您可能感兴趣的文章:

  • c/c++预处理命令预#,##使用介绍
  • 使用ps命令,如何使用系统命令根据进程名称获取进程和子进程的ID?除了ps,还有其它系统命令的办法吗?谢谢。
  • linux下free命令显示的内存使用情况分析
  • 在Linux下使用ftp命令,被提示命令没有找到
  • linux下不使用sudo命令执行docker的操作步骤
  • 怎样在命令行使用ftp命令?
  • linux下objdump命令用法介绍及如何使用objdump命令进行反汇编
  • linux命令行下使用curl命令查看自己机器的外网ip
  • linux/Centos/ubuntu下如何使用umask命令修改新建文件时的默认权限
  • tar命令的-r和--delete子命令该如何使用啊?
  • linux下top命令详解包括top命令参数使用及结果(virt,res,shr)排序举例说明
  • 在LINUX中使用C调用系统命令,怎么取得系统命令的输出?
  • linux top命令详解以及top命令的各项使用技巧详细说明
  • 在windows的命令提示符下使用linux的命令,听说安装一个软件即可?在线等。立刻给分
  • mongoDB 2.6.5下载,安装及mongoDB基本使用命令介绍
  • 请教:使用system(命令)或者exec(命令)启动一个进程执行命令,如何判断这个命令是否启动成功或正在运行?
  • mongoDB 3.2.9 官方下载、安装及mongoDB基本使用命令详细介绍
  • 性能测试中应该用top命令统计cpu使用情况还是ps命令?
  • ftp协议介绍及ftp常用的上传下载等操作命令使用方法
  • 请问在unix下,如何察看以前使用者的使用命令
  • mongodb 数据库常用命令使用实例
  • 我初学NETTERM的使用,在哪里可以找到所有(或常用的)命令的使用方法呢?还是需要在什么书上可以找到?
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • SUSE10下,如何使用perl语言执行一条语句:从一台机器telnet到远端另一台机器,在远端机器上执行命令,并能获取到执行结果。请高手指点,Very 谢谢~
  • 关于在QT环境下加载gif图片的问题(可以显示,但是只有使用终端启动可执行文件才能显示,双击执行却不显示)这是为什么?
  • 如何使用crontab来定时执行一个.php的程序
  • 使用Statement.java里的execute执行存储过程问题
  • 关于如何使用shell自动执行一个sybase的存储过程
  • 使用终端远程执行程序的问题!
  • 使用java执行定时任务示例
  • 为什么socket程序使用gdb调试执行就接受不到数据了呢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问使用crontab是否必须设置环境变量?
  • crontab使用
  • crontab 使用疑问
  • 在Linux使用crontab设置自动执行备份脚本问题?
  • crontab 無權限使用問題?
  • 这条在AIX系统下使用crontab的命令是否正确?
  • crontab使用问题?
  • crontab 无法使用,root用户
  • 使用crontab导表出现的问题
  • ubuntu中的crontab不能使用
  • 命令:crontab的使用,请问……
  • Crontab自启动tomcat之后tomcat下的应用无法正常使用
  • Solaris系统中使用crontab命令问题
  • crontab的一个使用问题,急!!!!!!!!!!!!!!!!!
  • at 和crontab命令如何使用
  • crontab中使用ssh的问题
  • 使用Crontab出现的一个问题
  • CRONTAB中关于对安装软件的使用权限问题
  • linux下使用crontab实现定时PHP计划任务失败的原因分析
  • 一进进程在使用crontab中报少了库:libclntsh.so.9.0
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Python不使用print而直接输出二进制字符串
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • Office 2010 Module模式下使用VBA Addressof
  • c#中SAPI使用总结——SpVoice的使用方法
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3