Shell-Ch3.后台执行命令
时间:2005-12-19 来源:jeromeecho
一.crontab
二.at
三.&命令
四.用PS查看进程
五.nohup命令
Ch3.后台执行命令
cron 是系统主要的调度进程,可以在无需人工干预的情况下运行作业.
一.crontab
crontab的命令允许用户提交,编辑或删除相应的作业.
每个用户都可以有一个crontab文件,但在一个较大统中系统管理员一般会禁止这些文件,而只在整个系统中保留一个这样的文件.管理员通过cron.deny,cron.allow这两个文件来禁止或允许用户拥有自己的crontab文件.
crontab的域
第1列分钟1~5 9
第2列小时1~2 3(0表示子夜)
第3列日1~3 1
第4列月1~1 2
第5列星期0~6(0表示星期天)
第6列要运行的命令
分< >时< >日< >月< >星期< >要运行的命令
*表示淌有特别的时间限定,也表示连续的时间段.
,多个列举时用来分隔.
-表示一个时间范围.
格式一定要全,没有的话用*补全.
命令域一定要给出命令或者程序的绝对路径,cron不知道环境.
crontab命令格式:
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文件。
如果使用自己的名字登录,就不用使用- u选项,因为在执行c r o n t a b命令时,该命令能够知道当前的用户。
编辑环境设置:
编辑$ H O M E目录下的. p r o f i l e文件,在其中加入这样一行:
EDITOR=vi; export EDITOR
创建文件 vi filename
提交:
crontab filename
提交后文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名.
恢复丢失时,可以copy副本也可以重新提交.
二.at
向cron守护进程提交作业,使其在稍后的时间运行.比如10分钟后,也可能是几天后.如果一个月或更长的时间,用crontab比较好.
一旦一个作业被提交, a t命令将会保留所有当前的环境变量,包括路径,不象c r o n t a b,
只提供缺省的环境。该作业的所有输出都将以电子邮件的形式发送给用户,除非你对其输出
进行了重定向,绝大多数情况下是重定向到某个文件中。
和c r o n t a b一样,根用户可以通过/ e t c目录下的a t . a l l o w和a t . d e n y文件来控制哪些用户可以可用,但一般没有crontab那样严格.
三.&命令
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这样的词
提交方式有两种:
命令行方式:一般用来提交shell脚本.使用-f选项.
命令提示符:一般用来提交若干行命令.
at后面跟上日期/时间并回车,就进入at命令提示符.然后输入要提交的命令,按CTRL-D退出就可以了.会生成一个唯一标识.
命令完成后,会将全部结果以邮件方式发送给我.
也可以用echo命令向at命令提交作业;
eg:echo find /ect -name "passwd" -print | at now +1 minute
四.用PS查看进程
格式:命令 &
把作业放到后台执行
后业执行的作业输出也会到屏幕上,这里要用到输出定向到某个文件中.
command > out.file 2>&1 &
PS
四.用PS查看进程
ps x|grep 进程号 或
ps -ef|grep
kill
格式:kill -signal [process_number]
五.nohup命令
nohup command &
挂起,退出帐号时也不结束.
默认会把该作业的所有输出都被重定向到一个名为nohup.out的文件中.除非另外指定了输出文件:
nohup command >myout.file 2 >&1
一次提交几个作业最好能够把它们写入一个shell脚本中,并用nohup命令来执行它.
写入后记得要给这个文件执行权限.
chmod 744 filename