Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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
Cron作业不会运行python脚本——即使在谷歌搜索了两天后也是如此_Python_Linux_Cron - Fatal编程技术网

Cron作业不会运行python脚本——即使在谷歌搜索了两天后也是如此

Cron作业不会运行python脚本——即使在谷歌搜索了两天后也是如此,python,linux,cron,Python,Linux,Cron,我正试图通过cron作业运行python脚本,但在过去的两天里运气不好,我的头发也快用完了 一些信息: -->我有大约20小时的Linux使用经验,所以我可能错过了一些非常基本的东西 -->Linode.com上的Linux服务器(Ubuntu) -->脚本在终端中运行 -->脚本具有权限“0644” -->#/usr/bin/env python3.7 将添加到脚本的开头 -->该脚本属于用户“adamsavage”,我已尝试分别使用crontab-e和sudo crontab-e将其添加到此

我正试图通过cron作业运行python脚本,但在过去的两天里运气不好,我的头发也快用完了

一些信息:

-->我有大约20小时的Linux使用经验,所以我可能错过了一些非常基本的东西

-->Linode.com上的Linux服务器(Ubuntu)

-->脚本在终端中运行

-->脚本具有权限“0644”

-->
#/usr/bin/env python3.7
将添加到脚本的开头

-->该脚本属于用户“adamsavage”,我已尝试分别使用
crontab-e
sudo crontab-e
将其添加到此用户cron文件和属于root用户的cron文件中

-->cron文件如下所示,末尾有一个新行:

* * * * * /usr/bin/python3 /home/adamsavage/python-scripts/send_new_sessions.py >> /home/adamasavage/log.txt 2>&1

-->
sudo grep CRON/var/log/syslog
返回以下内容:

Apr  2 15:25:01 noeluddig CRON[7728]: (adamsavage) CMD (/home/adamsavage/python_scripts/send_new_sessions.py >> /home/adamasavage/log.txt)
Apr  2 15:25:01 noeluddig CRON[7729]: (root) CMD (/home/adamsavage/python_scripts/send_new_sessions.py >> /home/adamasavage/log.txt)
Apr  2 15:25:01 noeluddig CRON[7730]: (adamsavage) CMD (echo 'Yo' >> /home/adamsavage/log.txt)
Apr  2 15:25:01 noeluddig CRON[7731]: (root) CMD (echo 'Yo' >> /home/adamsavage/log.txt)
Apr  2 15:25:01 noeluddig CRON[7732]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
-->我还尝试了以下方法:

* * * * * cd /home/adamsavage/python_scripts/ && /home/adamsavage/python_scripts/send_new_sessions.py >> /home/adamasavage/log.txt

-该脚本应该给我发送一条带有一些信息的短信,当它从终端上运行时,它会再次工作

-我还应该提到的是,只要有
echo“message”>/home/adamsavage/output.txt
就可以运行并将“message”打印到该文件中


我错过了什么?我只想说,我们将非常感谢您的帮助!:)

您应该使用
python
命令运行python脚本:

* * * * * path/to/python /home/adamsavage/python_scripts/send_new_sessions.py >> /home/adamasavage/log.txt

例如:

* * * * * /usr/bin/python3 /home/adamsavage/python_scripts/send_new_sessions.py >> /home/adamasavage/log.txt


您应该使用
python
命令运行python脚本:

* * * * * path/to/python /home/adamsavage/python_scripts/send_new_sessions.py >> /home/adamasavage/log.txt

例如:

* * * * * /usr/bin/python3 /home/adamsavage/python_scripts/send_new_sessions.py >> /home/adamasavage/log.txt


尝试在cron行的末尾添加
2>&1


***path/to/python/home/adamsavage/python_scripts/send_new_sessions.py>/home/adamasavage/log.txt 2>&1
尝试在cron行末尾添加
2>&1



***path/to/python/home/adamsavage/python_scripts/send_new_sessions.py>/home/adamasavage/log.txt 2>&1

我不知道这是为什么,但成功的原因是删除了日志文件的绝对路径。如果有人能解释这一点,那就太好了

我不知道这是为什么,但它之所以有效是因为删除了日志文件的绝对路径。如果有人能解释这一点,那就太好了

首先:如果您以root/normaluser身份从终端执行“/home/adamsavage/python_scripts/send_new_sessions.py>>/home/adamasavage/log.txt”,它是否按预期运行?感谢您的回复。不,它不与“>>日志文件”部分一起运行。但它应该这样做吗?它只需使用终端中的“/home/adamsavage/python scripts/send_new_sessions.py”就可以运行:首先,如果您使用“/home/adamsavage/python_scripts/send_new_sessions.py>>/home/adamasavage/log.txt”作为root/normaluser,它是否按预期运行?谢谢您的回复。不,它不与“>>日志文件”部分一起运行。但它应该这样做吗?它只使用“/home/adamsavage/python scripts/send_new_sessions.py”运行。看看这个:谢谢你的回复。“whichpython”返回“/usr/bin/python”,所以现在cronfile看起来是这样的,但它仍然不能工作。“***/usr/bin/python/home/adamsavage/python scripts/send_new_sessions.py>>/home/adamasavage/log.txt”您可以在没有crontab的服务器上运行脚本,并且不将输出附加到文件中,检查它是否返回任何错误吗?是的,如果我将cd放入目录,然后运行“python3.7 send_new_sessions.py”,以及如果我只是运行“/home/adamsavage/python scripts/send_new_sessions.py”感谢您的回复。“哪个python”返回“/usr/bin/python”,所以现在cronfile看起来像这样,但它仍然无法工作。”***/usr/bin/python/home/adamsavage/python scripts/send_new_sessions.py>/home/adamasavage/log.txt“您是否可以在不使用crontab的情况下在服务器上运行脚本,并且不将输出附加到文件,并检查它是否返回任何错误?是的,如果我将cd放入目录,然后运行“python3.7 send_new_sessions.py”和如果我只运行“/home/adamsavage/python scripts/send_new_sessions.py”Hi,对不起,我忘了在我的帖子中提到我也尝试过这个。但是这里是“结果”
apr218:25:01 noeludig-CRON[11735]:(root)CMD(/usr/bin/python3/home/adamsavage/python scripts/send_new_sessions.py>/home/adamasavage/log.txt 2>&1)apr218:25:01 noeludig-CRON[11736]:(root)CMD(command-v debian-sa1>/dev/null&&debian-sa1)
所以我没有想法了:/这可能是一个愚蠢的问题,但你确定你的代码在每次运行时都会打印出一些东西吗?在我们谈话时,我想到了另一个想法——如果你把它安排在另一个频率,同样的行为会发生吗?可能您的作业运行了一分钟以上,然后又开始了另一个作业,并且在尝试写入文件时存在争用条件…此时,没有什么是愚蠢的..:是的,当我从终端运行它时,它既打印出一条注释,也向一个单独的日志文件添加一行。这个过程大约需要2秒钟(调用一个sms api),所以它不应该同时运行两个。无论如何,谢谢你的时间和投入!我有时会在cron示例中看到类似“PATH=”的内容。你知道那是什么吗?这是我应该关心的吗?我不认为这条路在这里是相关的。我会尽量把#去掉/文件中的usr/bin/env python3.7。我试图在我的ubuntu机器上复制它,它可以工作(使用/usr/bin/env和python命令)?或者你能告诉我你的cron文件是什么样子的吗?嗨,对不起,我忘了在我的帖子里提到我也尝试过这个。但是这里是“结果”
apr218:25:01 noeludig-CRON[11735]:(root)CMD(/usr/bin/python3/home/adamsavage/python scripts/send_new_sessions.py>/home/adamasavage/log.txt 2>&1)apr218:25:01 noeludig-CRON[11736]:(root)CMD(command-v debian-sa1>/dev/null&&debian-sa1)
所以我没有想法了:/这可能是一个愚蠢的问题,但你确定你的代码在每次运行时都会打印出一些东西吗?在我们谈话时,我想到的另一个想法是,同样的行为也发生了