每天一个linux命令(50):crontab命令

飞来科技  发布时间:2019-08-08 17:12:20

本文关键词:重启crontab 进程

crontab 服务重启_重启crontab 进程_crontab 重启服务

因为能够添加、侵权或编辑crontab文件中的词条,而EDITOR环境变量又增设为vi,所以就可以用vi来编辑crontab文件,相应的指示为:

$crontab-e

可以像使用vi编辑其他任何文档那样修改crontab文件并退出。如果修改了这些条目或添加了新的词条,所以在保留该文档时,cron会对其进行必要的完整性检查。如果其中的某个域出现了超乎允许范围的值,它会提示你。

我们在编辑crontab文件时,没准会加入新的词条。例如,加入上面的一条:

#DT:deletecorefiles,at3.30amon1,7,14,21,26,26daysofeachmonth

3031,7,14,21,26**/bin/find-name"core'-execrm{}\;

现在保留并退出。最好在crontab文件的每一个条目之上加入一条注释,这种就可以明白它的系统、运行时间,更为重要的是,明白这是哪位用户的作业。

现在让我们使用后面讲过的crontab-l命令列出它的全部资料:

$crontab-l

#(crondaveinstalledonTueMay413:07:431999)

#DT:echthedatetotheconsoleevery30minites

,15,30,4518-06***/bin/echo`date`>/dev/tty1

#DT:deletecorefiles,at3.30amon1,7,14,21,26,26daysofeachmonth

3031,7,14,21,26**/bin/find-name"core'-execrm{}\;

4).删除crontab文件

要删除crontab文件,可以用:

$crontab-r

5).恢复丢失的crontab文件

因为不谨慎误删了crontab文件,假设你在自己的$HOME目录下还有一个备份,所以可以将其拷贝到/var/spool/cron/<username>,其中<username>是用户名。如果由于权限问题无法完成拷贝,可以用:

重启crontab 进程_crontab 服务重启_crontab 重启服务

$crontab<filename>

其中,<filename>是你在$HOME目录中副本的文件名。

我建议你在自己的$HOME目录中留存一个该文档的副本。我就有过相似的历程,有数次误删了crontab文件(因为r键紧挨在e键的中间)。这就是为什么有些系统文件建议不要直接编辑crontab文件,只是编辑该文档的一个副本,然后再次填写新的文档。

有些crontab的变体有些怪异,但是在使用crontab命令时要特别谨慎。如果遗漏了任何选项,crontab可能会打开一个空文档,如果看起来像是个空文档。这时敲delete键退出,不要按<Ctrl-D>,如果你将丢失crontab文件。

5.使用示例

例子1:每1分钟执行一次command

指令:

*****command

例子2:每小时的第3和第15分钟执行

指令:

3,15****command

例子3:在上午8点到11点的第3和第15分钟执行

指令:

3,158-11***command

例子4:每隔两天的上午8点到11点的第3和第15分钟执行

指令:

3,158-11*/2**command

例子5:每个星期一的上午8点到11点的第3和第15分钟执行

指令:

crontab 服务重启_crontab 重启服务_重启crontab 进程

3,158-11**1command

例子6:每晚的21:30重启smb

指令:

3021***/etc/init.d/smbrestart

例子7:每月1、10、22日的4:45重启smb

指令:

4541,10,22**/etc/init.d/smbrestart

例子8:每周六、周日的1:10重启smb

指令:

101**6,/etc/init.d/smbrestart

例子9:每天18:00至23:00之间每隔30分钟重启smb

指令:

,3018-23***/etc/init.d/smbrestart

例子10:每星期六的晚上11:00pm重启smb

指令:

023**6/etc/init.d/smbrestart

例子11:每一小时重启smb

指令:

**/1***/etc/init.d/smbrestart

crontab 服务重启_重启crontab 进程_crontab 重启服务

例子12:晚上11点到早上7点之间,每隔一小时重启smb

指令:

*23-7/1***/etc/init.d/smbrestart

例子13:每月的4号与每周一到周三的11点重启smb

指令:

0114*mon-wed/etc/init.d/smbrestart

例子14:一月一号的4点重启smb

指令:

041jan*/etc/init.d/smbrestart

例子15:每小时执行/etc/cron.hourly目录内的插件

指令:

01****rootrun-parts/etc/cron.hourly

说明:

run-parts这个参数了,所以除去这个参数的话,中间就可以写要运行的某个插件名,而不是目录名了

四、应用注意事项

1.切记环境变量问题

有时我们创建了一个crontab,所以这个任务却无法自动执行,而手动执行这个任务却没有问题,这样现象一般是由于在crontab文件中没有配置环境变量引起的。

在crontab文件中定义多个调度任务时,需要非常提醒的一个问题就是环境变量的设置,因为我们手动执行某个任务时,是在目前shell环境下进行的,流程其实能找到环境变量,而功能自动执行任务调度时,是不会加载任何环境变量的,所以,就需要在crontab文件中指定任务运行所需的一切环境变量,这种,功能执行任务调度时就没有问题了。

不要假定cron知道所需要的独特环境,它确实并不知道。所以你要确保在shelll脚本中提供一切必要的路径和环境变量重启crontab 进程,除了一些自动设置的大局函数。所以提醒如下3点:

crontab 服务重启_重启crontab 进程_crontab 重启服务

1)插件中涵盖文件路径时写全局路径;

2)插件执行要用到java或其它环境变量时,通过source命令引入环境变量,如:

catstart_cbp.sh

#!/bin/sh

source/etc/profile

exportRUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf

/usr/local/jboss-4.0.5/bin/run.sh-cmev&

3)当手动执行脚本OK,所以crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决难题。如:

****./etc/profile;/bin/sh/var/www/java/audit_no_count/bin/restart_audit.sh

2.切记清理功能用户的短信日志

每条任务调度执行完毕,功能就会将任务输出信息通过电子邮件的方式发送给目前模块用户,这种日积月累,日记信息会更加大,可能会影响功能的正常运行,所以,将每条任务进行重定向处理相当重要。

例如,可以在crontab文件中增设如下形式,忽视日志输出:

*/3***/usr/local/apache2/apachectlrestart>/dev/null2>&1

/dev/null2>&1表示先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,所以标准错误也会重定向到/dev/null,这种日志输出问题就解决了。

3.功能级任务调度与用户级任务调度

模块级任务调度主要完成功能的一些维护操作,用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这样做),所以反过来却不行,root用户的任务调度操作可以通过crontaburoote来设置,也可以将调度任务直接写入/etc/crontab文件重启crontab 进程,需要注意的是,所以要定义一个定时重启功能的任务,就必须将任务放在/etc/crontab文件,但是在root用户下创建一个定时重启功能的任务应该无效的。

4.这些注意事项

新创建的cronjob,不会马上执行,起码要过2分钟才执行。如果重启cron则立即执行。

当crontab突然失灵时,可以尝试/etc/init.d/crondrestart解决难题。或者查看日记看某个job有没有执行/报错tail-f/var/log/cron。

千万别乱运行crontab-r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的一切crontab都没了。

在crontab中%是有独特涵义的,认为换行的含义。如果要用的话必须进行转义\%,如常常用的date+%Y%m%d在crontab里是不会执行的,也是换成date+\%Y\%m\%d。

本文来自互联网,由机器人自动采编,文章内容不代表本站观点,请读者自行辨别信息真伪,如有发现不适内容,请及时联系站长处理。

    相关阅读
    江苏快三开奖结果