[ubuntu入门手册]-12-任务计划管理

引言

这篇文章介绍ubuntu下的任务管理,在windows下我们可以使用at这个命令在我们指定的时间执行一些指令,ubuntu同样可以如此,除此之外,ubuntu提供了一个更加强大的功能crontab,它的规则允许我们指定"每分每小时每天每周每月",重复的执行某些我们写入的指令。

文章目录

0×1.使用at命令添加计划任务

at只执行一次,如果时间点小于当前时间,就推迟到明天:

					#安装at
					qing@qingsword.com:~$ sudo apt-get install at

					#在15点5分执行
					qing@qingsword.com:~$ at 15:05
					warning: commands will be executed using /bin/sh
					at> touch ~/testfile  //可以输入多条命令,本例在家目录新建一个testfile文件
					at> <EOT>      //使用键盘的ctrl+D结束输入
					job 1 at Tue Feb  7 15:05:00 2015

					//查看at任务计划列表,前面的1是任务号
					qing@qingsword.com:~$ atq
					1	Tue Feb  7 15:05:00 2015 a qing

					//如果不想让某个任务执行,可以使用atrm接任务号,删除任务
					qing@qingsword.com:~$ atrm 1
					

0×2.使用crontab命令添加与管理计划任务

crontab命令参数:

-u user 只有root能够执行并编辑其他用户任务计划
-l 列出任务计划
-e 编辑修改或创建任务计划
-r 删除所有任务计划

					#当前用户创建计划任务
					qing@qingsword.com:~$ crontab -e  
					no crontab for qing - using an empty one

					Select an editor.  To change later, run 'select-editor'.
					  1. /bin/ed
					  2. /bin/nano        <---- easiest
					  3. /usr/bin/vim.basic
					  4. /usr/bin/vim.tiny

					Choose 1-4 [2]: 3 #第一次启动会让你选择使用什么编辑器,本例选择vim

					/*
					 * vim的操作不是本文重点,这里重点介绍一下这个文件的各项是什么意思
					 *  
					 * 在这个文件中新添加一行“*/1 * * * * date >> ~/datefile”,
					 * 其中前面五个参数分别对应“分/时/日/月/周”,*号代表通用的“每XX”
					 * 所以这条命令可以翻译成"每月每周每天每小时的每一分钟"
					 * 执行一次date >> ~/datefile将系统的日期写入家目录的datefile文件中
					 * 如果这里前五个参数是1 * * * *,就代表"每月每周每天每小时的第一分钟"
					 * 注意 1和*/1的区别,前者代表第几分钟执行,后者代表每一分钟执行一次
					 */
					# m h  dom mon dow   command
					*/1 * * * * date >> ~/datefile

					//显示当前用户任务计划
					qing@qingsword.com:~$ crontab -l  

					//使用root用户编辑qing的任务计划
					qing@qingsword.com:~$ sudo crontab -u qing -e
					

0×3.root通过crontab文件直接添加管理计划任务

root用户有一种更简单的方法创建任务计划,通过直接修改/etc/crontab文件,将要执行的计划任务用标准格式写入其中,或者将需要执行的可执行文件放入crontab文件指定的文件夹中,run-paths会根据时间调用这些文件夹中的可执行文件。

					#如果需要每小时执行一次某文件,请使用root权限将此文件放在/etc/cron.hourly文件夹下面,让系统每小时的第17分钟的时候执行他们
					#后面的以此类推,分别是每天(cron.daily),每周(cron.weekly),每月(cron.monthly)
					qing@qingsword.com:~$ sudo vim /etc/crontab
					
					# m h dom mon dow user  command
					#每小时的第17分钟执行
					17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
					#每天的6:25执行
					25 6    * * *   root    cd / && run-parts --report /etc/cron.daily 
					#每周日的6:47执行
					47 6    * * 7   root    cd / && run-parts --report /etc/cron.weekly 
					#每个月1号的6:52执行
					52 6    1 * *   root    cd / && run-parts --report /etc/cron.monthly
					#clear vmware tempfolder
					10  10    * * 6   root    rm -rf /home/qing/.cache/vmware/drag_and_drop/* 
					#将自定义命令按照标准格式写入文本底部,上面这条命令,让系统每周6的10:10用root权限删除虚拟机和物理机拖放时产生的临时文件
					

crontab文件中参数的取值范围:

minute: 表示分钟,可以是从0到59之间的任何整数;
hour:表示小时,可以是从0到23之间的任何整数;
day:表示日期,可以是从1到31之间的任何整数;
month:表示月份,可以是从1到12之间的任何整数;
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日;
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。