LINUX与UNIX Shell编程-------后台执行命令

• 设置crontab文件,并用它来提交作业。
• 使用at命令来提交作业。
• 在后台提交作业。
• 使用nohup命令提交作业。
名词解释:
系统调度进程。可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月
cron
中的不同时段运行。
At at 命令。使用它在一个特定的时间运行一些特殊的作业,或在晚一些的非负荷高峰时
间段或高峰负荷时间段运行。
& 使用它在后台运行一个占用时间不长的进程。
Nohup 使用它在后台运行一个命令,即使在用户退出时也不受影响。
cron和crontab
c r o n是系统主要的调度进程,可以在无需人工干预的情况下运行作业。有一个叫做
c r o n t a b的命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个 c r o n t a b文件
来保存调度信息。可以使用它运行任意一个 s h e l l脚本或某个命令,每小时运行一次,或一周
三次,这完全取决于你。每一个用户都可以有自己的 c r o n t a b文件,但在一个较大的系统中,
系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。系统管理员是通过
cron.deny和cron.allow这两个文件来禁止或允许用户拥有自己的 crontab文件。
3.1.1 crontab的域
为了能够在特定的时间运行作业,需要了解 c r o n t a b文件每个条目中各个域的意义和格式。
下面就是这些域:
第1列 分钟1~59
第2列 小时1~23(0表示子夜)
第3列 日1~31
第4列 月1~12
第5列 星期0~6(0表示星期天)
第6列 要运行的命令
下面是crontab的格式:
分<>时<>日<>月<>星期<>要运行的命令
其中<>表示空格。
C r o n t a b文件的一个条目是从左边读起的,第一列是分,最后一列是要运行的命令,它位
于星期的后面。
在这些域中,可以用横杠 -来表示一个时间范围,例如你希望星期一至星期五运行某个作
业,那么可以在星期域使用 1 - 5来表示。还可以在这些域中使用逗号“,” ,例如你希望星期一
和星期四运行某个作业,只需要使用 1 , 4来表示。可以用星号 *来表示连续的时间段。如果你
对某个表示时间的域没有特别的限定,也应该在该域填入 *。该文件的每一个条目必须含有 5
个时间域,而且每个域之间要用空格分隔。该文件中所有的注释行要在行首用 #来表示。
crontab条目举例
这里有crontab文件条目的一些例子:
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。
rontab命令选项
crontab命令的一般形式为:
Crontab [-u user] -e -l -r
其中:
-u 用户名。
-e 编辑crontab文件。
-l 列出crontab文件中的内容。
-r 删除crontab文件。
如果使用自己的名字登录,就不用使用 - u选项,因为在执行 c r o n t a b命令时,该命令能够知道当前的用户。
at命令
a t命令允许用户向 c r o n守护进程提交作业,使其在稍后的时间运行。这里稍后的时间可能
是指10min以后,也可能是指几天以后。如果你希望在一个月或更长的时间以后运行,最好还
是使用crontab文件。
at命令的基本形式为:
at [-f script] [-m -l -r] [time] [date]
其中,
-f script 是所要提交的脚本或命令。
-l 列出当前所有等待运行的作业。 atq命令具有相同的作用。
清除作业。为了清除某个作业,还要提供相应的作业标识( I D);有些 U N I X变体只
-r
接受atrm作为清除命令。
-m 作业完成后给用户发邮件。
time at命令的时间格式非常灵活;可以是 H、H H . H H M M、H H : M M或H : M,其中H和M
分别是小时和分钟。还可以使用 a.m.或p.m.。
日期格式可以是月份数或日期数,而且 at命令还能够识别诸如 today、tomorrow这样
date
的词。 如果你想提交若干行的命令,可以在 at命令后面跟上日期 /时间并回车。然后就进入了 at命
令提示符,这时只需逐条输入相应的命令,然后按‘ <CTRL-D>’退出
清除一个作业
清除作业的命令格式为:
或a
atrm [job no] t -r [job no]
要清除某个作业,首先要执行 at -l命令,以获取相应的作业标识,然后对该作业标识使用
at -r 命令,清除该作业。
nohup命令
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用
nohup命令。该命令可以在你退出帐户之后继续运行相应的进程。 Nohup就是不挂起的意思 (no
hang up)。
该命令的一般形式为:
nohup command &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值