让你学会Linux计划任务

运维 系统运维
在过去的一年里,微软的windows 7大行其道,不过Linux系统也越来越受到欢迎,你对Linux系统了解么?你是Linux系统的应用者么?本文为你详细介绍Linux计划任务,为你在学习Linux计划任务时起一定的作用。

在过去的一年里,微软的windows 7大行其道,不过Linux系统也越来越受到欢迎,你对Linux系统了解么?你是Linux系统的应用者么?本文为你详细介绍Linux计划任务,为你在学习Linux计划任务时起一定的作用。

Linux有三种计划任务:
at:指定一个时间执行一个任务 (适用一个或多个任务,执行一次后就不用)
cron:根据一个时间表自动执行任务 (使用一个或多个任务,周期性执行)
系统级别的计划任务及其扩展anacron:在一个指定时间间隔错过后自动执行任务

一、at服务:安排一个任务在未来执行,需要一个atd的系统后台进程

#at now+2 minutes 回车
>输入要执行的命令
>ctrl+d 结束输入

atq;查询当前的等待任务
用atq来查询,已经运行的任务,就消失了。这就是at计划任务的重点,只运行一次
atrm:删除等待任务
启动计划任务后,如果不想启动设定好的计划任务可以使用atrm命令删除。
格式:atrm 任务号
命令后面跟计划任务编号,如果不跟,就会删除这个用户所有的计划任务。

还可以进入到/var/spool/at目录里把计划任务删除,计划任务的文件都保存在该目录里,可以用rm -f 文件名来删除(以文件的形式删除计划任务,因为计划任务是以文件形式保存在该目录中)

在通常情况下,超级用户都可以使用这个命令。对于其他用户来说,能否可以使用就取决于两个文件:/etc/at.allow和/etc/at.deny

如果你要让哪个用户不能使用计划任务,就直接把他的用户名写进去就可以了,一排只能写一个。
同时写入allow 及deny, 允许.

二、cron服务

上面已经简单介绍了cron的一些进程和控制。下面我们来看看cron怎么实现。
相对与at,cron的优点就是能够周期性的执行某个命令,at却只能执行一次
cron的后台进程名字是crond ,cron也是system V的服务,所以我们可以service crond start|stop 来启动和关闭此服务,也可以使用chkconfig或者ntsysv来选择cron服务的默认开启,这些命令在以前我们都讲过的

#crontab -e              编辑当前用户的cron表
#crontab -l               查看当前用户的cron表
#crontab -r              删除当前用户的cron进程
#crontab -u 用户名 以某用户的身份来控制cron表
还有个重要的知识点,就是当用户的计划任务建立后是存放在/var/spool/cron这个目录
当使用crontab -e编辑当前用户的cron表后,会出现一个vi文件,cron的格式是这样的。分成两列,左边是时间,右边是运行的命令。时间是由5个部分组成。
例:
* * * * *          wall hello everyone
5个星号分别代表:minute hour day-of-month month-of-year day-of-week 分时日月周 ,而wall hello everyone 这是命令内容。上面的意识是每分每小时每天每月每周广播hello everyone。具体时间大家可以自己定义。如果要每两分钟发送就用*/2代替***个*。也可以是用具体时间来表示。
Crontab –e 编辑的任务不要加入用户名

***个*星号代表个小时的第几分钟:minute 范围是从0-59
第二个*星号代表每天的第几个小时:hour 范围是从0-23
第三个*星号代表每月的第几个日:day-of-month 范围从1-31
第四个*星号代表没年的第几个月:month-of-year 范围从1-12
第五个*星号代表每周的星期几:day-of-week 范围从0-6,其中0表示星期日
用户名:也就是执行程序要通过哪个用户来执行,这个一般可以省略;
命令:执行的命令和参数。
如果我要表示9月10日25分执行ls var/spool/cron任务怎么表示?
25 * 10 9 *         ls var/spool/cron

*/1 * * * 0 wall Hello redking.blog.51cto.com
*/   表示每多少分钟执行一次哈~

当制定了cron任务后,可以用crontab -l查看, 也可以到/var/spool/cron/目录查看。里面的文件名字就是对应用户的cron任务
可以使用crontab -r 来删除当前用户的cron

vim /etc/crontab 与crontab -e写入的定时运行有什么区别?
vim /etc/crontab:是系统级别定义的crontab,/etc/crontab的所有者和组都是root
crontab -e :是用户自定义的crontab,是所有的用户都可以写入的
两种方法记录的位置不一样,一个在/etc/ 另一个在/var/ 里面。都被cron服务调用哈~

三、系统级别的计划任务及其扩展anacrontab
anacrontab就是系统计划任务的扩展文件:在一个指定时间间隔错过后自动执行任务
这个是系统设置好了,清理系统垃圾或者是自动执行某些脚本的系统任务,一般我们做了解就行了,不要更改
配置文件是/etc/anaconrtab

  1. # /etc/anacrontab: configuration file for anacron  
  2. # See anacron(8) and anacrontab(5) for details.  
  3. SHELL=/bin/sh  
  4. PATH=/sbin:/bin:/usr/sbin:/usr/bin  
  5. MAILTO=root 
  6. #####格式是这样的:period(频率.天数) delay(延迟,分钟) job-identifier command  
  7. 1       65      cron.daily              run-parts /etc/cron.daily  
  8. 7       70      cron.weekly             run-parts /etc/cron.weekly  
  9. 30      75      cron.monthly            run-parts /etc/cron.monthly 

SHELL:就是运行计划任务的解释器,默认是bash
PATH:执行命令的环境变量
MAILTO:计划任务的出发者用户
HOME:家目录为/
run-parts是一个脚本,在/usr/bin/run-parts,作用是执行一个目录下的所有脚本/程序。
run-parts /etc/cron.hourly执行目录/etc/cron.hourly/之下的所有脚本/程序.
run-parts下面就是运行的命令

***行的意思是:每天开机65分钟后就检查cron.daily文件是否被执行了,如果今天没有被执行就执行他
第二行的意思是:每隔7天开机后70分钟检查cron.weekly文件是否被执行了,如果一周内没有被执行就执行他

和at差不多,就是/etc/cron.deny这个配置文件来控制, 同时写入allow 及deny, 允许.以上就是Linux计划任务。

【编辑推荐】

  1. 轻松掌握Linux关机命令
  2. 讲解Linux操作系统进入与退出系统方法
  3. 阐述Linux操作系统不足和发展趋势
  4. 关于Linux应用范围的介绍
  5. 让你深入了解Linux常用软件
责任编辑:小霞 来源: CSDN
相关推荐

2010-01-20 10:27:16

Linuxcrond命

2010-03-09 17:45:11

Linux计划任务

2017-11-23 09:00:02

Linuxcron计划任务

2017-06-09 13:17:04

Linuxcronanacron

2019-05-29 08:00:00

Linux计划任务cron

2017-03-27 08:30:00

Windows 8Windows计划任务

2024-11-06 10:59:00

2021-01-08 08:47:56

Saltstack架构管理服务器

2017-07-14 11:50:15

Windows 10Windows计划任务

2010-11-15 09:10:43

CrontabLinux计划任务

2011-04-01 09:17:01

备份cactiwindows

2010-01-07 11:10:00

cron配置计划

2023-06-29 07:55:52

Quartz.Net开源

2021-01-14 16:14:06

Python爬虫代码

2010-05-04 12:29:15

Oracle数据库

2010-05-04 12:43:11

Oracle数据库

2023-10-06 12:15:02

2021-09-14 07:26:26

组合问题循环

2021-08-26 13:22:46

雪花算法随机数

2023-03-10 22:08:20

点赞
收藏

51CTO技术栈公众号