Linux计划任务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux计划任务相关的知识,希望对你有一定的参考价值。
在Linux中能实现计划任务的主要有三个,分别是at,batch,cron.
* at
at命令用于执行一次性计划任务,使用/etc/at.allow(白名单)、/etc/at.deny(黑名单)控制允许那些用户使用at命令,如果两个文件都不存在则只有root用户能使用。
centos7默认存在/etc/at.deny文件,此文件为空,表示所有用户可用at任务.
使用格式:
at [option] time
-m at的工作完成后不管有没有输出,都用email通知使用者工作完成。
-l 类似于atq,列出at的任务列表
-d 类似于atrm,删除at任务
-c # 列出id为#的任务实际运行的工作指令
TIME格式:
HH:MM
HH:MM YYYY-MM-DD
HH:MM +* Unit[minutes、hour、day、weeks] #在某个时间再加个时间
例如 at now +5 minutes 五分钟后执行任务
at now +5 minutes
echo "hello world" >/dev/pts/4 #输出到终端
注意:at所有任务执行完后都将结果发送邮件给用户,默认邮件存放地址为/var/spool/mail/username
使用mail/mailx命令输入相应的编号即可查看.
* batch
与at一样,是一次性任务,其不需要指定时间,当系统空闲时自动执行命令.很少使用.
用法:
batch 执行回车,进入交互式界面,按ctrl+d提交任务
* crontab
crontab,用于提供周期性计划任务
相关程序包:
cronie 主程序包,提供crond
cronie-anacron 辅助程序包,用于监视crond是否正确执行, 例如,当执行任务时系统关机了,crond无法执行任务,当系统启动后被anacron监测到crond执行失败,则立即执行一遍任务.
crontabs 提供维护工具
[[email protected] ~]# rpm -qa | grep cron
cronie-1.4.11-14.el7_2.1.x86_64
crontabs-1.11-6.20121102git.el7.noarch
cronie-anacron-1.4.11-14.el7_2.1.x86_64
相关文件:
/etc/cron.allow 运行执行crond的用户列表
/etc/cron.deny 拒绝执行crond的用户列表
/etc/crontab 系统任务文件
/etc/cron.d/ 系统任务文件夹
计划任务:
系统cron任务,通常用于执行系统维护操作 /etc/crontab /etc/cron.d/*
用户cron任务,通常用于用户操作任务 /var/spool/cron/user_name
配置文件格式:
系统任务 /etc/crontab
* * * * * user-name command
用户任务 /var/spool/cron/user_name
* * * * * command #区别在于不用指定用户
*分别代表 minutes, hour ,day of mouth, month, day of week
时间表示方法:
1)具体时间,一个特定的值
2) ,表示所有值,每时每刻都执行任务
3)离散取值,逗号分隔 “#,#”
4)连续取值,短减号分隔 “#-#”
5)在指定的范围上指定步长, “/3” (每3分钟运行一次) , “20-50/3” (在20-50分钟内每隔3分钟运行一次)
示例
建立系统任务:
[[email protected] cron.d]# vim /etc/crontab
* */3 * * * gentoo /bin/bash wall <123.txt
0 */3 * * * gentoo /bin/bash wall <123.txt
第一个是错误示例,当大范围为*时,小范围要给具体值
建立用户任务:
root用户下为别的用户建立用户任务: (只有root能为别的用户建任务)
[[email protected] ~]# crontab -u gentoo
普通用户自己建立用户任务:
[[email protected] ~]# crontab -e
默认情况下,crond执行的所有命令输出都将以邮件方式发送给相应的用户,如果不想发到邮箱则需要使用重定向:
command >/dev/null 正确的扔掉,错误的发送邮件
command &>/dev/null 所有的都扔掉
当用户要实现秒级别的任务或则不能被相应*的取值范围整除的数,则可以通过sleep命令实现.
sleep # (smhd) s秒,m分,h时,d天
例如实现每3秒执行一次ps命令:
* * * * * sleep 3s ; ps
例如每7分钟执行一次ps命令:
(分钟的取值范围为1-60,不能被7整除,实际上最后一轮并没有执行)
* * * * * sleep 7m ; ps
以上是关于Linux计划任务的主要内容,如果未能解决你的问题,请参考以下文章