用Python创建一个Linux作业(调度)

时间:2012-05-20 19:05:48

标签: python linux cron

我正在尝试使用python脚本在linux中安排一些作业。目前,我的脚本看起来像这样:

import subprocess
command = 'python foo.py %s %s | at %s' % (arg1, arg2, starttime) 
subprocess.Popen([command,], shell=True)

但这似乎不起作用,我希望有人可以就我应该做的事情提出建议。

2 个答案:

答案 0 :(得分:3)

如果您传入shell=TruePopen()需要一个字符串:

import subprocess
command = 'python foo.py %s %s | at %s' % (arg1, arg2, starttime) 
subprocess.Popen(command, shell=True)

另外,你的意思是“不工作”?它适用于我:

>>> import subprocess
>>> subprocess.Popen('echo "asd" | rev', shell=True).communicate()
dsa
(None, None)

还有你的代码:

>>> import subprocess
>>> subprocess.Popen(['echo "asd" | rev',], shell=True).communicate()
dsa
(None, None)

答案 1 :(得分:2)

你的问题是使用at命令,它会得到一个字符串,所以你想要的更多

command = 'echo python foo.py %s %s | at %s' % (arg1, arg2, starttime)

或以更加pythonic的方式

sched_cmd = ['at', starttime]
command = 'python foo.py %s %s' % (arg1, arg2)
p = subprocess.Popen(sched_cmd, stdin=subprocess.PIPE)
p.communicate(command)