我是初学者,一直在网上寻找解决方案,但没有成功。
获取 URL:https://site.com/folder/cron.php/
我最近租用了服务器。操作系统 Ubuntu 18.04.5 LTS,Plesk Obsidian 版本 18.0.32 我有一个网站。
该公司不提供支持。
我已经安排了域任务:
获取 URL:https://site.com/folder/cron.php
此 URL(php 脚本)在浏览器中完美运行。
但是当我使用计划任务时,出现错误:
Task "https://site.com/folder/cron.php" completed with error in 0 seconds, output:
Url 'https://site.com/folder/cron.php' fetched
Status: 404
Output:
File not found.
该文件位于:
/var/www/vhosts/site.com/httpdocs/folder/cron.php
(相同:未找到文件)
我尝试了网上找到的几个命令,但也找不到该文件(文件未找到)
在服务器 crontab 文件中,我有:
A) 在站点文件中:/var/spool/cron/crontabs
,我没有路径。我认为这不正常,对吧?
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/opt/psa/tmp/sssY3Y4RF installed on Sun Jan 10 06:48:03 2021)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
MAILTO=""
SHELL="/bin/sh"
10 * * * * /usr/bin/php -f '/var/www/vhosts/site.com/httpdocs/_cron/cron.php'
B)在 root: 的文件中/etc/crontab
,我有:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
我在网上看到说在根文件中添加命令是好的。
有人能帮助我吗?
附言:我没有经验。我在网上搜索了一下,找到了更多信息。我是一名工业程序员,但我仍然从大学学到一些东西。
多谢
答案1
我建议的第一件事是绝不手动编辑计算机上的各种 crontab 文件,除非你知道确切地你在做什么。根本没有必要。这也是为什么 中的第一行/var/spool/cron/crontabs
是DO NOT EDIT THIS FILE
。
其次,10 * * * *
您拥有的意思是“每小时整点 10 分钟运行一次”。
您需要执行以下操作:
- 将 crontab 文件恢复到原来的状态
- 用于
crontab
设置新的计划活动:sudo crontab -e
笔记: 您可能会被要求输入管理员密码 - 在文件末尾添加以下行:
*/10 * * * * /usr/bin/wget --no-check-certificate -q "https://site.com/folder/cron.php" -O /root/cronout.txt
事情是这样的:
元素 | 行动 |
---|---|
*/10 * * * * |
每 10 分钟、每小时、每天、每周、每月运行一次 |
/usr/bin/wget |
用于wget 调用PHP 文件 |
--no-check-certificate |
忽略 SSL 证书检查(可选) |
-q |
“安静地”运行,不输出所有常见的状态信息 |
URL | 要获得什么 |
-O |
输出到文件 |
/root/cronout.txt |
记录输出的文件。如果您不想保留最新的输出,可以将其替换/root/cronout.txt 为/dev/null |
这应该可以完成您需要它做的事情。
答案2
您好,感谢您的回答和帮助......
附言:也许可以帮助其他像我一样拥有自己的服务器的人。
我的操作系统是 Ubuntu 18.04.5 LTS 产品是 Plesk Obsidian 版本是 18.0.32
其他人可能有所不同。答案很简单,一旦你找到解决方案 :))
我的网站分配了 2 个 IP,但域名仅解析到 1 个 IP
我在 /etc/hosts 中禁用了记录:#2a01:4f8:121:338::2 site.com site....
而且工作超级好
非常感谢并祝您有愉快的一天!