at的运作方式
我们用at这个指令来产生工作,并将这个工作以文本文件的方式写入到/var/spool/at目录中,这个工作就能等待atd这个服务的取用与执行了.
并非每个人都可以使用at,我们可以在/etc/at.allow 和/etc/at.deny 中配置那些用户可以使用at
at 的用法:
at -c 工作号码
-m : 当at工作完后,即使没有输出信息,也以Email通知使用者工作完成
-l : 相当于atq ,列出系统上所有该用户使用的at排程
-d : at -d 相当于atrm ,可以取消一个at排程中的工作
-v : 可以使用较为明显的格式栏出at排程中的恩物栏表
-c : 可以列出后米娜接的工作的实际指令内容
TIME : 时间格式 ,指定什么时间执行
TIEM 的格式有 :
一 HH:MM =>在今天的HH:MM时刻执行
二 HH:MM YYYY-MM-DD
时 分 年 月 日
三 now + number [ minutes | hours | days | weeks ]
at的执行与终端机环境无关,而所有的standard output 和standard error output 都会传送到执行者的mailbox; 要在终端机看到信息,加入你在tty1 登入, 则可以使用 echo "嘿!" >/dev/tty1 ;
crontab (592)
当用户使用crontab 这个指令来建立工作排程后,该工作就会被记录到/var/spool/cron/这个目录里面去,而且是以账号来区分的(每个账号都会有一个相对应的文件)
cron执行的每一项工作都会被记录到/var/log/cron这个登录档中去;
crontab的用法
crontab [ -u username ] [ -l | -e | -r ]
-u : 只有root才能使用这个选项,既帮别人建立或者移除工作
-l : 查阅crontab的工作内容
-r : 移除所有的crontab的工作内容(若要移除一项,用-e 编辑)
-e : 会调用vi进入编辑状态
特殊字符
* (星号) ===>代表任何时候;
, (逗号) ===>多个时间点
- ( 减号) ===>代表一段时间范围
/n(斜线)===>n代表的是数字,即没隔n单位时间的意思
/etc/cron.allow
/etc/cron.deny
一
分 时 日 月 周 用户 指令
0-59 0-23 1-31 1-12 0-6 执行的身份 执行的指令
=================================================
系统的crontab 配置文件 /etc/crontab
由于cents提供了runrun-parts这个script脚本的辅助,因此/etc/crontab这个支持下面两种下达指令的方法
一
分 时 日 月 周 用户 指令
0-59 0-23 1-31 1-12 0-6 执行的身份 执行的指令
二
分 时 日 月 周 用户 run-parts 要执行文件的路径
0-59 0-23 1-31 1-12 0-6 执行的身份 执行文件
which run-parts (/usr/bin/run-parts 是一个脚本) 这个指令会把后面跟的文件(shell脚本)拿出来执行 ; 也就是说,如果你想让系统每小时主动帮你执行某个或者某些指令,可以将它们写成一个script文件;
examples:
一
在5月1日23:59分发送一封邮件给kiki 这封邮件的内容已经写在/root/love.txt 下了
直接下达 crontab -e 后 编辑
59 23 1 5 * mail kiki < /root/love.txt
二
每5分钟执行/home/dmtsai/test.sh 一次
*/5 * * * * /home/dmtsai/test.sh
三
30 16 * * 5 mail@ his.server.name < /home/dmtsai.friend.txt
crontab -e 四针对使用者的cron来设计(编辑的是/var/spoolcron/这个目录下的相应的用户的cron文件)的,如果是系统的行列排程,就需要编辑/etc/crontab 这个文件了 ,
使用 crontab -e来编辑用户自己的crontab的时候不需要指定用户,但是,在编辑系统的/etc/crontab的时候就需要指明该工作是以谁的什么身份来执行的,系统默认的行列排程工作是以root的身份来执行的