Python中文
首页
教程
问答
标签
搜索
登录
注册
从Python脚本调用以在Linux中重新启动“服务”,而不是从crontab条目中启动
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有下面的python测试脚本(从一个更大的.py文件中提取),我正试图在EC2实例(haproxy OpsWorks实例)上工作。</p> <p>在作为cron条目运行时应用的权限与作为来自shell的python脚本运行时应用的权限之间似乎有一个主要区别。</p> <p>我在其他文章中找到的最接近的是<a href="https://stackoverflow.com/questions/6124699/restart-service-crontab-problem">here</a>,但这与shell脚本有关,并且,考虑到我运行python OK,路径应该(我希望)为cronjob进行充分配置。</p> <p>环境: -Python版本:2.6.8 -环境:OpsWorks HAProxy实例,在EC2上。 -以用户身份运行:根。</p> <p>脚本</p> <pre><code>import subprocess import boto import logging if __name__ == '__main__': logging.getLogger().setLevel(boto.logging.INFO) command = ['service', 'haproxy', 'reload']; logging.info('Executing: %s' % command) #shell=FALSE for sudo to work. subprocess.call(command, shell=False) </code></pre> <p>我也尝试过使用以下命令调用subprocess命令,但没有成功。</p> <pre><code># subprocess.call("%s %s %s %s" % ('sudo', 'service', 'haproxy', 'reload')) </code></pre> <p>从命令行运行时输出:</p> <pre><code>[root@lb1 ~]# python tester.py INFO:root:Executing: ['service', 'haproxy', 'reload'] Reloading haproxy: [root@lb1 ~]# </code></pre> <p>Crontab条目:</p> <pre><code>[root@lb1 ~]# crontab -l */1 * * * * python ~/tester.py > ~/testlog 2>&1 </code></pre> <p>作为crontab命令运行时的输出</p> <pre><code>[root@lb1 ~]# cat testlog INFO:root:Executing: ['service', 'haproxy', 'reload'] Traceback (most recent call last): File "/root/tester.py", line 13, in <module> subprocess.call(command, shell=False) File "/usr/lib64/python2.6/subprocess.py", line 478, in call p = Popen(*popenargs, **kwargs) File "/usr/lib64/python2.6/subprocess.py", line 639, in __init__ errread, errwrite) File "/usr/lib64/python2.6/subprocess.py", line 1228, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory </code></pre> <p>我搞不懂它到底为什么会抛出“没有这样的文件或目录”的错误!</p> <p>有人能给我指点一下吗?顺便说一下,这是一个更大的EC2集成部分的一部分,因此boto导入(这是一个在这个实例中获得日志记录的好方法)。它是以根用户身份运行的,因为从浏览的角度来看,使用sudo命令运行用户帐户的cron条目是不好的做法。</p> <p>干杯</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>在子进程集中<code>shell=True</code></p> <pre><code>subprocess.call(command, shell=True) </code></pre> <p>我认为你的问题会得到解决,但sudo问题可能会出现。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何用if条件捕获函数返回值
5 回答
如何用if语句判断列表中是否存在该索引?
10 回答
如何用if语句向量化numpy数组中的最大值?
2 回答
如何用IF语句有条件地保存零碎的结果?
3 回答
如何用if语句测试异常对象?
1 回答
如何用IF语句编写二元函数
5 回答
如何用igraph在python中创建顶点权重的图?
4 回答
如何用ijson和python解析json
4 回答
如何用iloc求子矩阵
5 回答
如何用Imagemagick或PIL绘制高质量的图像笔划(边框)?
6 回答
如何用importlib在python中动态导入模块?
2 回答
如何用import语句重写python内置函数?
4 回答
如何用imshow混合裁剪的强度并显示正确的混合强度?
9 回答
如何用in dictionary解析havin dictionary中的json文件
7 回答
如何用in-Django URL替换%20
3 回答
如何用in\op正确构造查询
3 回答
如何用inbuild对象替换文件
5 回答
如何用inheritan类实现flask restful
5 回答
如何用intersphinx正确地编写对外部文档的交叉引用?
7 回答
如何用int修改LpVariable?
7 回答