linux CronJob 教程 定时任务

Cron 是UNIX, SOLARIS,LINUX下的一个十分有用的工具。通过Cron脚本能使计划任务定期地在系统后台自动运行。这种计划任务在UNIX, SOLARIS, LINUX下术语为cron jobs。 Crontab (CRON 表)则是用来记录在特定时间运行的CRON的一个脚本文件。

Crontab归结为以下几点特性:

1、Crontab约束
2、Crontab命令
3、Crontab文件语法
4、 Crontab示例
5、Crontab环境设置
6、邮件
7、日志文件
8、其它
 

1、Crontab约束

当用户名记录在文件/usr/lib/cron/cron.allow时,该用户的crontab有效。
当/usr/lib/cron /cron.allow 文件不存在时,用户名没被记录在/usr/lib/cron/cron.deny文件中,该用户的crontab也有效。
当只存在/usr/lib /cron/cron.deny且为空时,所有的用户都可使用crontab。
当前两个文件都不存在时,只有root用户可以使用crontab。 Deny或allow记录以每行一个用户名的形式记录信息。

2、Crontab 命令

export EDITOR=vi ;为crontab文件指定一个编辑器。 
crontab  -e  编辑该用户的crontab,当指定crontab  不存在时新建。  
crontab  -l  列出该用户的crontab。  
crontab  -r  删除该用户的crontab。  
crontab  -u<用户名称>  指定要设定crontab的用户名称。
crontab –v 显示上一次编辑的时间(只在某些操作系统上可用)

3、Crontab 文件

Crontab语法一个crontab文件用五个段来定义:天,日期和时间,和一个要定期执行的命令代码。
*     *   *   *    *  command to be executed
-     -    -    -    -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0) //星期
|     |     |     +------- month (1 - 12) //
|     |     +--------- day of month (1 - 31) //
|     +----------- hour (0 - 23) //
+------------- min (0 - 59) //

所有的值都必须在相应的范围之内,否则视为无效。

在填值区域内可以是*也可以是以”,”分隔的一组值。

值可以是一个数据也可以是用连接符连起来的两个数(表示范围)。

注:日期的格式可以是星期,也可以是一个月中的天。假如两个都有值,则在这两个时间都会执行。

4、Crontab 实例 

下面是crontab文件中的一行,意思是在每天下午6:30中删除临时文件(临时文件存放在/home/someuser/tmp)。
30     18     *     *     *         rm /home/someuser/tmp/*

 

min
hour
day/month
month
day/week
 Execution time
30
0
1
1,6,12
*
-- 00:30 Hrs  on 1st of Jan, June & Dec.
 
0
20
*
10
1-5
--8.00 PM every weekday (Mon-Fri) only in Oct.
 
0
0
1,10,15
*
*
-- midnight on 1st ,10th & 15th of month
 
5,10
0
10
*
1
-- At 12.05,12.10 every Monday & on 10th of every month

 

注:要是无意间键入了没带参数的crontab 命令,别Control-d退出,这样会删掉所有的cronjob。 应该Control-c退出.
5、Crontab 环境设置
Cron其实是在shell(/usr/bin/sh).后台引用用户程序的命令。
Cron默认的shell环境是:
HOME=user's-home-directory
LOGNAME=user's-login-id
PATH=/usr/bin:/usr/sbin:.
SHELL=/usr/bin/sh  
用户希望自己的配置文件在表或者脚本的入口直接执行。
6、禁用邮件
默认的cronjobs在执行任务时会给用户发一封邮件。
如果您不需要的话可以通过以下命令关闭。
>/dev/null 2>&1

例如:

* * * * * root php /var/www/deployer/artisan schedule:run 1>> /dev/null 2>&1
7、生成日志文件保存cronjobs日志只需作如下设置就可以
30 18  *    *   *    rm /home/someuser/tmp/* > /home/someuser/cronlogs/clean_tmp_dir.log

/home/someuser/cronlogs/clean_tmp_dir.log 为日志文件保存的绝对路径

 
 
 
 

转载于:https://www.cnblogs.com/love-snow/articles/7364888.html

你可能感兴趣的:(shell,php,操作系统)