当前位置: 首页 > 面试题库 >

cronjob无法执行独立运行的脚本

温嘉赐
2023-03-14
问题内容

我在中有我的php脚本文件/var/www/html/dbsync/index.php。何时cd /var/www/html/dbsync/运行,php index.php它运行完美。

我想通过sh文件调用PHP文件,SH文件的位置如下

/var/www/html/dbsync/dbsync.sh

这是dbsync.sh文件的内容是:

/usr/bin/php /var/www/html/dbsync/index.php >> /var/www/html/dbsync/myscript.log 2>&1 -q -f

当我cd /var/www/html/dbsync/运行时,./dbsync.sh它也可以完美运行。

现在,如果我按如下所示设置crontab:

1 * * * * /var/www/html/dbsync/dbsync.sh /var/www/html/dbsync

但是,此crontab无法正常工作。

有什么事吗


问题答案:

从注释中可以看出,问题在于您没有定义应使用哪个程序来执行脚本。考虑到cronjob是在很小的环境中执行的;在那里,没有什么可以假设的。这就是为什么我们定义完整路径等的原因。

因此,您需要说些类似的话:

1 * * * * /bin/sh /var/www/html/dbsync/dbsync.sh /var/www/html/dbsync
#         ^^^^^^^

/bin/sh 是您要用来执行脚本的二进制文件。

否则,您可以设置脚本的执行许可权,并添加一个shell脚本标头,使用什么解释器:

#!/bin/sh

如果这样做,则不需要添加二进制文件的路径。

从对cron作业的常见问题进行故障排除:

使用相对路径。如果您的cron作业正在执行某种脚本,则必须确保仅在该脚本内使用绝对路径。例如,如果您的脚本位于/path/to/script.php,并且您试图在同一目录中打开一个名为file.php的文件,则不能使用相对路径,例如fopen(file.php)。必须从其绝对路径调用该文件,如下所示:fopen(/path/to/file.php)。这是因为cron作业不一定从脚本所在的目录运行,因此必须专门调用所有路径。

另外,我知道您想每分钟运行一次。如果是这样,1 * * * *则不会。Intead,它将在每小时的第一分钟开始运行。因此,如果您想每分钟运行一次,请说* * * * *



 类似资料:
  • 安装Spark独立模式集群 安装Spark独立模式,你只需要将Spark的编译版本简单的放到集群的每个节点。你可以获得每个稳定版本的预编译版本,也可以自己编译。 手动启动集群 你能够通过下面的方式启动独立的master服务器。 ./sbin/start-master.sh 一旦启动,master将会为自己打印出spark://HOST:PORT URL,你能够用它连接到workers或者作为"m

  • 我正在尝试在Ubuntu上以独立的方式运行Apache地图集 - 这意味着不必设置Solr和/或HBase。我所做的(根据文档:http://atlas.apache.org/0.8.1/InstallationSteps.html)是克隆Git存储库,使用mbadded的HBase和dSolr构建maven项目: 解压缩了 resuting tar.gz 文件并执行了 bin/atlas_sta

  • 我现在不知道如何写一个合适的方法来测试这种行为。请不要投反对票... 我现在有一个java类负责处理和向多个数据库添加数据。每个数据库保存相同的数据,但处理方式不同(例如,使用不同的插值速率进行插值)。 所以我运行程序(点击绿色矩形),修改参数(插值率)并运行程序。所以我有两个进程运行(因为大约。这就是为什么我不想冒任何中断的风险,担心数据库被搞砸了)。 我的问题是:这个修改是否适用于已经运行的进

  • 问题内容: 我通过键入crontab -e在ubuntu环境中为root用户设置了cronjob 但是cronjon不会运行。我已经尝试检查cronjob是否正在使用 pgrep cron 并给出了进程ID3033。shell脚本调用了python文件,并用于发送电子邮件。可以运行python文件。没有错误,但cron不运行。daily.sh文件中包含以下代码。 问题答案: WTF ?! 我的cr

  • 问题内容: 我想自动化一个相当简单的任务。为此,我编写了一个小的PHP脚本,该脚本使用PHP-CLI从命令行运行。现在,我想将此脚本移交给某人,但我不想: 放弃源代码 请他在系统上安装PHP 有没有一种方法可以创建PHP脚本的.exe版本。我真的不太担心反编译。我更担心要求人们安装和配置PHP。 问题答案: peachpie. http://www.peachpie.io https://gith

  • 我们有独立的Spring Boot应用程序,它触发一些基于触发器的石英作业。它是独立的jar文件,不涉及应用服务器。