1 后台执行命令

cron :系统调度进程。可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。
At at :命令。使用它在一个特定的时间运行一些特殊的作业,或在晚一些的非负荷高峰时间段或高峰负荷时间段运行。
&     :使用它在后台运行一个占用时间不长的进程。
Nohup :使用它在后台运行一个命令,即使在用户退出时也不受影响。


2 cron和crontab

cron 是系统主要的调度进程,可以在无需人工干预的情况下运行作业。
有个 crontab 命令允许用户提交、编辑或***相应的作业。
每一个用户都可以有一个 crontab 文件来保存调度信息。可以使用它运行任意一个shell脚本或某个命令,每小时运行一次,或一周三次,这完全取决于你。
每一个用户都可以有自己的 crontab 文件,但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。系统管理员是通过 cron.deny
和 cron.allow 这两个文件来禁止或允许用户拥有自己的 crontab文件。

crontab 文件条目 例子:
30 21* * * /apps/bin/cleanup.sh
上面的例子表示每晚的21:30 运行 /apps/bin目录下的 cleanup.sh。
45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月1、1 0、2 2日的 4:45 运行 /apps/bin目录下的backup.sh。
10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;
上面的例子表示每周六、周日的1:10运行一个find命令。
0,30 18-23 * * * /apps/bin/dbcheck.sh
上面的例子表示在每天 18:00至23:00之间每隔30分钟运行 /apps/bin目录下的 dbcheck.sh。
0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的11:00pm运行 /apps/bin目录下的 qtrend.sh。

上面例子中,每个命令都给出了绝对路径。当使用 crontab 运行 shell 脚本时,用户要给出脚本的绝对路径,设置相应的环境变量。记住,既然是用户向 cron提交了这些作业,就要向 cron 提供所需的全部环境。不要假定 cron 知道所需要的特殊环境,它其实并不知道。
所以要保证在 shell 脚本中提供所有必要的路径和环境变量,
除了一些自动设置的全局变量。
如果 cron 不能运行相应的脚本,用户将会收到一个邮件说明其中的原因。

2.3 创建一个新的 crontab 文件
在向 cron 进程提交一个 crontab 文件之前,首先要做的一件事情就是设置环境变量EDITOR。
cron 进程根据它来确定使用哪个编辑器编辑 crontab 文件。99% 的UNIX和LINUX用户使用vi,如果你也是这样,那么你就编辑 $HOME目录下的 .profile 文件,在其中加入这样一行:
EDITOR=vi; export EDITOR
然后保存并退出。
不妨创建一个名为 <user>cron 的文件,其中<user>是用户名,如lanseyokeycron。
首先创建一个s hell 文件如 time.sh
echo "Now time is:"
date
然后打开文件 lanseyokeucron 加入如下的内容:
# echo the date to the console every
# 15 minutes between 6am and 6pm on Sunday
0,15,30,45 06-18 * * 0 /lanseyokey/time.sh
保存并退出,确信前面5个域用空格分隔。
在上面的例子中,系统将每隔 15 分钟输出一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。

为了提交刚刚创建的 crontab 文件,可以把这个新创建的文件作为 cron 命令的参数:
$ crontab lanseyokeycron
现在该文件已经提交给 cron 进程,它将每隔 15 分钟运行一次。
同时,新创建文件的一个副本已经被放在 /var/spool/cron 目录中,文件名就是用户名(即,lanseyokey)。

---


注意:若是以lanseyokey用户名登录则不需使用 -u 选项,否则使用
$ crontab -u lanseyokey -l
可以使用这种方法在 $HOME 目录中对 crontab 文件做一备份:
$ crontab -l > $HOME/mycron



2.5 编辑 crontab 文件
如果希望添加、***或编辑 crontab 文件中的条目,而 EDITOR环境变量又设置为 vi,那么就可以用 vi 来编辑 crontab 文件,相应的命令为:
$ crontab -e
可以像使用 vi 编辑其他任何文件那样修改 crontab 文件并退出。如果修改了某些条目或添加了新的条目,那么在保存该文件时, cron 会对其进行必要的完整性检查。如果其中的某个域出现了超出允许范围的值,它会提示你。
在编辑 crontab 文件时,没准会加入新的条目。例如,加入下面的一条:
# echo greeting to user
0 06-18 * * * /bin/echo "Hello, Welcome to Linux"
保存并退出。最好在 crontab 文件的每一个条目之上加入一条注释,这样就可以知道它的功能、运行时间,更为重要的是,知道这是哪位用户的作业。
现在让我们使用前面讲过的crontab -l命令列出它的全部信息:



*** crontab 文件,可以用:
$ crontab -r
恢复丢失的 crontab 文件如果不小心误删了 crontab 文件,假设你在自己的 $HOME 目录下还有一个备份,那么可以将其拷贝到 /var/spool/cron/<username>,其中<username>是用户名。
如果由于权限问题无法完成拷贝,可以用:
$ crontab <filename>
其中,<filename> 是你在 $HOME 目录中副本的文件名。

建议在自己的 $HOME 目录中保存一个该文件的副本,因为r键紧挨在e键的右边,很容易误删。
有些系统文档建议不要直接编辑 crontab 文件,而是编辑该文件的一个副本,然后重新提交新的文件。有些 crontab 的变体有些怪异,所以在使用 crontab 命令时要格外小心。
如果遗漏了任何选项,crontab 可能会打开一个空文件,或者看起来像是个空文件,这时敲delete 键退出,不要按<Ctrl-D>,否则将丢失 crontab 文件。



-------

/etc/crontab 和 /var/spool/cron区别

1./var/spool/cron/这个目录是以账号来区分每个用户自己的执行计划

-rw-------. /var/spool/cron/root

-rw-------. /var/spool/cron/user1

-rw-------. /var/spool/cron/user2

格式:

*/1 * * * *  ls />>/opt/crontab-e 2>&1

2./etc/crontab系统执行计划,需要在五个*后面加上用户

格式:

*/1 * * * * root  ls />>/opt/crontab-e 2>&1

3.服务重启

3.1 /etc/init.d/crond restart

3.2 service crond restart


http://blog.sina.com.cn/s/blog_48ab118d0101hlr2.html

------