您的位置:首页 > 运维架构 > Shell

《LINUX与UNIX_Shell编程指南》读书笔记第3章后台执行命令

2004-11-18 21:31 405 查看
本章
关键名词解释:
cron 系统调度进程。可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月
中的不同时段运行。
At at命令。使用它在一个特定的时间运行一些特殊的作业,或在晚一些的非负荷高峰时
间段或高峰负荷时间段运行。
& 使用它在后台运行一个占用时间不长的进程。
Nohup 使用它在后台运行一个命令,即使在用户退出时也不受影响。

crontab的域
第1列分钟1~5 9
第2列小时1~2 3(0表示子夜)
第3列日1~3 1
第4列月1~1 2
第5列星期0~6(0表示星期天)
第6列要运行的命令
下面是c r o n t a b的格式:
分< >时< >日< >月< >星期< >要运行的命令
其中< >表示空格。
C r o n t a b文件的一个条目是从左边读起的,第一列是分,最后一列是要运行的命令,它位
于星期的后面。
在这些域中,可以用横杠-来表示一个时间范围,例如你希望星期一至星期五运行某个作
业,那么可以在星期域使用1 - 5来表示。还可以在这些域中使用逗号“,”,例如你希望星期一
和星期四运行某个作业,只需要使用1 , 4来表示。可以用星号*来表示连续的时间段。如果你
对某个表示时间的域没有特别的限定,也应该在该域填入*。该文件的每一个条目必须含有5
个时间域,而且每个域之间要用空格分隔。该文件中所有的注释行要在行首用#来表示。
当使用c r o n t a b运行s h e l l脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。记住,既然是用户向c r o n提交了这些作业,就要向c r o n提供所需的全部环境。不要假定c r o n知道所需要的特殊环境,它其实并不知道。所以你要保证在s h e l l脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。

c r o n t a b命令的一般形式为:
Crontab [-u user] -e -l -r
其中:
-u 用户名。
-e 编辑c r o n t a b文件。
-l 列出c r o n t a b文件中的内容。
-r 删除c r o n t a b文件。

at命令
a t命令允许用户向c r o n守护进程提交作业,使其在稍后的时间运行。这里稍后的时间可能
是指1 0 m i n以后,也可能是指几天以后。如果你希望在一个月或更长的时间以后运行,最好还
是使用c r o n t a b文件。
一旦一个作业被提交, a t命令将会保留所有当前的环境变量,包括路径,不象c r o n t a b,
只提供缺省的环境。该作业的所有输出都将以电子邮件的形式发送给用户,除非你对其输出
进行了重定向,绝大多数情况下是重定向到某个文件中。

a t命令的基本形式为:
at [-f script] [-m -l -r] [time] [date]
其中,
-f script 是所要提交的脚本或命令。
-l 列出当前所有等待运行的作业。a t q命令具有相同的作用。
-r 清除作业。为了清除某个作业,还要提供相应的作业标识( I D);有些U N I X变体只
接受a t r m作为清除命令。
-m 作业完成后给用户发邮件。
time at命令的时间格式非常灵活;可以是H、H H . H H M M、H H : M M或H : M,其中H和M
分别是小时和分钟。还可以使用a . m .或p . m .。
date 日期格式可以是月份数或日期数,而且a t命令还能够识别诸如t o d a y、t o m o r r o w这样
的词。
使用a t命令提交作业有几种不同的形式,命令行方式,a t命令提示符。一般来说在提交若干行的系统命令时,我使用a t命令提示符方式,而在提交s h e l l脚本时,使用命令行方式。如果你想提交若干行的命令,可以在a t命令后面跟上日期/时间并回车。然后就进入了a t命
令提示符,这时只需逐条输入相应的命令,然后按‘ < C T R L - D >’退出。

3 &命令
当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。
第3章后台执行命令27
下载
可以使用&命令把作业放到后台执行。
该命令的一般形式为:
命令&
为什么要在后台执行命令?因为当在后台执行命令时,可以继续使用你的终端做其他事情。适合在后台运行的命令有f i n d、费时的打印作业、费时的排序及一些s h e l l脚本。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那傻
等。
不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:
command >out.file 2>&1 &
在上面的例子中,所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。

3.3.2 用ps命令查看进程
用p s命令和g r e p命令列出这个进程
kill 杀死进程

3.4 nohup命令
如果你正在运行一个进
h u p命令。该命令可以在你
hang up)。
该命令的一般形式为:
nohup command &

创建一个定时清理日志文件或完成其他特殊工作的脚本,这样只要提交一次,就可以每
天晚上运行,而且无需你干预,只要看看相应的脚本日志就可以了。C r o n和其他工具可以使
系统管理任务变得更轻松。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: