在
Unix
中也有计划任务,下面是详细介绍:
cron 系统调度进程。可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。 ( 相当有用的一个命令,功能最强大。 )
At at 命令。使用它在一个特定的时间运行一些特殊的作业,或在晚一些的非负荷高峰时间段或高峰负荷时间段运行。
& 使用它在后台运行一个占用时间不长的进程。 ( 大家应该经常用吧。 )
Nohup 使用它在后台运行一个命令,即使在用户退出 ( 注意这点 ) 时也不受影响。
一 .crontab 命令
crontab 命令的一般形式为:
crontab [-u user] -e -l -r
其中:
-u 用户名。如果使用自己的名字登录,就不用使用 -u 选项。
-e 编辑 crontab 文件。不带 -u 选项可以编辑自己的 crontab 文件。
-l 列出 crontab 文件中的内容。不带 -u 选项可以列出自己的 crontab 文件的内容。
-r 删除 crontab 文件。小心使用哦。
crontab 文件 ( 各个用户的这个文件放在 /var/spool/cron/crontab/ 目录中,以用户名来区别。 )
每个条目中各个域的意义和格式如下。
下面就是这些域:
第 1 列分钟 1 ~ 59
第 2 列小时 1 ~ 23 ( 0 表示子夜)
第 3 列日 1 ~ 31
第 4 列月 1 ~ 12
第 5 列星期 0 ~ 6 ( 0 表示星期天)
第 6 列要运行的命令
例子 ( 注意:提交此命令会覆盖原来的文件,使用之前请做好备份。 ) :
30 21* * * /apps/bin/cleanup.sh
上面的例子表示每晚的 21:30 运行 /apps/bin 目录下的 cleanup.sh 。
45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月 1 、 10 、 22 日的 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:00 至 23:00 之间每隔 30 分钟运行 /apps/bin 目录下的 dbcheck .sh 。
0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的 11:00pm 运行 /apps/bin 目录下的 qtrend.sh 。
既然是用户向 cron 提交了这些作业,就要向 cron 提供所需的全部环境。要保证在 shell 脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。
二 .at 命令
at 命令允许用户向 cron 守护进程提交作业,使其在稍后的时间运行。如果你希望在一个月或更长的时间以后运行,最好还是使用 crontab 文件。
at 命令的基本形式为:
at [-f script ] [-m -l -r] [time] [date]
其中,
-f script 是所要提交的脚本或命令。
-l 列出当前所有等待运行的作业。 atq 命令具有相同的作用。
-r 清除作业。为了清除某个作业,还要提供相应的作业标识 (ID) ;有些 UNIX 变体只接受 atrm 作为清除命令。
-m 作业完成后给用户发邮件。
time at 命令的时间格式非常灵活;可以是 H 、 HH.HHMM 、 HH:MM 或 H:M ,其中 H 和 M 分别是小时和分钟。还可以使用 a.m. 或 p.m. 。
date 日期格式可以是月份数或日期数,而且 at 命令还能够识别诸如 today 、 tomorrow 这样
的词。
使用 at 命令提交作业有几种不同的形式,可以通过命令行方式,也可以使用 at 命令提示符。
三 .& 命令
该命令的一般形式为:
命令 &
注意:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。
四 .nohup 命令
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用
nohup 命令。该命令可以在你退出帐户之后继续运行相应的进程。
该命令的一般形式为:
nohup command &
后台运行命令对于每天都运行的机器很有用,特别是对于我们这些懒的系统维护人员,可以减少我们的工作量,也可以避免某天忘记做什么重要的事情了。
cron 系统调度进程。可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。 ( 相当有用的一个命令,功能最强大。 )
At at 命令。使用它在一个特定的时间运行一些特殊的作业,或在晚一些的非负荷高峰时间段或高峰负荷时间段运行。
& 使用它在后台运行一个占用时间不长的进程。 ( 大家应该经常用吧。 )
Nohup 使用它在后台运行一个命令,即使在用户退出 ( 注意这点 ) 时也不受影响。
一 .crontab 命令
crontab 命令的一般形式为:
crontab [-u user] -e -l -r
其中:
-u 用户名。如果使用自己的名字登录,就不用使用 -u 选项。
-e 编辑 crontab 文件。不带 -u 选项可以编辑自己的 crontab 文件。
-l 列出 crontab 文件中的内容。不带 -u 选项可以列出自己的 crontab 文件的内容。
-r 删除 crontab 文件。小心使用哦。
crontab 文件 ( 各个用户的这个文件放在 /var/spool/cron/crontab/ 目录中,以用户名来区别。 )
每个条目中各个域的意义和格式如下。
下面就是这些域:
第 1 列分钟 1 ~ 59
第 2 列小时 1 ~ 23 ( 0 表示子夜)
第 3 列日 1 ~ 31
第 4 列月 1 ~ 12
第 5 列星期 0 ~ 6 ( 0 表示星期天)
第 6 列要运行的命令
例子 ( 注意:提交此命令会覆盖原来的文件,使用之前请做好备份。 ) :
30 21* * * /apps/bin/cleanup.sh
上面的例子表示每晚的 21:30 运行 /apps/bin 目录下的 cleanup.sh 。
45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月 1 、 10 、 22 日的 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:00 至 23:00 之间每隔 30 分钟运行 /apps/bin 目录下的 dbcheck .sh 。
0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的 11:00pm 运行 /apps/bin 目录下的 qtrend.sh 。
既然是用户向 cron 提交了这些作业,就要向 cron 提供所需的全部环境。要保证在 shell 脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。
二 .at 命令
at 命令允许用户向 cron 守护进程提交作业,使其在稍后的时间运行。如果你希望在一个月或更长的时间以后运行,最好还是使用 crontab 文件。
at 命令的基本形式为:
at [-f script ] [-m -l -r] [time] [date]
其中,
-f script 是所要提交的脚本或命令。
-l 列出当前所有等待运行的作业。 atq 命令具有相同的作用。
-r 清除作业。为了清除某个作业,还要提供相应的作业标识 (ID) ;有些 UNIX 变体只接受 atrm 作为清除命令。
-m 作业完成后给用户发邮件。
time at 命令的时间格式非常灵活;可以是 H 、 HH.HHMM 、 HH:MM 或 H:M ,其中 H 和 M 分别是小时和分钟。还可以使用 a.m. 或 p.m. 。
date 日期格式可以是月份数或日期数,而且 at 命令还能够识别诸如 today 、 tomorrow 这样
的词。
使用 at 命令提交作业有几种不同的形式,可以通过命令行方式,也可以使用 at 命令提示符。
三 .& 命令
该命令的一般形式为:
命令 &
注意:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。
四 .nohup 命令
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用
nohup 命令。该命令可以在你退出帐户之后继续运行相应的进程。
该命令的一般形式为:
nohup command &
后台运行命令对于每天都运行的机器很有用,特别是对于我们这些懒的系统维护人员,可以减少我们的工作量,也可以避免某天忘记做什么重要的事情了。
FAQ:
在用crontab -e 时遇到了问题
用crontab -e 编辑要定时启动的事件后,
如何保存退出??
退出后还需做什么工作才能够使用??
用crontab -e 编辑要定时启动的事件后,
如何保存退出??
退出后还需做什么工作才能够使用??
回答:
if your editor is vi .then you can use -e easily.But if default editor is not vi.you should first set it in this way
#EDITOR=vi;export EDITOR
if your editor is vi .then you can use -e easily.But if default editor is not vi.you should first set it in this way
#EDITOR=vi;export EDITOR
写在你的PROFILE文件里面也可以的
脚本不会自动执行,请问哪位知道问题出在哪里?或者还有更好的方法,目的就是要在UNIXWARE7下面让系统自动的进行ORACLE数据备份(逻辑导出)
以下是创建定期任务备份的过程
$ crontab -r
$ crontab -l
UX:crontab: ERROR: Cannot open crontab file: No such file or directory
$ crontab
45 15 * * * /oracle/bakscript/autobak.sh #输入完成后按CTRL+D键退出
UX:crontab: WARNING: Commands will be executed using /usr/bin/sh
$ crontab -l
45 15 * * * /oracle/bakscript/autobak.sh
#!/usr/bin/sh
rq=` date +"%m%d" `
exp scounix/scounix file=/oracle/smart$rq.dmp tables=smart_setup
# echo smart$rq
$
直接运行脚本是没有问题的。
$ /oracle/bakscript/autobak.sh
Export: Release 8.1.6.0.0 - Production on 星期五 10月 29 15:44:43 2004
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Connected to: Oracle8i Release 8.1.6.0.0 - Production
JServer Release 8.1.6.0.0 - Production
Export done in ZHS16GBK character set and ZHS16GBK NCHAR character set
About to export specified tables via Conventional Path ...
. . exporting table SMART_SETUP 34 rows exported
Export terminated successfully without warnings.
$
以下是创建定期任务备份的过程
$ crontab -r
$ crontab -l
UX:crontab: ERROR: Cannot open crontab file: No such file or directory
$ crontab
45 15 * * * /oracle/bakscript/autobak.sh #输入完成后按CTRL+D键退出
UX:crontab: WARNING: Commands will be executed using /usr/bin/sh
$ crontab -l
45 15 * * * /oracle/bakscript/autobak.sh
#!/usr/bin/sh
rq=` date +"%m%d" `
exp scounix/scounix file=/oracle/smart$rq.dmp tables=smart_setup
# echo smart$rq
$
直接运行脚本是没有问题的。
$ /oracle/bakscript/autobak.sh
Export: Release 8.1.6.0.0 - Production on 星期五 10月 29 15:44:43 2004
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Connected to: Oracle8i Release 8.1.6.0.0 - Production
JServer Release 8.1.6.0.0 - Production
Export done in ZHS16GBK character set and ZHS16GBK NCHAR character set
About to export specified tables via Conventional Path ...
. . exporting table SMART_SETUP 34 rows exported
Export terminated successfully without warnings.
$
回答:
autobak.sh 中缺少exp执行需要的ORACLE环境变量
crontab教程开天第1小节就讲环境变量需要自己去设置,
cronttab连PATH都不会设置,更不可能自动替你的程序设置你需要的环境变量,
系统不是神仙,它怎么知道你自己的程序需要用什么环境呢?
cronttab连PATH都不会设置,更不可能自动替你的程序设置你需要的环境变量,
系统不是神仙,它怎么知道你自己的程序需要用什么环境呢?