Linux中对于一些大任务需要在后台运行,否则会一直占用屏幕,防碍使用者使用终端去完成其它的任务。其中会提供如下几个命令来进行后台执行:
1、 设置crontab文件,并用它来提交作业;其中cron 系统调度进程,可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。
2、 使用at命令来提交作业;使用它在一个特定时间运行一些特殊的作业,或在晚些的非负荷高峰时段或高峰时段运行。
3、 & 在后台提交作业;使用它在后台运行一个占用时间不长的进程。
4、 使用nohup命令提交作业。使用它可以在后台运行一个命令,即使在用户退出时也不受影响。
Crontab的域
第1列 分钟 1~59
第2列 小时 0~23(0表示子夜)
第3列 天 1~31
第4列 月1~12
第5列 星期 0~6 (0表示星期天)
第6列 要运行的命令
如下格式:分 时 日 月 星期 要运行的命令。它是从左边读起。用“-”来表示一个时间范围,如在第5列中1-5表示周一到周五。采用“,”表示希望的某些值,如第5列中的1,4表示星期一和星期四。采用“*”表示连续的时间段。
如:45 4 1,10,22 * * /apps/bin/backup.sh表示每月的1、10、22日的4:45去执行/apps/bin/backup.sh脚本。
0, 30 18-23 * * * /apps/bin/dbcheck.sh表示每天的18:00-23:00之间每30分钟运行/apps/bin/dbcheck.sh脚本。
Crontab命令的一般形式:
Crontab [-u user] -e –l –r
-u 表示用户名
-e 编辑crontab文件
-l 列出crontab文件中的内容
-r 删除crontab文件。
At命令
At命令允许用户向cron守护进程提交作业,使其在稍后的时间运行。这个稍后可能是指几分钟或几天以后,若希望在一个月或更长时间运行,则建议采用crontab命令。
At命令的基本形式为:
at [-f script] [-m -l -r] [time] [date]
-f script 表示所要提交的脚本或命令
-l 列出当前所有等待运行的作业,与atq命令等价
-r 清除作业, 与atrm的命令等价
-m 作业完成后给用户发邮件
Time at命令的时间格式,非常灵活,可以是H、HH.mm等其中H为小时,M为分钟。也可以采用a.m.和p.m.
Date 日期格式可以是月份数或日期数,而且at命令可以识别如today、tomorrow等这样的词。
$at 3.00 pm tomorrow –f /apps/bin/db_table.sh
表示明天下午3:00去执行/apps/bin/db_table.sh脚本
$at –l
查看已经提交的所有的后台作业
$ at –r job 3 或 atrm job 3
会清除job 3作业
&命令
可以采用该&命令将要运行的作业推送到后台执行,其命令的形式为:command &。
$ comm.and > out.file 2 > &1 &
将该命令执行后的结果重定向到out.file中,并将该命令产生的错误定向到标准输出,同时将该命令推送至后台运行。
nohup命令
该命令可以在你退出帐户之后继续运行相应的进程,它的意思是(no hang up)。
命令形式:nohup comm.and &..
若使nohup命令提交作业时,在缺少情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非指定了输出文件。
$ nohup comm.and > myout.file 2 > &1
该命令会在执行完后将结果重定向至myout.file中,同时将标准错误输出至标准输出。
$ nohup comm.and 2 > &1
该命令会在执行完后将结果重定向至nohup.out中,同时将标准错误输出至标准输出。
采用nohup还可以将几个命令组织在一个shell脚本中一起提交并执行。