您的位置:首页 > 其它

UNIX后台执行命令

2011-03-22 15:33 267 查看
命令解释:
cron 系统调度进程,可以使用它在每天的非高峰负荷时间段运行作业
at at命令,使用它在一个特定的时间运行一些特殊的作业
& 使用它在后台运行一个占用时间不长的进程
nohup 使用它在后台运行一个命令,即使在用户退出时也不受影响

cron/crontab:
cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业
crontab的命令允许用户提交、编辑和删除相应的作业。每一个用户都有自己的crontab文件,系统管理员可以通过cron.deny和cron.allow这两个文件来禁止和允许用户拥有自己的crontab文件

crontab文件的格式: 分<>时<>日<>月<>星期<>要运行的命令
<>表示空格,日期可用-表示某个时间段, 用*表示任意条件,用“,”表示或条件
例:30 21 * * * /apps/test.sh 每晚21:30运行/apps/test.sh
45 4 1,10,22 * * /apps/test.sh 每月1、10、22日4:45运行/apps/test.sh
0,30 18-23 * * 6,0 /bin/find -name "core" -exec rm {} /;
每个星期六、日的18点到23点,每隔30分钟运行一次find并删除
每个命令都需要给出绝对路径,注意环境变量,cron不知道一些特殊的变量

crontab命令的格式:
crontab [-u user] -e -l -r
-u 用户名 -e 编辑crontab文件 -l 列出crontab文件中的内容 -r 删除crontab文件
创建一个新的crontab文件:
在考虑向cron进程提交一个crontab文件之前,首先要做的是设置环境变量EDITOR,因为99%的UNIX和LINUX用户都使用vi,因此可以编辑$HOME目录下的.profile或.bash_profile,加入一行:
EDITOR=vi; export EDITOR;
编辑文件<user>cron,内容为0,15,30,45 18-06 * * * /bin/echo `date` > /dev/console
表示每隔15分钟向控制台输出一次当前时间,这样系统崩溃的时候,可以通过文件看出来
然后使用 crontab usercron提交给cron进程,同时副本存放在/var/spool/cron目录中

at命令:
at命令会保留所有当前的环境变量,包括路径,不像crontab,只提供缺省的环境
通过/etc目录下的at.deny和at.allow文件来控制哪些用户可以使用at命令
命令格式: at [-f script] [-m -l -r] [time] [date]
-f script 是所要提交的脚本或命令
-l 列出当前所有等待运行的作业,atq命令具有相同的作用
-m 作业完成后给用户发送邮件
-r 清除作业,清除时需要提供作业标识(ID),有的系统使用atrm来清除
time at命令的时间格式非常灵活,可以是H、HH.HHMM、HH:MM或H:M,还可以使用a.m.或p.m.
date 日期格式可以是月份数或日期数,而且还能识别比如today,tomorrow这样的词

at命令的提交:
$at 21:10
at> find / -name "passwd" -print
at> <EOT> (这个<EOT>就是ctrl+D,表示退出)
warning: commands will be executed using /bin/sh
job 1 at 2005-01-01 21:10
提交的作业被分配了一个唯一的标识 job 1
at时间还可以是:at 6.45am May 12、at 11.10pm、at now + 1 hour、
at 9am tomorrow、at 15:00 May 24、at now + 10 minutes
如果是提交一个脚本,如: at 3.00pm tomorrow -f /apps/test.sh
还可以通过管道符,如:echo find /etc -name "passwd" -print |at now + 1 minutes
列出所有的at作业: at -l 并且可以在/var/spool/at/下找到这些作业文件
清除作业: atrm [job bo] 或 at -r [job no],如 at -r job 3

&命令:
使用这个命令可以解放出终端接着做别的事情,但是需要用户交互的程序就不能放在后台
格式: 程序/命令 & 注意标准输出一样会显示在屏幕上,可以使用重定向方法解决

nohup命令:
格式: nohup command & 这样在这个用户退出之后,进程一样会继续运行,不会中断
使用这个命令,缺省该作业的输出都会定向到一个名为nohup.out的文件中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: