我正在尝试使用下面的nohup命令使用fabric启动celerycam进程.不幸的是,没有任何事情发生,手动使用相同的命令我可以启动过程但不通过结构.关于我如何解决这个问题的任何建议?
def start_celerycam():
'''Start celerycam daemon'''
with cd(env.project_dir):
virtualenv('nohup bash -c "python manage.py celerycam --logfile=%scelerycam.log --pidfile=%scelerycam.pid &> %scelerycam.nohup &> %scelerycam.err" &' % (env.celery_log_dir,env.celery_log_dir,env.celery_log_dir,env.celery_log_dir))
Run Code Online (Sandbox Code Playgroud)
dan*_*van 30
我正在使用Erich Heine的建议来使用'dtach',它对我来说效果很好:
def runbg(cmd, sockname="dtach"):
return run('dtach -n `mktemp -u /tmp/%s.XXXX` %s' % (sockname, cmd))
Run Code Online (Sandbox Code Playgroud)
这是在这里找到的.
Mar*_*ana 18
正如我的实验,解决方案是两个因素的组合:
所以,你的函数应该是这样的:
def background_run(command):
command = 'nohup %s &> /dev/null &' % command
run(command, pty=False)
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令启动它:
execute(background_run, your_command)
Run Code Online (Sandbox Code Playgroud)
小智 5
你只需要跑步
run("(nohup yourcommand >& /dev/null < /dev/null &) && sleep 1")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14952 次 |
| 最近记录: |