三、shell学习笔记-cron和crontab的使用

1、 cron和crontab

cron 系统调度进程。可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月 中的不同时段运行。
& 使用它在后台运行一个占用时间不长的进程。
Nohup 使用它在后台运行一个命令,即使在用户退出时也不受影响。
有一个叫做 crontab的命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个 crntab文件 来保存调度信息。可以使用它运行任意一个 shell脚本或某个命令,每小时运行一次,或一周 三次,这完全取决于你。每一个用户都可以有自己的 crontab文件,但在一个较大的系统中, 系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。系统管理员是通过 cron.deny和c ron.allow这两个文件来禁止或允许用户拥有自己的 crontab文件。
为了能够在特定的时间运行作业,需要了解 crontab文件每个条目中各个域的意义和格式。 下面就是这些域:

 第1列 分钟1~59 
 第2列 小时1~23(0表示子夜) 
 第3列 日1~31 
 第4列 月1~1 2 
 第5列 星期0~6(0表示星期天) 
 第6列 要运行的命令

下面是crontab的格式:
分< >时< >日< >月< >星期< >要运行的命令
在这些域中,可以用横杠 -来表示一个时间范围,例如你希望星期一至星期五运行某个作 业,那么可以在星期域使用 1 - 5来表示。还可以在这些域中使用逗号“,”,例如你希望星期一 和星期四运行某个作业,只需要使用 1 , 4来表示。可以用星号 *来表示连续的时间段。如果你 对某个表示时间的域没有特别的限定,也应该在该域填入 *。该文件的每一个条目必须含有 5 个时间域,而且每个域之间要用空格分隔。该文件中所有的注释行要在行首用 #来表示。
例:

30 21* * * /apps/bin/cleanup.sh

上面的例子表示每晚的21 : 30运行/ apps/bin目录下的cleanup . sh。

45 4 1,10,22 * * /apps/bin/backup.sh

上面的例子表示每月1、10、22日的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目录下的d bcheck.sh。

0 23 * * 6 /apps/bin/qtrend.sh

上面的例子表示每星期六的11 : 00 pm运行/apps/bin目录下的qtrend.sh。
当使用 crontab运行shell 脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。

1.2、 crontab命令选项

crontab命令的一般形式为:
crontab [-u user] -e -l -r
其中:
-u 用户名。
-e 编辑crontab文件。
-l 列出crontab文件中的内容。
-r 删除crontab文件。 如果使用自己的名字登录,就不用使用 - u选项,因为在执行 crontb命令时,该命令能够知道当前的用户。
可以使用&命令把作业放到后台执行。 该命令的一般形式为: 命令 &
为什么要在后台执行命令?因为当在后台执行命令时,可以继续使用你的终端做其他事 情。适合在后台运行的命令有 find、费时的打印作业、费时的排序及一些 shell脚本。在后台运 行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用 nohup命令。该命令可以在你退出帐户之后继续运行相应的进程。 Nohu p就是不挂起的意思( no hang up)。 该命令的一般形式为:

nohup command &

版权声明:本文为weixin_42118728原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>