基本语法:
- crontab -l(查看)
- crontab -e(编辑)
- crontab -r(删除)
格式:
* * * * * 脚本命令
五颗星依次代表分、时、日、月、星期几
*代表通配所有的,最低设定时间为每分钟执行一次。
举个栗子:
每小时的第1分钟执行: 1 * * * * echo 1 > dingshi.txt
每分钟执行一次 :*/1 * * * * echo 1 > dingshi.txt
应用:每天2点半执行备份数据库php的命令,
- crontab -e 进入编辑
- 30 2 * * * /usr/local/mysql/bin/mysqldump -uroot -proot --database testdb > /root/testdb.sql
- 保存退出
应用:每一分钟执行某php脚本修改数据表
mysql> create table times(id int auto_increment primary key,time v archar(255));
mysql> select * from php.times;
+----+------------+
| id | time |
+----+------------+
1/在项目目录下创建一个dingshiqi.php文件
mysql_connect('127.0.0.1','root','root');
mysql_query('use php');
$sql = "insert into times values(null,".time().")";
mysql_query($sql);
2/crontab -e 进入编辑
*/1 * * * * /usr/local/php/bin/php /home/wwwroot/default/dingshiqi.php
3/保存退出
mysql> select * from times;
+----+------------+
| id | time |
+----+------------+
| 1 | 1528525358 |
| 2 | 1528525779 |
| 3 | 1528525828 |
注意:
设置php全局变量:ln -s /usr/local/php/bin/php /bin/php
这样php执行脚本直接 php 脚本
定时任务最好备份,如果不小心执行了crontab -r命令,查看/var/log/cron定时日志。
查看crontab命令帮助 man crontab
严谨的定时执行php脚本
1/cron.php
#!/usr/bin/env php
<?php
//开头为定义php的执行环境、目的是兼容操作系统和让程序具有可扩展
echo 'task'.time()."\n";
放入某文件夹 crontab
chown -R www:www /home/crontab //一般安全性考虑不使用root用户,指定用户执行
chmod -R 744 /home/crontab //修改文件的权限
2/用www用户配置定时任务
$> crontab -u www -e
*/ * * * * /usr/local/php/bin/php /home/cron.php > /dev/null //>/dev/null没有输出
*/ * * * * /usr/local/php/bin/php /home/cron.php > /home/demo.log //输出到日志文件
1)注意以www用户来执行时,log文件也需要改为www用户,并开启写与执行权限
2)一般不会这样输出,而是php代码记录日志(记录成功或者php脚本报错的信息等)
3/查看定时任务
crontab -l 默认root用户查看,一般用自己设定的用户来查看,crontab -u www -l
4/查看用户的定时任务配置文件
/var/spool/cron/用户名
修改任务时可以编辑这个文件
5/监测demo.log
$> tail -10 /home/demo.log
6/修改删除任务
crontab -u www -e //编辑
删除即可,/var/spool/cron/www 文件会自动改变
7/重启crontab
一般添加后自动生效 不需要重启
服务重启 sevice crond restart
/etc/init,d/。。 重启