linux 后台运行程序

1.cron和crontab
cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。crontab命令允许用户提交、编辑或删除相应的作业。
创建用户crontab文件:
  crontab文件的格式:分<>时<>日<>月<>星期<>要运行的命令
   星期0~6(0表示星期天),小时1~23(0表示子夜)
   其中<>表示空格,在这些域中,可以用横杠-来表示一个时间范围,例如你希望星期一至星期五运行某个作业,那么可以在星期域使用1-5来表示。还可以在这些域中使用逗号“,”,例如你希望星期一和星期四运行某个作业,只需要使用1 , 4来表示。可以用星号*来表示连续的时间段。如果你对某个表示时间的域没有特别的限定,也应该在该域填入*。该文件的每一个条目必须含有5个时间域,而且每个域之间要用空格分隔。该文件中所有的注释行要在行首用#来表示。
   crontab文件条目举例:   10 1 * * 6,0 /bin/find -name "core" -exec rm {} ;
                   上面的例子表示每周六、周日的1:10运行一个find命令。
提交用户crontab文件: crontab crontab-userfile
  实际上是将crontab-userfile中的条目写入/var/spool/cron/文件中。
编辑cron文件:  Crontab [-u user] -e -l -r
  -u 用户名, -e 编辑crontab文件, -l 列出crontab文件中的内容, -r 删除crontab文件。

2.at  允许用户向cron守护进程提交作业,使其在指定的稍后时间运行。
一旦一个作业被提交,at命令将会保留所有当前的环境变量,包括路径,不象crontab,只提供缺省的环境。该作业的所有输出都将以电子邮件的形式发送给用户,除非你对其输出进行了重定向,绝大多数情况下是重定向到某个文件中。
at [-f script-filename] [-m -l ][ -r jobnum] [time] [date]
  -f script-filename  :是所要提交的脚本或命令。
  -l   :列出当前所有等待运行的作业。atq命令具有相同的作用。
  -r jobnum  :清除作业,要提供相应的作业标识(ID);有些UNIX变体只接受atrm作为清除命令。
  -m   :作业完成后给用户发邮件。
  time  :at命令的时间格式非常灵活;可以是H、HH.MM、HH:MM或H:M等。还可以使用a.m .或p.m .。
  date  :日期格式可以是月份数或日期数,而且at命令还能够识别诸如today、tomorrow这样的词。

3.&命令  把作业放到后台执行
该命令的一般形式为:command &
作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:   command >out.file 2>&1 &
  eg: find /etc -name "srm.conf" -print >find.dt 2>&1 &

4.nohup   nohup命令可以在你退出帐户之后继续运行相应的进程
该命令的一般形式为:nohup command &
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件: nohup command > myout.file 2>&1 &

posted @ 2007-04-25 15:35  曹立松  阅读(832)  评论(0编辑  收藏  举报