Python 进程不在后台运行
我正在运行下面显示的python脚本。该脚本对远程计算机执行ssh,并在后台运行c程序。但在运行python脚本时,我得到以下输出: 这意味着a.out已运行,pid为[1]2115。 但是,当我登录到远程机器并通过“ps”命令检查a.out时,我没有看到它。 另一个观察结果是,当我在python脚本thread.sleep(20)中添加delay语句时,当脚本仍在运行时, 如果我签入远程机器,a.out处于活动状态Python 进程不在后台运行,python,Python,我正在运行下面显示的python脚本。该脚本对远程计算机执行ssh,并在后台运行c程序。但在运行python脚本时,我得到以下输出: 这意味着a.out已运行,pid为[1]2115。 但是,当我登录到远程机器并通过“ps”命令检查a.out时,我没有看到它。 另一个观察结果是,当我在python脚本thread.sleep(20)中添加delay语句时,当脚本仍在运行时, 如果我签入远程机器,a.out处于活动状态 #!/usr/bin/python impor
#!/usr/bin/python
import HostMod #where ssh function is wrote
COMMAND_PROMPT1 = '[#$] '
p = HostMod.HostModule()
obj1=p.HostLogin('10.200.2.197', 'root', 'newnet') #ssh connection to remote system
obj1.sendline ('./a.out > test.txt &') #sending program to remote machine to executethere
obj1.expect (COMMAND_PROMPT1)
print obj1.before
#a.out program
int main()
{
while(1)
{
sleep(10);
}
return 0;
}
请尝试给出./a.out的绝对路径尝试使用
nohup
...
obj1.sendline ('nohup ./a.out > test.txt &') #sending program to remote machine to executethere
但实际上,您不应该使用shell通过ssh调用命令。ssh协议内置了对运行命令的支持。我不确定您的HostMod模块是如何工作的,但您可以从shell中尝试这一点(很容易移植到使用子流程):
ssh somehost nohup sleep 20
ssh主机
ps ax |格雷普睡眠
您应该看到您的sleep
进程仍在运行。此方法不会实例化shell,这更可靠,因为您可以控制运行哪个shell,也可以不控制运行哪个shell,~/.(…)rc
文件中的内容,等等。总之,更具可移植性。我提供了绝对路径,然后它的预期输出也没有出现为什么不使用类似于ssh的结构?非常感谢我得到了我需要的输出
ssh somehost nohup sleep 20
<Ctrl+C>
ssh somehost
ps ax | grep sleep