linux进程管理-定时定期执行任务
0.计划任务的命令:
at 安排作业在某一时刻执行
batch 安排作业在系统负载不重时执行
crontab 安排周期性运行的作业
1.at命令用法:
安排命令或者多个命令在指定的时间运行一次
语法;
at [-f filename] 时间
at -d or atrm 删除队列中的任务
at -l 或者 atq 查看队列中的任务
1.1 at指定时间的方式(前提是开启atd服务,所以需要查看系统是否开启atd服务)
绝对计时方法;
midnight noon teatime
hh:mm[today]
hh:mm tomorrow
hh:mm 星期
hh:mm MM/DD/YY
相对计时方法:
now +n minutes
now +n hours
now +n days
例如:

1.2 at用法:
1.安排定时任务
例如:10分钟以后发个广播:
[root@iz2ze46xi6pjjj69ailg9lz ~]# at now + minutes #用相对时间
at> /usr/bin/wall < /etc/motd<EOT> #输入命令之后Ctrl+D保存任务
注意:
(1)命令要用绝对路径。
(2)能使用at定时任务的前提是开启atd服务,所以需要查看系统是否开启atd服务:
[root@iz2ze46xi6pjjj69ailg9lz ~]# ps -le|grep atd
S - hrtime ? :: atd
2.查看以及删除定时任务
- 定时任务原理:
我们安排了一个定时任务实际上是将我们的命令保存在/var/spool/at/目录下面:
[root@iz2ze46xi6pjjj69ailg9lz ~]# ls /var/spool/at/ #查看目录下文件
a0000301832fd6 spool
[root@iz2ze46xi6pjjj69ailg9lz ~]# tail - /var/spool/at/a0000301832fd6 #查看文件内容
exit
}
${SHELL:-/bin/sh} << 'marcinDELIMITER2474a99d'
/usr/bin/wall < /etc/motd
marcinDELIMITER2474a99d
我们发现linux实际上将我们的定时任务放在文件末尾,在前面做了一系列的读取环境变量的操作,也就是我们的定时任务是在文件的末尾写着的。
- 查看与删除定时任务:
[root@iz2ze46xi6pjjj69ailg9lz ~]# atq
[root@iz2ze46xi6pjjj69ailg9lz ~]# at now + minutes #新增一个任务
at> /usr/bin/wall gggg<EOT>
job at Sat Mar ::
[root@iz2ze46xi6pjjj69ailg9lz ~]# at now + minutes #新增一个任务
at> /usr/bin/wall secondwall<EOT>
job at Sat Mar ::
[root@iz2ze46xi6pjjj69ailg9lz ~]# atq #查看定时任务
Sat Mar :: a root
Sat Mar :: a root
[root@iz2ze46xi6pjjj69ailg9lz ~]# at -l #查看任务方法二
Sat Mar :: a root
Sat Mar :: a root
[root@iz2ze46xi6pjjj69ailg9lz ~]# at -d 5 #移除序号是5的任务
[root@iz2ze46xi6pjjj69ailg9lz ~]# atq
Sat Mar :: a root
[root@iz2ze46xi6pjjj69ailg9lz ~]# atrm 4 #移除序号是4的任务
3.at配置文件限制哪些用户可以使用at命令:
/etc/at.allow
/etc/at.deny
规则:
如果/etc/at.allow文件存在,那么只有列在此文件中的用户才可以使用at命令;
如果/etc/at.deny文件存在,那么只有列在此文件中的用户才不可以使用at命令;
如果两个文件都不存在,那么只有超级用户才可以使用at命令;
如果两个文件都存在且都为空,那么所有人可以使用at命令。
2.batch命令用法:
用法与功能与at一样,只是它会检查系统负载值,负载较轻才会执行任务(一般为0.8以下为较轻)。负载值就是我们用w或top查询时候的load average。
3.crontab周期性执行命令的用法:(依赖于crond进程)
作用:用于生成cron进程所需要的crontab文件
语法:
crontab {-l | -e|-r}
-l 显示当前的crontab
-r 删除当前的crontab
-e 使用编辑器编辑当前的crontab文件
crontab -e格式: (时间值的填写方法:将知道的时间值填上,不知道的写上*。)
分钟 小时 天 月 星期 命令/脚本
例如:
(1)每天凌晨四点备份文件:
0 4 * * * 备份脚本
(2)每个星期二和星期五下午六点备份文件
0 18 * * 2,5 备份脚本
(3)一月到三月的星期2和星期五备份文件
0 18 * 1-3 2,5 备份脚本
(4)另一个需求,星期一到星期五的17.30发一条广播,17.45所有电脑自动关机
30 17 * * 1-5 /usr/bin/wall < news.txt
45 17 * * 1-5 /sbin/shutdown -h now
(5)3-6月和9-12月每个星期的星期1到星期5的12点到下午2点每隔2分钟执行一次备份脚本
*/2 12-14 * 3-6,9-12 1-5 /bin/cp /root/data/ -r /root/data.bak 2> /root/bak.err
上面将错误的信息重定向到/root/bak.err文件夹中
总结:时间范围用-,多个时间用,逗号隔开,没两分钟可以在分钟处*/2,每两小时在天的位置*/2.
总结:
(1)这些选项都不能为空,必须填入
(2)如果不知道具体的值用*代替
(3)每个时间段可以指定多个值,用逗号隔开;时间范围的话用-
(4)命令应该给出绝对路径
(5)用户必须具有运行所对应的命令或程序的权限。
1.周期性任务的例子:
(1)每隔3分钟发送一条广播,内容从news.txt读取
[root@iz2ze46xi6pjjj69ailg9lz ~]# crontab -e
输入内容如下,输入完成之后保存即可:
*/ * * * /usr/bin/wall < /root/news.txt
保存之后可以到/var/spool/cron/目录下查看
[root@iz2ze46xi6pjjj69ailg9lz cron]# pwd
/var/spool/cron
[root@iz2ze46xi6pjjj69ailg9lz cron]# cat root
*/ * * * /usr/bin/wall < /root/news.txt
定时执行的原理:
将我们写的命令保存到/var/spool/cron/目录下,以用户命名,然后定期执行文件,我们也可以手工编辑这个文件。
(2)其他例子:

2.查看周期性任务的两种方式:
[root@iz2ze46xi6pjjj69ailg9lz cron]# cat /var/spool/cron/root #直接读取文件
*/ * * * /usr/bin/wall < /root/news.txt
*/ * * * * /usr/bin/ls
[root@iz2ze46xi6pjjj69ailg9lz cron]# crontab -l #用crontab命令读取
*/ * * * /usr/bin/wall < /root/news.txt
*/ * * * * /usr/bin/ls
[root@iz2ze46xi6pjjj69ailg9lz cron]#
3.删除周期性任务的两种方式
第一种:直接删除所有的任务
[root@iz2ze46xi6pjjj69ailg9lz cron]# crontab -r
[root@iz2ze46xi6pjjj69ailg9lz cron]# crontab -l
no crontab for root
第二种:编辑/var/spool/cron/root文件,删除指定行也就完成了删除任务
注意:crond周期执行任务依赖于crond进程,因此需要开启crond进程:
[root@iz2ze46xi6pjjj69ailg9lz ~]# pkill crond #杀掉进程
[root@iz2ze46xi6pjjj69ailg9lz ~]# ps -le | grep crond
[root@iz2ze46xi6pjjj69ailg9lz ~]# which crond
/usr/sbin/crond
[root@iz2ze46xi6pjjj69ailg9lz ~]# crond #开启crond进程
[root@iz2ze46xi6pjjj69ailg9lz ~]# ps -le | grep crond
S - hrtime ? :: crond
4.crontab的配置文件: /etc/crontab文件 介绍了配置文件的格式
[root@iz2ze46xi6pjjj69ailg9lz /]# cat /etc/crontab #查看/etc/crontab文件
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root # For details see man crontabs # Example of job definition:
# .---------------- minute ( - )
# | .------------- hour ( - )
# | | .---------- day of month ( - )
# | | | .------- month ( - ) OR jan,feb,mar,apr ...
# | | | | .---- day of week ( - ) (Sunday= or ) OR sun,mon,tue,wed,thu,f
ri,sat
# | | | | |
# * * * * * user-name command to be executed */ * * * root /bin/wipefs
5. /etc/下面有每周、每天和每日执行的脚本文件夹,我们将一个脚本放进去即可实现对应的执行脚本:
[root@iz2ze46xi6pjjj69ailg9lz etc]# ll /etc/ | grep cron
-rw-------. root root Mar anacrontab
drwxr-xr-x. root root Aug cron.d
drwxr-xr-x. root root Aug cron.daily
-rw-------. root root Mar cron.deny
drwxr-xr-x. root root Jun cron.hourly
drwxr-xr-x. root root Jun cron.monthly
-rw-r--r--. root root Jan : crontab
drwxr-xr-x. root root Jun cron.weekly
centos7,调用执行上面每日、每月、每周文件夹下面的脚本是在:/etc/anacrontab通过anacron在调用
[root@iz2ze46xi6pjjj69ailg9lz etc]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron # See anacron() and anacrontab() for details. SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=
# the jobs will be started during the following hours only
START_HOURS_RANGE=- #period in days delay in minutes job-identifier command
cron.daily nice run-parts /etc/cron.daily
cron.weekly nice run-parts /etc/cron.weekly
@monthly cron.monthly nice run-parts /etc/cron.monthly
6.限定哪些用户可以使用crond命令:
/etc/cron.allow
/etc/cron.deny
规则:
如果/etc/cron.allow文件存在,那么只有列在此文件中的用户才可以使用at命令;
如果/etc/cron.deny文件存在,那么只有列在此文件中的用户才不可以使用at命令;
如果两个文件都不存在,那么只有超级用户才可以使用at命令;
如果两个文件都存在且都为空,那么所有人可以使用at命令。
linux进程管理-定时定期执行任务的更多相关文章
- [转帖]十二 个经典 Linux 进程管理命令介绍
https://www.cnblogs.com/swordxia/p/4550825.html 接了 http referer 头 没法显示图片 可以去原始blog 里面去查看. 随笔- 109 ...
- [转帖]linux进程管理总结
linux进程管理总结 https://www.cnblogs.com/chenfangzhi/p/10660355.html 高手总结的.. 看出来我是菜逼. 目录 一.进程相关的概念 二.关闭会话 ...
- Linux进程管理子系统分析【转】
本文转载自:http://blog.csdn.net/coding__madman/article/details/51298732 Linux进程管理: 进程与程序: 程序:存放在磁盘上的一系列代码 ...
- 12个Linux进程管理命令介绍(转)
12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国 作者:Linux [字体:大 中 小] 执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...
- Linux进程管理知识整理
Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) ...
- Linux性能及调优指南(翻译)之Linux进程管理
本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译原文地址:http://www.redbooks.ibm.com/redpap ...
- Linux进程管理 (1)进程的诞生
专题:Linux进程管理专题 目录: Linux进程管理 (1)进程的诞生 Linux进程管理 (2)CFS调度器 Linux进程管理 (3)SMP负载均衡 Linux进程管理 (4)HMP调度器 L ...
- Linux进程管理 (2)CFS调度器
关键词: 目录: Linux进程管理 (1)进程的诞生 Linux进程管理 (2)CFS调度器 Linux进程管理 (3)SMP负载均衡 Linux进程管理 (4)HMP调度器 Linux进程管理 ( ...
- Linux进程管理 (7)实时调度
关键词:RT.preempt_count.RT patch. 除了CFS调度器之外,还包括重要的实时调度器,有两种RR和FIFO调度策略.本章只是一个简单的介绍. 更详细的介绍参考<Linux进 ...
随机推荐
- C# 知识回顾 - 你真的懂异常(Exception)吗?
你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...
- React Components Template
React Components Template "use strict"; /** * * @author xgqfrms * @license MIT * @copyrigh ...
- Redis源码剖析
Redis源码剖析和注释(一)---链表结构 Redis源码剖析和注释(二)--- 简单动态字符串 Redis源码剖析和注释(三)--- Redis 字典结构 Redis源码剖析和注释(四)--- 跳 ...
- VS2012完全卸载
1.先交VS2012的ISO通过Ultraiso载入2.DOS命中输入 I:\vs_ultimate.exe /uninstall /force 或 I:vs_ultimate.exe /uninst ...
- BZOJ 1066 蜥蜴(网络流)
很普通的拆点网络流,把每个柱子拆成两个点(i,j,0)和(i,j,1).对于柱子的高度限制则加边((i,j,0),(i,j,1),height). 两个柱子能互相到达则加边((i,j,1),(i1,j ...
- vijos1859[TJOI2014]电源插排
题意:小 M 的实验室有很多电源插排.这些插排的编号从 1 到 N,由左向右排成一排.每天早晨,这些插排都是没有被使用的.每当一个学生来到实验室,他就将自己的笔记本电源插到某一个未被使用的插排上.实验 ...
- Linux 文件上传Linux服务器
进入命令行 在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI).CLI只能接受文本输入,也只能显示 ...
- BZOJ4770 图样(概率期望+动态规划)
考虑求出所有MST的权值和再除以方案数,方案数显然是2mn. 按位考虑,显然应该让MST里的边高位尽量为0.那么根据最高位是0还是1将点集划分成两部分,整张图的MST就是由两部分各自的MST之间连一条 ...
- paramiko连接远程主机,上传下载文件
Paramiko是基于SSHv2协议实现的一个Python模块,提供客户端和服务器的功能.Paramiko本身是一个围绕SSH网络概念的纯Python接口. Client: # 创建一个SSH连接对象 ...
- Android 常用控件自定义样式RadioButton、CheckBox、ProgressBar、
一.RadioButton / CheckBox 系统自带的RadioButton/CheckBox的样式,注定满足不了实际运用中的情况,有时候自定义自己的样式:此次把自己中工作学习过程中所学到的东西 ...