如何在shell脚本中快速的添加crontab任务

如何在shell脚本中快速的添加crontab任务,第1张

在编写shell脚本时,经常会遇到需要编辑crontab任务的场景。下面介绍一下如何快速的编辑crontab。

执行结果如图:

其中,crontab - 可以读取管道传输过来的crontab配置。

将需要添加的定时任务echo到crontab -l的结果后面,再通过管道传输给crontab - 进行加载,便完成了添加;

通过grep -v去除crontab -l 中想要删除的定时任务,再传给crontab -加载配置完成删除。

一条命令就完成了crontab任务的添加和删除,非常方便。

执行结果如图:

 本篇中主要从具体的实例中说明怎样创建计划任务

1,周期性任务计划:cron

(1)相关的程序包:默认已安装

使用 rpm –qi cronie 查看相关包具体信息

cronie: 主程序包,提供crond守护进程及相关辅助工具

cronie-anacron: cronie的补充程序,用于监控cronie任务执行状况,如cronie中的任务在过去该运行

(2)计划周期性执行的任务提交给crond,到指定时间会自动运行

系统cron任务:系统维护作业

(3)要确保crond守护处于运行状态:查看crond服务是否启动

    CentOS 7:

    systemctl status crond 查看是否启动

       systemctl start  crond 启动方法

    CentOS 6:

   service crond status查看是否启动

    service crond start启动方法

(4)系统cron任务:系统维护作业

/etc/crontab 将计划任务写入该文件

用户cron任务:

crontab命令 使用crontab命令创建

(5)日志: /var/log/cron 监控计划任务

2.系统计划任务

(1)查看任务  vim  /etc/crontab

示例:每隔10分钟执行一次磁盘空间检查和磁盘节点号检查,一旦发现任何分区利用率大于80就执行wall警报

1、解释:第1位 */10 表示每10分钟执行一次(注意,*/#这里#仅限能被60 整除的数,如 */12 表示每12分执行一次)

第2位* 小时,*代表每个小时都要执行,2代表凌晨两点执行,20代表晚上8点执行(24小时制) 

        第3位*日,*代表每天执行,4 表示每月4号执行。20代表每月20号执行(1-31天)

        第4位*月,*代表每月都执行,1代表一月,2代表2月 (1-12月)

        第5位*星期几,*代表任意一天,1表示星期一,(0-7,0和都表示星期日)

        第6位root 表示执行人是root

        第7位/root/bin 执行的 *** 作,可以是一条命令,也可以是脚本名称,注意这里写上完整的路径。

2.脚本示范

注意:(1)没有被重定向的输出会被邮寄给用户

(2)根用户root能够修改其它用户的作业

(3)运行结果的标准输出和错误以邮件通知给相关用户

   执行的命令结果最好导入垃圾桶中

   COMMAND &>/dev/null

(4)对于cron任务来讲, %有特殊用途;如果在命令中要使用%,则需要转义,将%放置于单引号中,则可不用转义

 建议将执行的 *** 作写入脚本中,不要直接写在/etc/crontab中

(5)命令在写入脚本或者/etc/crontab之前,建议先做测试

(6)这里写完脚本后要把脚本加上执行权限,chmod +x checkdisk.sh(脚本名)

3.用户周期性任务

(1)用户cron:

crontab命令定义,每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME

crontab命令:本身有suid 权限

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

-l: 列出所有任务;

-e: 编辑任务;

 * * * * * wall I am 

-r: 移除所有任务;

-i:同-r一同使用,以交互式模式移除指定任务

-u user: 仅root可运行,指定用户管理cron任务

                               crontab –e –u mage

(2)例子1:普通用户liyi  每分钟广播一次hello

         切换到liyi  用户下 su – liyi

切换到root用户下,exit,进入/var/spool/cron/ ,可以看到guan用户创建的任务,当然root用户可以修改和删除普通用户的计划任务。

4.控制用户执行计划任务

    控制用户执行计划任务:   /etc/cron.{allow,deny}

       白名单: /etc/cron.allow 默认不存在,只有该文件中的用户才能执行crontab命令

       黑名单:/etc/cron.deny 默认存在,拒绝该文件中用户执行crontab命令, 而没有在cron.deny 文件中的使用者则可执行

     如果两个文件都不存在,只有root 可以执行 crontab 命令

           解释:先看/etc/cron.allow文件,如果有,则只看/etc/cron.allow文件,只有/etc/cron.allow中的用户才能执行,如果没有该文件,则查看/etc/cron.deny文件。除/etc/cron.deny中的用户之外的用户都可以创建cron任务,如果两个文件都不存在,则仅root可以创建cron任务。

1、crontab -l检查

2、crontab -e添加

3、root计划任务保存的文件是/var/spool/cron/root

4、根据实际情况修改/var/spool/cron/root即可

5、例如,计划任务保存在/opt/cron.txt里面

0 4 * * * /tomcat6/bin/startup.sh

6、在第五行添加或指定字符串

sed -i '5 r cron.txt /var/spool/cron/root

或者

sed -i '/cron.start/r cron.txt' /var/spool/cron/root

7、删除最后一行

sed -i '$d' /var/spool/cron/root


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11221806.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存