热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CentOS7定时任务配置与使用

为什么要使用Crond定时任务?例如:我们数据库或者程序需要每天晚上0点做一次全备,定

一、定时任务概念

为什么要使用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文件内容,提示:llist的缩写

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(07都代表是星期日)

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

 

 

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,1819点的半点时刻执行/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


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

[root@localhost ~]# systemctl enabled 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/自己的名字命名的文件中。

解答:

方法1crontab -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),而sendmailmail服务没有启动时,这些输出内容以为支在邮件队列临时目录,产生这些碎文件,导致消耗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脚本的权限(可用chmodchown修改脚本权限和所有者)。当然,最佳方法是执行脚本前加/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 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权限,可以登陆到普通用户下(也可以直接在rootcrontab -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@dingjian scripts]# crontab –e

加入

#pring a name by mrxiong

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

 

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

 



CentOS7定时任务配置与使用


推荐阅读
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 本文详细介绍了DMA控制器如何通过映射表处理来自外设的请求,包括映射表的设计和实现方法。 ... [详细]
  • 本文详细介绍了如何利用Duilib界面库开发窗体动画效果,包括基本思路和技术细节。这些方法不仅适用于Duilib,还可以扩展到其他类似的界面开发工具。 ... [详细]
  • Spark中使用map或flatMap将DataSet[A]转换为DataSet[B]时Schema变为Binary的问题及解决方案
    本文探讨了在使用Spark的map或flatMap算子将一个数据集转换为另一个数据集时,遇到的Schema变为Binary的问题,并提供了详细的解决方案。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • 解决 Windows Server 2016 网络连接问题
    本文详细介绍了如何解决 Windows Server 2016 在使用无线网络 (WLAN) 和有线网络 (以太网) 时遇到的连接问题。包括添加必要的功能和安装正确的驱动程序。 ... [详细]
  • 使用Jsoup解析并遍历HTML文档时,该库能够高效地生成一个清晰、规范的解析树,即使源HTML文档存在格式问题。Jsoup具备强大的容错能力,能够处理多种异常情况,如未闭合的标签等,确保解析结果的准确性和完整性。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 在 LeetCode 的“有效回文串 II”问题中,给定一个非空字符串 `s`,允许删除最多一个字符。本篇深入解析了如何判断删除一个字符后,字符串是否能成为回文串,并提出了高效的优化算法。通过详细的分析和代码实现,本文提供了多种解决方案,帮助读者更好地理解和应用这一算法。 ... [详细]
  • 系统数据实体验证异常:多个实体验证失败的错误处理与分析
    在使用MVC和EF框架进行数据保存时,遇到了 `System.Data.Entity.Validation.DbEntityValidationException` 错误,表明存在一个或多个实体验证失败的情况。本文详细分析了该错误的成因,并提出了有效的处理方法,包括检查实体属性的约束条件、调试日志的使用以及优化数据验证逻辑,以确保数据的一致性和完整性。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 装饰者模式(Decorator):一种灵活的对象结构设计模式
    装饰者模式(Decorator)是一种灵活的对象结构设计模式,旨在为单个对象动态地添加功能,而无需修改原有类的结构。通过封装对象并提供额外的行为,装饰者模式比传统的继承方式更加灵活和可扩展。例如,可以在运行时为特定对象添加边框或滚动条等特性,而不会影响其他对象。这种模式特别适用于需要在不同情况下动态组合功能的场景。 ... [详细]
  • 本项目通过Python编程实现了一个简单的汇率转换器v1.02。主要内容包括:1. Python的基本语法元素:(1)缩进:用于表示代码的层次结构,是Python中定义程序框架的唯一方式;(2)注释:提供开发者说明信息,不参与实际运行,通常每个代码块添加一个注释;(3)常量和变量:用于存储和操作数据,是程序执行过程中的重要组成部分。此外,项目还涉及了函数定义、用户输入处理和异常捕获等高级特性,以确保程序的健壮性和易用性。 ... [详细]
author-avatar
wugege
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有