我想在python中将raw_input和nohup放在一起

时间:2011-11-04 15:28:20

标签: python

我正在处理大型数据集,运行需要几天时间,因此我使用nohup在终端中运行我的脚本。 这次我需要首先从终端获取raw_input然后通过nohup,我的代码开始运行。有什么建议我怎么做?

所以首先我需要像这样从终端获得输入

$ python myprogram.py 
enter_input: SOMETHING

那么这个过程应该是这样的:

$nohup python myprogram.py &

但我想通过终端一步到位。我希望我的解释清楚:)

3 个答案:

答案 0 :(得分:1)

您可以制作流程fork to the background after reading the input。但是,更简单的变体是在tmuxGNU screen内开始您的流程。

答案 1 :(得分:0)

我认为您的程序不应该从stdin读取输入,而是通过命令行提供数据。

所以而不是

startdata = raw_input('enter_input:')
你做了

import sys
startdata = sys.argv[1]

然后用

开始你的程序
$ nohup python myprogram.py SOMETHING &

并且所有工作都按照您想要的方式进行 - 如果我帮助您。

答案 2 :(得分:0)

如果您想坚持使用输入框的用户友好特性,这里还有一个选项。我之所以这样做,是因为我需要密码字段,并且不希望用户在终端中显示密码。 As described here,您可以使用输入框(带有或不带有-s选项来隐藏)创建一个小的包装Shell脚本,然后通过上面的sys.argv解决方案传递这些变量。这样的东西,保存在可执行文件my_program.sh中:

echo enter_input:
read input

echo enter_password:
read -s password

nohup python myprogram.py $username $password &

现在,运行./my_program.sh的行为将与原始python my_program.py完全一样