Nitrous.io、Python 和 Cron 不工作
Nitrous.io, Python and Cron not working
因为我的脚本在从命令行调用时运行良好。我正在尝试 运行 使用 cron 按计划执行此代码:
with open('out.txt', 'a') as f:
f.write('Hello world! \n')
我设置了chmod a+x hello_world.py
但我想 运行 它在 Nitrous.io 和 python3.3,因为 which python
和 which python3.3
returns /home/action/.parts/bin/python
和 /usr/bin/python3.3
分别。我试图在脚本的开头添加一些 shebangs。
#!/usr/bin/python
#!/usr/bin/python3.3
#!/usr/bin/env python
#!/usr/bin/env python3.3
#!/home/action/.parts/bin/python (Weird, I know...)
命令 python
returns a 2.7.6 python shell and python3.3
or /usr/bin/python3.3
returns a 3.3 .5 python shell。 ls /usr/bin/python*
输出:
/usr/bin/python /usr/bin/python2.6-config /usr/bin/python3.2-config /usr/bin/python3.3m
/usr/bin/python2 /usr/bin/python2.7 /usr/bin/python3.2mu /usr/bin/python3.3m-config
/usr/bin/python2.5 /usr/bin/python2.7-config /usr/bin/python3.2mu-config /usr/bin/python-config
/usr/bin/python2.5-config /usr/bin/python2-config /usr/bin/python3.3
/usr/bin/python2.6 /usr/bin/python3.2 /usr/bin/python3.3-config
我还向 PATH 和 PYTHONPATH 添加了 python 路径:
#PATH=/usr/bin/python3.3:/home/action/.parts/bin:/home/action/.parts/sbin:/home/action/.parts/autoparts/bin:/home/action/.parts/autoparts/bin:/home/action/.parts/autoparts/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/action/.gem/ru
by/1.9.1/bin
#PYTHONPATH=/usr/bin/python3.3
pidof cron
正在返回 cron 的进程 ID。
我尝试使用 ... > /path/to/cron.log 2&>1
重定向输出,但没有成功。和衍生品...
我的 crontab -e 文件看起来像:
PYTHONPATH=/usr/bin/python3.3
* * * * * /usr/bin/python3.3 /home/action/workspace/hello_world.py
但我无法让它工作...
谁能帮助这个小家伙? :)
它正在工作!似乎在 Nitrous 中 ~/actions/
充当根目录。因此,如果您尝试这样做:
with open('out.txt', 'a') as f:
f.write('Hello world! \n')
您正在有效地创建一个包含内容的文件,但在 ~/actions/
中,而不是在 /home/actions/workbench/out.txt
中的脚本文件的当前目录中,以使其按我预期的那样工作我不得不将其重写为:
with open('workbench/out.txt', 'a') as f:
f.write('Hello world! \n')
crontab -e 文件中不需要 shebang 或 PYTHONPATH。 cron命令同上(题中)
我的猜测 - 您的脚本运行良好。没有输出,没问题。只是不确定输出文件在哪里。
对于您的代码,请尝试使用绝对路径。
with open('/tmp/out.txt', 'a') as f:
f.write('Hello world! \n')
顺便说一句 - #!没关系。
当您使用 python 解释器为 python 脚本添加前缀时:
/usr/bin/python3.3 <any-file>
python interperter,而不是 shell,执行文件并将忽略 #!线。
因为我的脚本在从命令行调用时运行良好。我正在尝试 运行 使用 cron 按计划执行此代码:
with open('out.txt', 'a') as f:
f.write('Hello world! \n')
我设置了chmod a+x hello_world.py
但我想 运行 它在 Nitrous.io 和 python3.3,因为 which python
和 which python3.3
returns /home/action/.parts/bin/python
和 /usr/bin/python3.3
分别。我试图在脚本的开头添加一些 shebangs。
#!/usr/bin/python
#!/usr/bin/python3.3
#!/usr/bin/env python
#!/usr/bin/env python3.3
#!/home/action/.parts/bin/python (Weird, I know...)
命令 python
returns a 2.7.6 python shell and python3.3
or /usr/bin/python3.3
returns a 3.3 .5 python shell。 ls /usr/bin/python*
输出:
/usr/bin/python /usr/bin/python2.6-config /usr/bin/python3.2-config /usr/bin/python3.3m
/usr/bin/python2 /usr/bin/python2.7 /usr/bin/python3.2mu /usr/bin/python3.3m-config
/usr/bin/python2.5 /usr/bin/python2.7-config /usr/bin/python3.2mu-config /usr/bin/python-config
/usr/bin/python2.5-config /usr/bin/python2-config /usr/bin/python3.3
/usr/bin/python2.6 /usr/bin/python3.2 /usr/bin/python3.3-config
我还向 PATH 和 PYTHONPATH 添加了 python 路径:
#PATH=/usr/bin/python3.3:/home/action/.parts/bin:/home/action/.parts/sbin:/home/action/.parts/autoparts/bin:/home/action/.parts/autoparts/bin:/home/action/.parts/autoparts/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/action/.gem/ru
by/1.9.1/bin
#PYTHONPATH=/usr/bin/python3.3
pidof cron
正在返回 cron 的进程 ID。
我尝试使用 ... > /path/to/cron.log 2&>1
重定向输出,但没有成功。和衍生品...
我的 crontab -e 文件看起来像:
PYTHONPATH=/usr/bin/python3.3
* * * * * /usr/bin/python3.3 /home/action/workspace/hello_world.py
但我无法让它工作... 谁能帮助这个小家伙? :)
它正在工作!似乎在 Nitrous 中 ~/actions/
充当根目录。因此,如果您尝试这样做:
with open('out.txt', 'a') as f:
f.write('Hello world! \n')
您正在有效地创建一个包含内容的文件,但在 ~/actions/
中,而不是在 /home/actions/workbench/out.txt
中的脚本文件的当前目录中,以使其按我预期的那样工作我不得不将其重写为:
with open('workbench/out.txt', 'a') as f:
f.write('Hello world! \n')
crontab -e 文件中不需要 shebang 或 PYTHONPATH。 cron命令同上(题中)
我的猜测 - 您的脚本运行良好。没有输出,没问题。只是不确定输出文件在哪里。
对于您的代码,请尝试使用绝对路径。
with open('/tmp/out.txt', 'a') as f:
f.write('Hello world! \n')
顺便说一句 - #!没关系。
当您使用 python 解释器为 python 脚本添加前缀时:
/usr/bin/python3.3 <any-file>
python interperter,而不是 shell,执行文件并将忽略 #!线。