Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cronjob-运行脚本和Python_Python_Cron - Fatal编程技术网

Cronjob-运行脚本和Python

Cronjob-运行脚本和Python,python,cron,Python,Cron,我的问题是cronjob似乎运行良好,但没有在.sh文件中正确执行代码,请参阅下面的详细信息 我键入crontab-e,打开cron: 在该文件中: 30 08 * * 1-5 /home/user/path/backup.sh 45 08 * * 1-5 /home/user/path/runscript.sh >> /home/user/cronlog.log 2>&1 backup.sh: #!/bin/sh if [ -e "NEW_BACKUP.sql.gz

我的问题是cronjob似乎运行良好,但没有在.sh文件中正确执行代码,请参阅下面的详细信息

我键入crontab-e,打开cron: 在该文件中:

30 08 * * 1-5 /home/user/path/backup.sh
45 08 * * 1-5 /home/user/path/runscript.sh >> /home/user/cronlog.log 2>&1
backup.sh:

#!/bin/sh
if [ -e "NEW_BACKUP.sql.gz" ]
then
    mv "NEW_BACKUP.sql.gz" "OLD_BACKUP.sql.gz"
fi
mysqldump -u username -ppassword db --max_allowed_packet=99M | gzip -9c > NEW_BACKUP.sql.gz
runscript.sh:

#!/bin/sh
python /home/user/path/uber_sync.py
uber_sync.py:

import keyword_sync
import target_milestone_sync
print "Starting Sync"
keyword_sync.sync()
print "Keyword Synced"
target_milestone_sync.sync()
print "Milestone Synced"
print "Finished Sync"
import sys
sys.path.append("/home/user/path")
import keyword_sync
import target_milestone_sync
问题是,它似乎在uber_sync中执行print语句,但实际上并没有执行import语句中的代码。。。有什么想法吗

还请注意,关键字_sync和目标_里程碑_sync与uber_sync位于同一目录中,即/home/user/path


谢谢您的帮助。

您的导入语句失败,因为python无法找到您的模块。将它们添加到您的搜索路径,然后导入您的模块,如下所示(将其添加到uber_sync.py):

Python在当前目录(执行代码的目录)、环境变量和配置文件中查找模块。所有这些都会在
sys.path
中结束,它可以像任何列表对象一样进行编辑。如果您想了解更多关于某个模块被导入或未被导入的原因,我建议您也研究一下标准模块


在您的例子中,您通过
python-uber\u-sync.py
/home/user/path
中测试了代码,结果成功了,因为您的模块位于当前目录中。但是当通过
python/home/user/path/uber\u sync.py在
some/other/dir
中执行它时,当前dir变为
some/other/dir
,并且找不到您的模块。

您的导入语句失败,因为python找不到您的模块。将它们添加到您的搜索路径,然后导入您的模块,如下所示(将其添加到uber_sync.py):

Python在当前目录(执行代码的目录)、环境变量和配置文件中查找模块。所有这些都会在
sys.path
中结束,它可以像任何列表对象一样进行编辑。如果您想了解更多关于某个模块被导入或未被导入的原因,我建议您也研究一下标准模块


在您的例子中,您通过
python-uber\u-sync.py
/home/user/path
中测试了代码,结果成功了,因为您的模块位于当前目录中。但是当通过
python/home/user/path/uber_sync.py
some/other/dir
中执行它时,当前目录变成
some/other/dir
,并且找不到您的模块。

?有跟踪吗哦,如果不知道sync()做了什么,就很难判断这里出了什么问题。那么,在
/home/user/cronlog.log
中到底发生了什么?有跟踪吗哦,在不知道
sync()
s做什么的情况下,很难判断这里会出什么问题。今晚我将再次运行cron,看看这是否能解决问题,这是我怀疑的问题,希望它能工作!另一个注意事项:我还必须将备份脚本更改为绝对路径。今晚我将再次运行cron,看看这是否解决了问题,这是我怀疑的问题,所以希望它能工作!另一个注意事项:我还必须将备份脚本更改为绝对路径。