党在终端或控制台工作时,可能不希望由于运行一个作业(不是你在学校老师布置的作业)而占住了屏幕,因为可能还有更重要的事情要做,对于密集访问磁盘的进程,你可能希望它能够在每天的非负荷高峰时间段运行,为了使这些进程能够在后台运行,也就是说不再终端屏幕上运行,有几种选择方法提供使用。
1. 设置crontab文件,并用它来提交作业
2. 使用at命令来提交作业
3. 在后台提交作业
4. 使用nohup命令提交作业
名词解释:
1.cron 系统调度进程。可以使用它在每天的非高峰期时间运行作业,或在一周后或一月中的不同时间段运行
2.at at命令 使用它在一个特地的时间运行一些特使的作业,或在晚一些的非负荷高峰时间段或高峰负荷时间运行
3.& 使用它在后台运行一个占用时间不长的进程
4.nohup 使用它在后台运行一个命令,即使在用户退出时也不受影响
1.crontab的域
第1列 分钟 1-59
第2列 小时 1-23(0表示子夜)
第3列 日 1-31
第4列 月 1-12
第5列 星期 0-6(0表示星期天)
第6列 要运行的命令
crontab格式:
分 时 日 月 星期 命令
在这些域中,可以用 “-” 表示一个时间范围 周一至周五(1-5) ,也可以使用 “,”例如 只希望周一和周三执行 (1,3)
可以用星号 * 来表示连续的时间段,如果对某个域没有设定 也要输入*
示例(执行命令的shell脚本文件需是绝对路径,除了一些自动设置的全局标量):
30 21 * * * /apps/bin/cleanup.sh
上面命令表示 每晚21点30分执行/apps/bin目录下的cleanup.sh(只设定了分和时 其余都用* 来表示 说明在连续的日,月,周里的21:30分执行该命令 )
45 4 1,10,12 * * /apps/bin/backup.sh
上面命令表示: 在每月每周(即每月) 的1,10,12日的4点45分执行/apps/bin/目录下的backup.sh
10 1 * * 6,0 /bin/find -name "core" -exec rm {} /;
上面命令表示 在每周的周六和周日的1:10分执行find命令
0,30 18-23 * * * /apps/bin/dbcheck.sh
上面命令表示:每晚的18点到23点每隔30分钟执行dbcheck.sh
crontab命令选项
crontab [-u user] -e -l -r
-u 用户名 (如果使用自己的名字登录,则不需使用-u选项 crontab在执行的时候该命令能够知道当前用户)
-e 编辑crontab文件
-l 列出crontab文件中的内容
-r 删除crontab文件
创建一个新的crontab文件
考虑到想cron进程提交一个crontab文件之前,首先要做的一件事就是设置环境变量EDITOR
编辑$HOME目录下的.profile文件 加入下面一行:
EDITOR=vi;
export EDITOR
创建一个<user>cron的文件例如rootcron
在该文件中加入如下内容:
0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console
上面例子中,系统每隔15分钟向控制台输出一下当前时间
提交rootcron
#crontab rootcron
该文件已经提交给cron进程 每隔15分钟运行一次
列出crontab文件,可以用下面命令
#crontab -l
编辑命令:
#crontab -e
2.at命令