cronjob无法执行独立运行的脚本
我在中有我的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作业正在执行某种脚本,则必须确保仅在该脚本内使用绝对路径。例如,如果您的脚本位于/path/to/script.php,并且您试图在同一目录中打开一个名为file.php的文件,则不能使用相对路径,例如fopen(file.php)。必须从其绝对路径调用该文件,如下所示:fopen(/path/to/file.php)。这是因为cron作业不一定从脚本所在的目录运行,因此必须专门调用所有路径。
另外,我知道您想每分钟运行一次。如果是这样,
1 * * * *
则不会。Intead,它将在每小时的第一分钟开始运行。因此,如果您想每分钟运行一次,请说* * * * *
。
-
Crontab无法执行Python脚本
2021-01-29 关注 0 浏览143 1答案
-
PyInstaller文件无法执行脚本-DistributionNotFound
2021-01-29 关注 0 浏览84 1答案
-
尝试在Linux上运行Shell脚本时“无法执行二进制文件”
2021-02-01 关注 0 浏览142 1答案
-
单击应用程序时,Windows- Pyinstaller错误“无法执行脚本”
2021-01-29 关注 0 浏览73 1答案
-
SQLGrammarException:无法执行查询
2021-02-01 关注 0 浏览126 1答案
-
无法执行SQL查询
2021-05-10 关注 0 浏览67 1答案
-
Maven-无法执行JAR
2021-01-30 关注 0 浏览68 1答案
-
从cronjob中的脚本启动phantomJS
2021-01-29 关注 0 浏览93 1答案
-
内联Java导致javascript无法执行
2021-02-01 关注 0 浏览153 1答案
-
无法执行CommandLineRunner-Spring Batch
2021-02-02 关注 0 浏览364 1答案