使用 cron 和 crontab 后台执行命令
时间:2007-04-24 来源:ahhy
* cron 一个系统调督进程。可以使用它在一个指定的时间段内执行作业。
* crontab user job file scheduler
* at at 命令可以指定在一个指定的时间约性特殊的作业。
1,cron 和 crontab cron 是系统主要的调度进程,可以在无需人工干预的情况下运行作业。有一个叫做 crontab 的命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个 crontab 文件来保存调度信息。可以使用它运行任意一个 shell 脚本或某个命令,每小时运行一次,或一周三次,这完全取决于你。每一个用户都可以有自己的 crontab 文件,但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。系统管理员是通过 cron.deny 和 cron.allow 这两个文件来禁止或允许用户拥有自己的 crontab 文件。 * crontab 的域 crontab 文件每个条目中各个域的意义和格式如下: - 1 分钟 1 ~ 59
- 2 小时 1 ~ 23 (0 表示子夜)
- 3 天 1 ~ 31
- 4 月 1 ~ 12
- 5 星期 0 ~ 6 (0 表示星期天)
- 6 需要运行的命令 下面是 crontab 的格式: 分钟 小时 日 月 星期 要运行的命令 其他一些符号说明: - 可以使用横杠表示一个时间范围,例如: 1-5
- 可以使用逗号分割需要运行昨天的时间
- 可以使用星号表示某个连续的时间段
- 注释行以 # 开头 * crontab 事例 eg: 每晚的 21:30 运行 /apps/bin 目录下的 cleanup.sh 30 21 * * * /apps/bin/cleanup.sh eg: 每月 1、10、22 日的 4:45 运行 /apps/bin 目录下的 backup.sh 45 4 1,10,22 * * /apps/bin/backup.sh eg: 每周六、周日的 1:10 运行一个 find 命令 10 1 * * 6,0 /bin/find -name "core" -exec rm {} \; eg: 在每天18:00至23:00之间每隔30分钟运行 /apps/bin 目录下的 dbcheck.sh 0,30 18-23 * * * /apps/bin/dbcheck.sh 注意:当使用 crontab 运行 shell 脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。记住,既然是用户向 cron 提交了这些作业,就要向 cron 提供所需的全部环境。所以你要保证在 shell脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。 * crontab 命令选项 crontab [-e | -l | -r] user] [file] -e 编辑 crontab 文件
-l 列出 crontab 文件中的内容
-r 删除 crontab 文件 * 创建一个新的 crontab 文件 在向 cron 系统调度进程提交你的 crontab 文件之前,需要首先设置环境变量 EDITOR,然后 cron 据此来确定哪个编辑器编辑 crontab 文件。(当然 99.99% 的 unix 和 linux 用户可能都会使用 vi 的:)) 可以创建一个名称为 username_cron 的文件,然后编辑如下: 30 21 * * * /apps/bin/cleanup.sh
最后,提交这个创建的 crontab 文件 crontab bill_cron * 可以查看 crontab 文件 crontab -l
* 编辑 crontab 文件 crontab -e 2,at 命令 at 命令的基本形式: at [-f script] [-m -l -r] [time] [date] -f script 是所要提交的脚本或命令
-l 列出当前所有等待运行的作业
-r 清除作业。为了清除某个作业,还要提供相应的作业标识(ID) * 使用 at 提交命令或者脚本 - 命令行方式
- 提交 shell 脚本 eg: at 3:00pm tomorrow -f /app/bin/db_tables.sh eg: echo find /etc -name "passwd" -print | at now +1 minutes * 列出所提交的作业 at -l
* crontab user job file scheduler
* at at 命令可以指定在一个指定的时间约性特殊的作业。
1,cron 和 crontab cron 是系统主要的调度进程,可以在无需人工干预的情况下运行作业。有一个叫做 crontab 的命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个 crontab 文件来保存调度信息。可以使用它运行任意一个 shell 脚本或某个命令,每小时运行一次,或一周三次,这完全取决于你。每一个用户都可以有自己的 crontab 文件,但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。系统管理员是通过 cron.deny 和 cron.allow 这两个文件来禁止或允许用户拥有自己的 crontab 文件。 * crontab 的域 crontab 文件每个条目中各个域的意义和格式如下: - 1 分钟 1 ~ 59
- 2 小时 1 ~ 23 (0 表示子夜)
- 3 天 1 ~ 31
- 4 月 1 ~ 12
- 5 星期 0 ~ 6 (0 表示星期天)
- 6 需要运行的命令 下面是 crontab 的格式: 分钟 小时 日 月 星期 要运行的命令 其他一些符号说明: - 可以使用横杠表示一个时间范围,例如: 1-5
- 可以使用逗号分割需要运行昨天的时间
- 可以使用星号表示某个连续的时间段
- 注释行以 # 开头 * crontab 事例 eg: 每晚的 21:30 运行 /apps/bin 目录下的 cleanup.sh 30 21 * * * /apps/bin/cleanup.sh eg: 每月 1、10、22 日的 4:45 运行 /apps/bin 目录下的 backup.sh 45 4 1,10,22 * * /apps/bin/backup.sh eg: 每周六、周日的 1:10 运行一个 find 命令 10 1 * * 6,0 /bin/find -name "core" -exec rm {} \; eg: 在每天18:00至23:00之间每隔30分钟运行 /apps/bin 目录下的 dbcheck.sh 0,30 18-23 * * * /apps/bin/dbcheck.sh 注意:当使用 crontab 运行 shell 脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。记住,既然是用户向 cron 提交了这些作业,就要向 cron 提供所需的全部环境。所以你要保证在 shell脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。 * crontab 命令选项 crontab [-e | -l | -r] user] [file] -e 编辑 crontab 文件
-l 列出 crontab 文件中的内容
-r 删除 crontab 文件 * 创建一个新的 crontab 文件 在向 cron 系统调度进程提交你的 crontab 文件之前,需要首先设置环境变量 EDITOR,然后 cron 据此来确定哪个编辑器编辑 crontab 文件。(当然 99.99% 的 unix 和 linux 用户可能都会使用 vi 的:)) 可以创建一个名称为 username_cron 的文件,然后编辑如下: 30 21 * * * /apps/bin/cleanup.sh
最后,提交这个创建的 crontab 文件 crontab bill_cron * 可以查看 crontab 文件 crontab -l
* 编辑 crontab 文件 crontab -e 2,at 命令 at 命令的基本形式: at [-f script] [-m -l -r] [time] [date] -f script 是所要提交的脚本或命令
-l 列出当前所有等待运行的作业
-r 清除作业。为了清除某个作业,还要提供相应的作业标识(ID) * 使用 at 提交命令或者脚本 - 命令行方式
- 提交 shell 脚本 eg: at 3:00pm tomorrow -f /app/bin/db_tables.sh eg: echo find /etc -name "passwd" -print | at now +1 minutes * 列出所提交的作业 at -l
相关阅读 更多 +