ecstor的crontab配置 定时任务

时间:2022-11-01 08:07:49

在配置ecstore的crontab,前前后后折腾了将近两天,度娘了无数次,从等待执行到正在导出,一直没有成功过,其他有修改权限,更换账号,都没有成功,最后去看了处理导出的文档,才知道问题出在源码上面,真的是太迷信源码无错误了,下面把我个人的一些配置流程整理下:

1、配置linux的ftp,不会的请点击这里跳转。

2、配置好ftp后,测试linux环境的cron是否能被正常执行,从root用户开始

#root身份登陆
crontab
-uroot -e

#输入:每隔一分钟向test文件写入当前时间,保存退出
*/1 * * * * date>>~/test

#重启cron服务
service crond restart

#监视cron日志
tail -f /var/log/cron

#监视test变化
tail -f ~/test

如不能执行,确认cron服务是否安装和启动,具体方法就不多说了,自行找度娘吧。

3、确认 www 或者apache 用户可正常执行计划任务(自己新建一个账户用来操作也行,如果是新建账户,记得修改apache的配置文件,将李某的User和Group换成新建的账户和组,一般新建账户的时候组和账户是一样的名称,不会操作的可以点击这里

#root身份登陆
crontab
-uwww -e

#输入:每隔一分钟向test文件写入当前时间,保存退出
*/1 * * * * date>>~/test

#重启cron服务
service crond restart

#监视cron日志
tail -f /var/log/cron

#监视test变化
tail -f /home/www/test

注意:/home/www是新增用户设置的目录,如果www用户没有载入环境变量,命令前要加“. /etc/profile;/bin/sh”,即:. /etc/profile;/bin/sh date>>~/test。

4、修改www的用户配置, www用户的主目录默认为/dev/null,我这里改为/home/www,并赋于www用户读写权限。

赋于www用户读写权限

赋予root权限
方法:修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
www   ALL=(ALL)     NOPASSWD:ALL
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。

#更改用户主目录(执行前先确认www用户的UID,cat /etc/passwd)#需要先停止WEB服务,否则会提示www用户已登陆(usermod: user www is currently logged in

usermod
-d /home/www -u 1000 www

#启动web服务器,重新偿试第3步

5、修改www用户的任务配置文件(配置文件以用户名命名存放在 /var/spool/cron)

root权限下执行以下命令:crontab -u www -e

* * * * * /data/html/ecstore/script/queue/queue.sh /usr/bin/php >/dev/null
* * * * * /usr/bin/php data/html/ecstore/script/crontab/crontab.php >/dev/null

#重启cron服务,service crond restart
注:"www" 为web用户。

"/data/html/ecstore" 为ecstore的安装路径。

队列需要"proc_open"方法支持,如果队列全部阻塞,请检查服务器是否支持该方法。

"crontab.php"是php文件,写法是符合linux bash脚本语法的,如果没有配置php环境变量,需要用php应用程序(PHP_PATH\bin\php)来执行该文件。

注:当你用 tail -f /var/log/cron 发现任务在重复执行时,使用  ps aux |grep cron* 查看是有多个cron进程,如果有kill掉就可以了

   基本完工,就这么多了。在此之前,最好先以root手工执行/data/html/ecstore/script/queue/queue.sh,查看是否成功。