问题:
由于脚本需要每天特定时间执行PHP文件。故开始使用crontab命令
解决方式:
新建shell脚本文件(execute_php.sh)。执行PHP文件并将输出结果到log文件中:(tip:我这边文件是绝对文件目录)
sudo -u www-data php php_filename >> logs/cron-`date +%Y-%m-%d`.txt
找到crontab的文件目录(我的文件目录是在 /var/spool/cron/crontabs,我这边该目录是需要root权限才能打开,所以sudo su下。但是添加不是root的用户文件下时注意退出临时root。因为crontab是没有指定用户时默认是在修改当前用户的文件)。也可以使用crontab -e直接打开
在该目录下找到以当前自己用户命令的文件。直接打开
在该文件添加:
*/10 * * * * /Code/execute_php.sh(每十分钟执行该脚本)
然后退出来。输入$ crontab userName userName是指你将*/10 * * * * /Code/execute_php.sh放入那个文件的文件名称。
简单说下crontab命令:
1.概念:
crontab 主要是周期性的执行命令
2.参数:
-u user:用来设定某个用户的crontab服务
-l 显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-e编辑某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
设定周期性:
* * * * *
minute hourday monthweek command
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
还可以包含特殊字符:
“*”:代表所有可能的值
“,”:可以用逗号隔开的值指定一个列表范围 就是枚举 如:"1,4,6,7"
“-”:可以用整数之间的中杠表示一个整数范围如:"2-4"
“/”:可以用正斜线指定时间的间隔频率,如:"0-23/3"表示每3小时执行一次。