一、定时任务概念

为什么要使用Crond定时任务?

例如:我们数据库或者程序需要每天晚上0点做一次全备,定时同步时间服务器等等

Linux系统定时任务软件的种类:

at   适合仅执行一次就结束的调度命令,可以被crontab取代,

crontab   可以周期性的执行任务,需要开启crond服务 在生产工作中最常用到的命令

anacron   主要用于非7*24小时开机的服务器,

提示:crond服务,crontab命令是生产工作中重要的命令应用,其他的很少使用,可以忽略

重点学习crondtab定时任务

二、安装crond服务

yum -y update

yum -y install cronie yum-cron

三、定时任务使用

指令语法:

usage:  crontab [-u user] file

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

(default operation is replace, per 1003.2)

-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)

参数

含义

指定示例

-l

查看crontab文件内容,提示:l为list的缩写

crontab -l

-e

编辑crontab文件内容,提示:e可为edit 的缩写

crontab -e

-i

删除crontab文件内容,删除前会提示确认,用得少

crontab -ri

-r

删除crontab文件内容。用得很少

crontab -r

-u

指定使用的用户执行任务

crontab -u boy -l

特别强调:-I –r参数在生产中很少用,没什么需求必须要用-e进去编辑即可

补充:crontab {-l|-e}实际上就是在操作/var/spool/cron/当前用户这样的文件

通过crontab可以在固定的时间执行指定的系统指令,时间单位可以是分钟、小时、日、月、周以及以上的任意组合,(日和周不要组合)

crond是一个服务,crontab是一个命令

crond服务通过crontab命令可以很容易的实现周期性的日志分析或数据备份等运维场景工作。

使用者权限及定时任务文件

文件

说明

/etc/cron.deny

该文件中所列用户不允许使用crontab命令

/etc/cron.allow

该文件中所列用户允许使用crontab命令,优先于/etc/cron.deny

/var/spool/cron/

所有用户crontab配置文件默认都存放在此目录,文件名以用户名命名


crontab -l  查看当前用户定时任务

调用/var/spool/cron/目录下相关用户的定时任务信息

[root@localhost log]# cat /var/log/cron  查看定时任务日志

Crontab定时任务的书写格式

用户的定时任务一般分为6段(每段空格分隔,系统的定时任务则/etc/crontab分为7段),前五段为时间的设定段,第六段为所要执行的命令或脚本任务段

基本格式如下:

01 * * * * cmd

02 4 * * * cmd

22 4 * * 0 cmd

42 4 1 * * cmd

提示:

1.cmd为要执行的命令或脚本,如/bin/sh    /server/scripts/dingjian.sh

2.每个段之间必须要有空格

含义

取值范围

第一段

代表分钟

00-59

第二段

代表小时

00-23

第三段

代表日期

01-31

第四段

代表月份

01-12

第五段

代表时期

0-7(0和7都代表是星期日)

提示:时间记忆口决:分时日月周

Crontab语法格式中特殊符号含义如表:

特殊符号

含义

*

*号,表示任意时间都,也是”每”的意思,举例:如00 23 * * *cmd表示每月每周每日的23:00都执行cmd任务

-

减号,表示分隔符,表示一个时间段范围段,如17-19点,每小时的00分执行任务,00 17-19 * * * cmd 。就是17,18,19点整点分别执行的意思

,

逗号,表示分隔时段的意思,30 17,18,19 * * * /bin.sh /scripts/dingjian.sh表示每天17,18和19点的半点时刻执行/scripts/dingjian.sh脚本。也可以和”-”结合使用,如:30 3-5,17-19 * * * /scripts/dingjian.sh

/n

N代表数字,即”每隔n单位时间”,如:每10分钟执行一次任务可以写成

*/10 * * * * cmd,其中“*/10”的范围是0-59,因此也可以写成0-59/10


cron服务是Linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:

/sbin/service crond start
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload
/sbin/service crond status

查看crond.service的启动状态

stemctl status crond.service

开启crond.service服务命令

systemctl start crond.service

停止crond.service服务命令

systemctl stop crond.service

把cron服务加入linux开机自启动:

[root@localhost ~]# systemctl enable crond.service

[root@localhost ~]# systemctl is-enabled crond.service
enabled

ps -ef |grep crond|grep -v grep      #crond后台的工作情况并过滤出来

[root@dingjian ~]# ps -ef |grep crond|grep -v grep

root      1091     1  0 Nov19 ?        00:00:17 crond

查看当前用户的crontab,输入 crontab -l;

编辑crontab,输入  crontab -e;

清空定时任务crontab,输入 crontab -r

四、定时任务范例

范例1:每5分钟同步一次系统时间

echo '#time sync by mrxiong at 2018-3-10'>/var/spool/cron/root

echo '*/5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1' >>/var/spool/cron/root

或者 crontab –e 然后把

#time sync by mrxiong at 2018-3-10

*/5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

加入到里面保存退出

五、应用场景定时任务应用范例

例1:每分钟打印一次自己的名字拼音全拼到”/server/log/自己的名字命名的文件”中。

解答:

方法1:crontab -e   输入以下内容

#pring a name by mrxiong

* * * * * echo "mrxiong" >>/service/log/mrxiong

保存退出

[root@localhost ~]# tail -f /service/log/mrxiong

mrxiong

用tail -f 命令跟踪文件内容

方法2:

* * * * * echo "huanweixiong-->>  $(date +\%F" "\%T)" >>/service/log/dingjian

提示:在任务中,%前面一定要加转义\

如果不用转义,可以用另一种方法:

用脚本的方式:

[root@localhost scripts]# echo "echo 'blog.dingjian.me -->> $(date +%F" "%T)'>>/server/log/dingjian.log" >echo.sh

[root@localhost scripts]# cat echo.sh

echo 'blog.dingjian.me -->>2018-1-30 19:30:33'>>/server/log/dingjian.log

[root@localhost scripts]# sh echo.sh

[root@localhost scripts]# cat /server/log/dingjian.log

blog.dingjian.me -->> 2018-1-30 19:28:38

blog.dingjian.me -->> 2018-1-30 19:28:53

blog.dingjian.me -->> 2018-1-30 19:28:53

blog.dingjian.me -->> 2018-1-30 19:30:33

/var/log/cron  定时任务的日志目录


例2:每周六、日上午9:00和下午14:00执行mrxiong.sh(/server/script/mrxiong.sh)

答案:

#cron job for ett by mrxiong 2018-12-12

00 9,14 * * 6,0 /server/script/mrxiong.sh >/dev/null 2>&1


例3:每隔1分钟,打印一个+号到dingjian.log,请给出crontab完整命令。

解答:

生成脚本:

[root@localhost scripts]# echo '#!/bin/sh' >>./echo.sh

[root@localhost scripts]# echo 'echo + >>/tmp/dingjian.log' >>./echo.sh

[root@localhost scripts]# cat echo.sh

#!/bin/sh

echo + >>/tmp/dingjian.log

测试配置好的脚本:

[root@localhost scripts]# sh echo.sh

[root@localhost scripts]# sh echo.sh

[root@localhost scripts]# sh echo.sh

[root@localhost scripts]# cat /tmp/dingjian.log

+

+

+

+

配置定时任务:

[root@localhost scripts]# echo '#print a "+" to /tmp/dingjian.log by dingjian 2018-11-28' >>/var/spool/cron/root

[root@localhost scripts]# echo '*/1 * * * * /bin/sh /server/scripts/echo.sh >/dev/null 2>&1' >>/var/spool/cron/root

[root@localhost scripts]# crontab -l      #查看定时任务例表

#print a "+" to /tmp/dingjian.log by dingjian 2018-11-28

*/1 * * * * /bin/sh /server/scripts/echo.sh >/dev/null 2>&1

查看定时任务结果 :

[root@localhost scripts]# cat /tmp/dingjian.log

+

+

[root@localhost scripts]# watch cat /tmp/dingjian.log

提示:watch    默认每两分钟查看后面的命令

如:  watch cat /tmp/dingjian.log   查看文件

watch ls -l /tmp            查看目录


范例2:每隔2个小时,将/etc/services文件打包备份到/tmp下(最好每次备份成不同的备份包)

答:

#生成脚本:

[root@localhost ~]# cd /server/scripts/

[root@localhost scripts]# ll

total 4

-rw-r--r--. 1 root root 66 Nov 26 21:26 tar.sh

[root@localhost scripts]# vi tar.sh

在脚本中加入:

cd /etc/

tar zcf /tmp/service_$(date +%Y%m%d%H%M).tar.gz ./services

[root@localhost scripts]# rm /tmp/* -rf

#测试脚本能不能运行

[root@localhost scripts]# sh tar.sh

[root@localhost scripts]# ls -l /tmp

total 128

-rw-r--r--. 1 root root 127319 Nov 27 00:29 service_2018112700.tar.gz

#配置定时任务:

[root@localhost scripts]# crontab -e

把以下内容加入:

####注释

00 */2 * * * /bin/sh /server/scripts/tar.sh >/dev/null 2>&1

保存退出

提示:所以一般建议打包某一文件,  要到这个文件的上一层目录打包,不要从根目录打包,不然一解压会把根覆盖了 如:打包/etc/services.就进到/etc/目录来打包services,

[root@dingjian scripts]# sh tar.sh&  加个&表示在后台运行这个脚本


范例3:每天晚上12点,打包站点目录/var/www/html备份到/data目录下(最好每次备份按时间生成不同的备份包)

解答:

[root@localhost scripts]# mkdir /var/www/html -p     #创建测试环境

[root@localhost scripts]# mkdir /data

[root@localhost scripts]# date +%F       #命令测试

2018-11-27

[root@localhost scripts]# cd /var/www/

[root@localhost www]# tar zcf /data/data_$(date +%F).tar.gz ./html  #注意打包要到要复制的

[root@localhost www]# ls -l /data          文件的上一层目录打包

total 4

-rw-r--r--. 1 root root 111 Nov 27 01:13 data_2018-11-27.tar.gz

[root@localhost www]# cd /server/scripts/      #将测试号的脚本放入到脚本测试

[root@localhost scripts]# rm /data/* -rf

[root@localhost scripts]# ls /data

[root@localhost scripts]# vi tarhtml.sh           #创建脚本

cd /var/www/

tar zcf /data/data_$(date +%F).tar.gz ./html

[root@localhost scripts]# sh /server/scripts/tarhtml.sh     #执行全路径测试脚本

[root@localhost scripts]# ls /data

data_2018-11-27.tar.gz

[root@localhost scripts]# crontab -e           #编辑定时任务,注意规范书写

#tar /var/www/html everyday by dingjian 2018-11-27

00 00 * * * /bin/sh /server/scripts/tarhtml.sh >/dev/null 2>&1

[root@localhost scripts]# crontab -l            #查看编辑的结果

#tar /var/www/html everyday by dingjian 2018-11-27

00 00 * * * /bin/sh /server/scripts/tarhtml.sh >/dev/null 2>&1

特殊的调试


六、生产场景如何调试crontab定时任务

1.增加执行频率调试任务

调试时,把任务执行频率调快一点,如:每分钟、每5分钟执行一次,或者比当前时间推迟5分钟以后,看能否执行,如果正常没问题了,再改成需要的任务的执行时间。

强调:有些任务是不允许频繁执行的,如:定时往数据库里插入数据,这样的任务就要在测试机上测试好,然后正式线上出问题的机会就少了。

规范的公司开发和运维人员的操作流程:个人的开发配置环境--à办公室的测试环境-àidc机房的测试环境-àidc机房的正式环境

 

2. 调整系统时间调试任务

用正确的执行任务的时间,设置完成后,可以修改下系统当前时间,改成任务执行时间的前五分钟来测试(或者重启定时任务服务)。如:定时任务9:00执行,我们可以把系统时间改成8:55分,然后观察是不是正确执行。如果是生产环境服务器不要这样处理,测试环境可以使用这个手段

3.通过日志输出调试定时任务

在脚本中加入日志输入,然后把输出到指定的日志中,然后观察日志内容结果,看是否执行或正确执行,或把脚本结果定向到一个log文件里,重定向〉即可,不要用>>追加,这样晶习就不会一直变大

如:定时任务中加输出

#study task by dingjian at 20181129

00 9,4 * * 6,0 /bin/sh /server/scripts/dingjian.sh >/tmp/log.log 2>&1

脚本中加输出

[root@dingjian scripts]# cat tar.sh

#!/bin/sh

cd /

tar zcvf /tmp/etc_$(date +%Y%m%d%H).tar.gz ./etc >/tmp/tmp.log 2>&1

4.注意一些任务命令带来的问题

*/ 1 * * * * echo “==” >>/tmp/dingjian.log >/dev/null 2>&1 这是隐蔽的无法正确执行的任务配置,原因是前面多了个>> , 或者去掉结尾的>/dev/null 2>&1

强调:此问题是因为前面己有了重定向,后面要去掉>/dev/null 2>&1

5. 在调试java程序任务的时候,注意环境变量,把环境变量的定义加到脚本里。

例:

#!/bin/sh

export JAVA_HOME=/application/jdk1.6

export PATH=$JAVA_HOME/bin:$PATH

export SH_HOME=/application/resin/webapps/ROOT/

export LIB=$SH_HOME/WEB-INF/lib

..省略部分...

定时任务

00 9,14 * * * nohup /scripts/resin/shell/Task.sh & >/app/log.log 2>&1

6.通过定时任务日志调试定时任务

查看定时任务服务日志

[root@localhost scripts]# tail -f /var/log/cron

Nov 29 01:39:01 dingjian CROND[8557]: (root) CMD (/bin/sh /server/scripts/echo.sh >/dev/null 2>&1)

Nov 29 01:40:01 dingjian CROND[8566]: (root) CMD (echo "==" >>/tmp/dingjian1.log >/dev/null 2>&1)

Nov 29 01:40:01 dingjian CROND[8567]: (root) CMD (/usr/lib64/sa/sa1 1 1)

Nov 29 01:40:01 dingjian CROND[8568]: (root) CMD (/bin/sh /server/scripts/echo.sh >/dev/null 2>&1)

七、Crontab生产问题案例及解决过程

No space left on device故障

面试题:维护的时候,创建文件提示”No space left on device”,请问你这是什么故障:

解答:磁盘空间block满了或者inode被占满了

故障描述及说明:

某年某月甘日某时,某人在工作中设置crontab定时任务规则保存时,提示” No space left on device”,此时用df -h检查磁盘,发现还有剩余空间,用df -I 检查则显示/var目录己占用100%的inode数量,看来是inode数量耗尽,导致系统无法在/var目录下创建文件,因为定时任务的配置在/var/spool/cron下,ext3文件系统中,每个文件需要占一个inode,

No space left on device 故障解决办法:

最后经过检查发现在/var/spool/clientmqueue/下有超多的文件,执行ls /var/spool/clientmqueue命令查看,很长时间没能显示出结果,执行cd /var/spool/clientmqueue;rm –f *会自动跳出来,也是无法删除,最后只能通过xargs命令来配合解决,清理实际命令为:cd /var/spool/clientmqueue&&ls|xargs rm –f

在清理时,如果数量特别多的时候,执行ls|xargs rm –f 命令也会长时间无反应,那是命令在处理中,当然我们也可以使用更快的删除方法,如直接使用cd /var/spool&&rm –rf clientmqueue,删除上级目录,然后执行

mkdir clientmqueue&&chmod 770 clientmqueue&&chown smmsp.smmsp -R /var/spool/clientmqueue

修改回/var/spool/clientmqueue目录在系统中的原来默认权限

[root@localhost scripts]# ls -ld /var/spool/clientmqueue/

drwxrwx---. 2 smmsp smmsp 4096 Nov 26 15:41 /var/spool/clientmqueue/

故障原因分析:

当系统中crond定时任务执行程序有输出内容时,输出内容会以邮件形式发给crond的用户(默认是root),而sendmail等mail服务没有启动时,这些输出内容以为支在邮件队列临时目录,产生这些碎文件,导致消耗inode数量,一旦inode数量耗尽,就会导致系统无法写入文件,而报上述错误:No space left on device.

亡羊补牢解决方法:

1) 尽量将crontab里面的命令或脚本中的命令结尾加上>/dev/null 2>&1,或在做定时执行脚本时,把屏幕输出定向到指定文件里

2) 当然也可以开启邮件服务,不过最好不做,因为邮件服务会带来安全问题

3) 优化系统,加定时清理任务,如find /var/spool/clientmqueue/ -type f -mtime +30|xargs rm -f

八、Crontab定时任务生产应用问题8箴言

1.export变量问题

crontab执行shell时只能识别为数不多的系统环境变量,一般用户定义的普通变量是无法识别的,如果在编写的脚本中需要使用这些变量,最好使用export重新声明下该变量,脚本才能正常执行,如:生产 情况和java相关的服务任务和脚本

2.任务路径问题:

Crontab执行shell时,一定要用绝对路径

3. 脚本权限问题

要确保crontab的执行者有访问shell脚本所在目录并且执行此shell脚本的权限(可用chmod和chown修改脚本权限和所有者)。当然,最佳方法是执行脚本前加/bin/sh执行测试下,在配置任务执行脚本时,可以省略当前用户配置,但最好带上/bin/sh.否则有可能因为忘了为脚本设定执行权限,而无法完成任务

范例:

* * * * * /server/scripts/tar.sh    #此时如果tar.sh没有可执行权限,就无法执行了

要在带上/bin/sh

* * * * * /bin/sh /server/scripts/tar.sh

4.时间变量问题

%号在crontab任务中被认为是newline.需要用\来转义,crontab任务命令中,如果有”dat+%Y%m%d”,必须替换为: ”dat+\%Y\%m\%d”,但写脚本中就不需要了,

范例:

#tar commend by dingjian at 2013-11

*/1 * * * * /cd /etc/&&tar zcvf /tmp/service_$(date +\%Y\%m\%d\%H\%M).tar.gz ./services

脚本实现方法:

配置脚本:

echo 'cd /etc/&&tar zcvf /tmp/service_$(date +%Y%m%d%H%M).tar.gz ./services'>./tar.sh

配置定时任务

[root@localhost scripts]# echo '#tar /etc/services by dingjian at 2018-11-29' >>/var/spool/cron/root

[root@localhost scripts]# echo '*/1 * * * * /bin/sh /server/scripts/tar.sh >/dev/null 2>&1' >>/var/spool/cron/root

[root@localhostscripts]# crontab -l

#tar /etc/services by dingjian at 2013-11-29

*/1 * * * * /bin/sh /server/scripts/tar.sh >/dev/null 2>&1

5.>/dev/nul 2>&1 问题

当定时任务在你所指定的时间执行后,系统会寄一封信给你,显示该程式执行的内容,若系统未开启邮件服务就会导致邮件临时目录/var/spool/clientmqueue碎文件逐渐增多,以至于大量消耗inode数量,其实可以在每一行任务结尾空一行之后加上>/dev/nul 2>&1将输出定向为空来规避这个问题

如果需要打印日志输出,也可以追加到指定的日志文件里,尽量不要留空。如果任务本身是命令的话,添加>/dev/nul 2>&1时要慎重,需多测试并且有检查手段。如:*/1 * * * *echo”==”>> /tmp/dingjian.log >/dev/nul 2>&1,该任务规则就是无法执行的。

说明:/dev/null为特殊设备,表示黑洞设备或空设备。2>&1表示让标准错误或标准输出一样都定向到空设备,本命令内容就是把脚本的输出重定向到/dev/null,即不记录任务输出,也不给充管理员发邮件

6.定时任务加注释

加必要注释,英文注释: 如:什么人,什么时间,因为谁,做了什么事

如:#cron job for ett by dingjian 2018-12-12

00 9,14 * * 6,0 /bin/sh /server/script/dingjian.sh >/dev/null 2>&1

7.使用脚本程序替代命令

使用脚本执行任务可以让我们少范错误,提升效率、规范定时任务中执行命令,定时任务中执行命令有一些限制,如时间变量问题,多个重定向命令混用问题等

8.避免不必要的程序输出

在开发定时任务程序或脚本时,在调试好脚本程序后,应尽量把DEBUG及命令输出的内容信息屏蔽掉,如果不需要,可以定向到指定日志文件里,以免产生多余的系统垃圾

如:平时打包喜欢tar zcvf 这个-v参数就是查看打包信息的,做成定时任务就不要输出了。

范例:

*/1 * * * * cd /etc/&&tar zcvf /tmp/service.tar.gz ./services  这里的v参数就不必要的

九、crond export变量问题生产案例

范例:

我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在

crontab里配置了如下内容

50 17 * * * 1-5 root /usr/local/bin/resin_restart.sh

其中,resin_restart.sh内容如下:

#!/bin/sh

/usr/local/bin/xxresin_stop.sh

/usr/local/bin/xxresin_start.sh

问题来了,服务器虽然定时起来了,但是却报如下错误:

Resin can`t load com.sun.tools.javac.Main. Usually this means that the JDK tools.jar is missing from the classpath

Possibly because of using a JRE instead of the JDK.

You can either add tools, jar to the classpath or change the compiler to an external one with <java compiler=’javac’/> or jikes.

但是,明明己在profile里配置了环境变量,为啥还找不到呢,

故障解决:

由于export变量问题导致:具体为,crontab 执行shell时只能识别为数不多的系统环境 变量,

普通环境变量一般是无法识别的,如果在编写的脚本中需要使用变量,最好使用export重新声时下该变量

然后在resin重启脚本里重新定义了下环境变量,脚本如下:

#!/bin/sh

JAVA_HOME=”/opt/jdk1.6.0_18”

CLASSPATH=$JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar

PATH=$JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar;/opt/nginx-0.7.61/sbin;/jdk1.6.0_18/bin;/opt/resin-3.0.25/bin;$PATH

export JAVA_HOME PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC CLASSPATH

/usr/local/bin/xxresin_stop.sh

/usr/local/bin/xxresin_start.sh

十、定时任务的7个要领

1. 加必要注释,英文注释: 如:什么人,什么时间,因为谁,做了什么事

如:#cron job for ett by dingjian 2018-12-12

00 9,14 * * 6,0 /bin/sh /server/script/dingjian.sh >/dev/null 2>&1

2.执行shell脚本任务前加/bin/sh

执行定时任务时,如果是执行脚本,在脚本前面带上/bin/sh命令   否则可能因忘了为脚本设定执行权限X,从而无法完成任务,所以凡是脚本任务,都要在前面加上/bin/sh

如:#cron job for ett by dingjian 2018-12-12

00 9,14 * * 6,0 /bin/sh /server/script/dingjian.sh >/dev/null 2>&1

不管s.sh有没有x权限,都可以执行脚本文件

 

3. 需要root权限执行的任务可以登陆到root用户下然后设置,如果不需要root权限,可以登陆到普通用户下(也可以直接在root下crontab -u oldboy -e 的写法直接设置),然后设置。这里要特别注意不同用户的环境变量问题,如果是调用了系统环境变量/etc/profile(如生产场    景中java程序的定时任务),最好在程序脚本中将用到的环境变量重新export下

平时工作中尽量多用crontab -e 和crontab -l 去编辑和查看定时任务,因为会有语法检查

如果给1000台服务器同时添加系统时间同步,可以使用分发工具或者批量运维脚本(脚本内容就是echo”脚本任务规则”>>/var/spool/cron/root)

4. 定时任务结尾加>/dev/null 2>&1 如果追加指定日志文件里,就不要和/dev/null同时存在

/dev/null  定符设备,黑洞设备       2>&1指定是标准错误和标准输出一样  整个意思是把脚本的正常和错误输出都重定向到/dev/null.即不记录任何输出

如果定时任务结尾不加>/dev/null 2>&1  很容易导致硬盘inode空间被占满,从而系统服务不正常

5.生产任务程序不要随意打印输出信息,

如:打包时去掉-v 不必要的输出就不要输出,如果一定要输出,也可以指定日志文件

[root@localhost /]# tar zcf etc.tar.gz /etc >&/dev/null       #输出到黑洞设备

[root@localhost /]# tar zcvf etc.tar.gz /etc >&/tmp/tar.log   #输出指定日志文件

6.定时任务命令或程序最好写到脚本里执行

如:* * * * * echo "huanweixiong-->>  $(date +\%F" "\%T)" >>/service/log/huangweixiong

提示:在任务中,%前面一定要加转义\

如果不用转义,可以用另一种方法:

用脚本的方式:

[root@localhost ~]# mkdir /server/scripts -p

[root@localhost ~]# cd /server/scripts/

[root@localhost scripts]# vi echo.sh

输入: echo "mrxiong-->>  $(date +%F" "%T)" >>/service/log/mrxiong.log

[root@localhost scripts]# crontab –e

加入

#pring a name by mrxiong

* * * * * /bin/sh /server/scripts/echo.sh >/dev/null 2>&1

7.定时任务路径要用绝对路径,绝对路径就是从根开始的完整路径,当然也要确保路径对应的目录要存在才行,日志文件可以不存在

转载于:https://blog.51cto.com/mrxiong2017/2084803

CentOS7定时任务配置与使用相关推荐

  1. centos7 安装配置mesos+marathon+zookeeper

    2019独角兽企业重金招聘Python工程师标准>>> 1,mesos介绍 Mesos诞生于UC Berkeley的一个研究项目,现已成为Apache Incubator中的项目.M ...

  2. CentOS7 定时任务

    在计算机的使用过程中,经常会有一些计划中的任务需要在将来的某个时间执行,linux中提供了一些方法来设定定时任务. 1.at 命令at从文件或标准输入中读取命令并在将来的一个时间执行,只执行一次.at ...

  3. centos7 systemctl配置开机自启动服务

    centos7 systemctl配置开机自启动服务 centos7使用systemctl替代原来/etc/init.d,按官方的说法是提高系统服务的运行效率.服务配置更加简单易用,对于一些自定义的服 ...

  4. VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装

    VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装 在阿里云开源镜像地址下载镜像 Index of /centos/7.2.1511/isos/x86_64/ http://mi ...

  5. 开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube6.4

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 上一章讲述了如何配置使用源代码管理工具SVN并使之与Apache集成,从而实现代码的变更可追溯,虽然在大多数团队里强 ...

  6. 日常工作问题解决:centos7下配置网卡以及查询网卡UUID

    日常工作问题解决:centos7下配置网卡以及查询网卡UUID 参考文章: (1)日常工作问题解决:centos7下配置网卡以及查询网卡UUID (2)https://www.cnblogs.com/ ...

  7. @scheduled注解配置时间_探究 Spring 的定时任务配置

    作者 | 郭朝兴 责编 | Elle 最近在项目开发中进行了一些Spring定时任务的开发工作,在开发过程中对Spring定时任务的配置方式进行了一些研究,现在对各种配置方式进行一个总结.Schedu ...

  8. 在CentOS7上配置Open vSwitch和VXLAN

    在CentOS7上配置Open vSwitch和VXLAN 环境 实验环境 主机环境 [yuwh@node0 ~]$ uname -a Linux node0 3.10.0-123.9.3.el7.x ...

  9. 检查CentOS7定时任务是否启用并执行过

    1 监控cron状态 service crontab status #如果没有开启执行 service crontab start 正常开启的状态 2 检查执行日志,过滤自己配置的定时任务脚本关键字 ...

最新文章

  1. linux下用户的添加
  2. sql server 2005 express附加数据库出错解决方法——添加数据库用户
  3. 计算机办公软件技能大赛试题,第七届计算机技能大赛办公软件操作比赛顺利举行...
  4. kaggle机器学习作业(房价预测)
  5. 28,29_激活函数与GPU加速、Tanh和sigmoid、ReLU、Leaky ReLU、SELU、Softplus、GPU accelerated、案例、argmax
  6. [Android]安装 Android Studio 第一行Android代码
  7. Modularity(模块化-AMD规范)
  8. 想赚钱,赚大钱,必须要有商业思维
  9. 微软已停止对Vista RTM(SP0)的服务支持
  10. ❀❀ 名词解释(PM、PD、UE、UI、RD....)
  11. 软件安装 gcc编译器
  12. 遥感图像预处理-大气校正
  13. x264码率控制参数详解
  14. win10卸载软件_WIN10系统如何关闭/卸载自带杀毒软件
  15. K8S实战进阶篇:一文带你深入了解K8S持久化存储解决方案
  16. 重磅消息集中来袭 A股再现“独立行情”?
  17. 生成扩散模型漫谈:DDIM = 高观点DDPM
  18. iOS开发之Moya网络请求使用与封装
  19. windows11账户登录不上去怎么办?
  20. ACM算法训练【贪心合集】

热门文章

  1. 【狂神说Java】Git最新教程通俗易懂
  2. 这本书能让你减肥/戒烟/工作脱困/摆脱债务/重掌生活
  3. QuickJS 快速入门 (QuickJS QuickStart)
  4. 【信息奥赛题解】流感传染(详细题解 C++代码)
  5. 我推荐亲戚家小孩学编程,差点被打一顿!
  6. 《程序员练习生》第2期 什么年龄开始编程最好
  7. c++ const 总结
  8. 创建新数据源:缺少Microsoft Access Driver(×.mdb)的解决办法
  9. 慕的2021阅读数据分析报告
  10. 内网穿透-NPS使用教程(SOCKS5代理)