Linux中crontab-定时任务命令

关于任务定时的命令crontab,在Linux中应用还算常见,这次为了配合开发完成一些辅助功能,以及一些备份更新等脚本,就需要crontab来完成,在windows下也就是一个批处理,linux只是多了一些命令而已。先来看看crontab的介绍:

crontab命令常见于Unix类Unix操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,每个领域可以放置单一或多个数值。

在Ubuntu中,crontab的命令如下:

-e 表示编辑当前的crontab

-l  表示列表显示当前的crontab任务

-r  表示删除当前用户的crontab

-i  表示删除crontab时给予提示信息

注意,user's crontab这个表示是每个用户都有自己的crontab,所以如果需要全局执行,必须定制root用户的crontab,非全局的,就根据各个用户自己的crontab来执行,在执行编辑crontab操作时,我们需要设置编辑工具,否则默认是crontab的编辑,对于习惯vi编辑的用户,我们需要在用户目录下设置.profile配置文件,如root的配置文件.prifile,就如下目录:

带.的文件都是隐藏文件,所以需要ls -a才能列出来,vi .profile在文件中加入如下配置:

EDITOR=vi; export EDITOR

表示,当前root用户以vi作为默认编辑器,此时直接使用crontab -e,可以进行编辑任务列表,如下所示:

上面以#号开头的表示是注释说明的信息,红色标记的是任务列表。

对于crontab的任务配置说明;

分钟 小时 日 月 星期 命令

*    *    *  *  *    *

这样就一目了然了,我们红色标记的表示的意义是每天3点钟执行脚本run.sh,并将执行日志自动输出到log.log文件中。

*/1 * * * * root  /opt/bin/test-cron.sh //表示每隔一分钟执行一次脚本

注:crontab任务是被定制在系统后台运行的cron进程,所以用户书无法查看到cron的进程状态的。设置开机启动cron进程,命令如下:

chkconfig --add crond,把它加入到系统的服务列表中。

当然,crontab命令用多了,会越来越喜欢它的,因为它能简化我们日常的很多工作,特别是数据库备份、检测服务器运行状态等一些经常做的工作,都可以根据你的需求来定制,在合理的时间运行执行合适的工作任务,既不影响服务器的性能,又可以节约平时的工作时间,大大提高功能效率。

补充:最近两天发现crontab定时任务中的一个脚本没有执行,其他脚本是可以正常执行的,花了一点时间调试,发现了一些问题,还是记录下来,便于以后翻阅。这个脚本在命令行执行是ok的,但刚在crontab中发现是执行不成功的,后来通过一系列验证,发现原来是路径的问题,crontab中当然是要用绝对路径的,所以,crontab中要执行的脚本也必然要使用绝对路径,原来我们的运行脚本中有一个Java类使用的是相对路径,所以导致脚本没有执行,但日志文件却创建了,所以很快可以定位是脚本执行没有成功,把路径修改成绝对路径,发现执行后,java类把路径当作包名来识别,所以最后就只能在shell脚本前面加上目录切换命令,如cd /root/...的,这样脚本执行就都可以识别到目录了,而且不管在哪儿执行,它都是绝对的路径,可以找到并运行成功。修改crontab之后,记得执行/etc/init.d/cron restart重启cron服务。。。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏艾斯博客www.vpsss.net

解决 WordPress “Briefly unavailable for scheduled maintenance”维护故障

16050
来自专栏大闲人柴毛毛

Linux软件安装(二)——RPM与YUM

Linux软件管理程序 上一篇文章介绍了使用源码编译的方式安装Linux软件,虽然操作比较简单,但仍有如下不足之处: 1. 源码需要经过编译成二进制文件后...

44160
来自专栏Bug生活2048

Spring Boot学习笔记(二)Windows下IDEA 配置Maven

maven指向本地仓库配置,打开D:\ProgramFile\Maven\apache-maven-3.5.2\conf下的settings.xml,设置本地仓...

14520
来自专栏刺客博客

利用aria2本地版本高速下载百度云

3.8K30
来自专栏IT可乐

Maven详解(七)------ 创建Web工程以及插件原理

1、什么是 Maven 插件?   上一篇博客我们讲了 Maven 的生命周期,我们知道 Maven 的核心是生命周期,生命周期指定了 Maven 命令执行的流...

28070
来自专栏Linux运维学习之路

LNMP架构之搭建wordpress博客网站

系统环境版本 [root@db02 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@...

52080
来自专栏Jerry的SAP技术分享

sap.ui.require in SAP UI5 and require in nodejs

例如我需要在controller的onShowHello里通过MessageToast弹一个消息显示在UI上,

39350
来自专栏深度学习之tensorflow实战篇

python django 学习(一)数据库 目的根据已有BBS建立新的网站步骤

1.创建一个django程序(pycharm下创建界面) ? 2.django创建的默认文件说明 manage.py:一个命令行工具,用于与Dj...

37460
来自专栏云计算教程系列

如何在Debian 9上安装MongoDB

Debian 9的官方软件包存储库包含稍微过时的MongoDB版本,这意味着我们将从官方的MongoDB repo安装。

1.3K30
来自专栏信安之路

Linux基线加固

主机安全的风险级别除了漏洞,另一个重要的参考值是安全基线的风险分值,本次介绍的主要是结合目前公司的业务实际情况制作的一份安全基线脚本,供大家进行参考。

51300

扫码关注云+社区

领取腾讯云代金券