希望有人可以帮助我。
我写了一个python脚本,我想每隔5分钟在CRON下运行一次。 为了与最小特权的一般安全实践保持一致,我:
脚本中的shebang是:
#!/ usr / bin / env python2.7
授予用户自定义的唯一权限是:
Inherited from Name Description Action
User - System: Shell account access Indicates whether the user is able to login for example via SSH.
无论当前工作目录如何,都可以从命令行使用命令 / home / custom / bin / monitor 运行脚本。
我尝试使用cd / first来确保它不是路径问题,并且脚本正确运行。
该脚本在第一次运行时写入2个文件,后续运行附加到目录/ home / custom / bin / mondata中的那些文件
我安装了CRON包并创建了以下条目:
* / 5 * * * * custom / home / custom / bin / monitor
(似乎没有“应用更改”,所以我假设我不需要重新启动或做任何事情来加载更改。) (以上条目和许多其他条目都显示在WebGUI中,我知道其他几个cron作业正在运行。)
在等待足够的时间让脚本运行后,我检查了输出,但没有任何内容。
将自定义更改为root用于测试目的(以防问题是权限问题)无法解决问题。
以下是相关的文件权限:
[2.3.2-RELEASE][custom@local]/home/custom/bin: ls -laR ~
total 52
drwxr-xr-x 4 custom nobody 512 Aug 7 00:14 .
drwxr-xr-x 4 root wheel 512 Jul 27 15:24 ..
drwxr-xr-x 3 custom custom 512 Aug 7 00:14 bin
/home/custom/bin:
total 20
drwxr-xr-x 3 custom custom 512 Aug 7 00:14 .
drwxr-xr-x 4 custom nobody 512 Aug 7 00:14 ..
drwxrwx--- 2 custom custom 512 Aug 7 00:07 mondata <-Script output goes here
-rwxr-xr-x 1 custom custom 4663 Aug 5 22:44 monitor <-The script
/home/custom/bin/mondata:
total 8
drwxrwx--- 2 custom custom 512 Aug 7 00:07 . <-NO OUTPUT! (I deleted the files manually after successful tests)
drwxr-xr-x 3 custom custom 512 Aug 7 00:14 ..
我检查了以下错误消息:状态/系统/日志/系统/常规 - 找不到任何内容。
我甚至尝试暂时将/ home / custom / bin / mondata上的权限更改为777并将cron用户设置为root (仅用于测试的完全不可接受的安全实践,但即使这样也不起作用。)
我无法知道脚本是否正在运行,并且由于某种原因文件写入被拒绝,或者脚本根本没有运行。
BTW,cron选项卡在哪里?当我以root身份运行crontab -l时,我得到crontab:没有用于root的crontab,但我知道cron作业正在运行。 (我每天都有邮件报告。)
任何建议 - 即使是故障排除以了解脚本是否正在运行都会有所帮助。
感谢。
答案 0 :(得分:0)
问题是python没有执行。
所谓的便携式&#34;在命令行工作的shebang -
#!/usr/bin/env python2.7
- 从cron不工作。
我将以下文件创建为/ home / custom / bin / tcron
#!/usr/bin/env python2.7
import os
os.system('/usr/local/bin/minicron')
从命令行运行时,它会在每次运行时将minicron错误放入日志中,但在从cron运行时不执行任何操作。
我将#!/ usr / bin / env python2.7更改为#!/ usr / local / bin / python2.7,现在它可以正常工作。
我不知道这是否故意#!/ usr / bin / env python2.7不能从cron工作,但是现在我不会担心它。
我希望通过记录这可能会为其他人带来同样的麻烦,如果它是一个应该报告的错误,那么知道如何做的人就会这样做。