" killall python"

时间:2015-06-16 14:03:52

标签: python linux shell python-2.7 busybox

我正在使用运行Python 2.7的嵌入式Busybox系统。

每当我使用

杀死Python时
killall python

当我为该会话运行交互式python shell break的交互式python shell的未来实例时。

所以,例如我有一个ssh连接到当前运行python shell的设备。现在我用" killall python"来自另一个shell。第一个ssh连接上的shell关闭(如预期的那样)消息" Terminated"。到目前为止,这一切都是预期的。

现在我使用" python"命令再次在我有最后一个python shell的shell中。现在我得到了异常行为,因为没有显示我的输入。

所以,例如如果我通常输入" print(' test')"我明白这一点:

>>> print('test')
test
>>>

如果我在杀死python后也这样做,我会看到:

>>> test
>>>

如您所见,我的输入(" print(' test')\ n")未按预期显示。 但是,程序的所有输出都是可见的。

要解决此问题,我必须关闭连接(例如ssh连接)并重新启动它。 它只影响在我使用killall命令时运行python shell的连接。因此,如果有多个ssh连接,那么只有受killall命令时python运行的那些连接受影响。

如果我使用" killall"并不重要。或者只是"杀死[PID]",结果是一样的。

有谁知道是什么原因以及如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

"本地回声" - 您键入的打印输入 - 是可切换的终端设置。您将终端设置为关闭状态。 (如果程序在提示输入密码时退出,则很容易发生这种情况,这是出于安全原因而关闭本地回声的特殊情况。)

要将终端完全重置为已知状态,请在重新启动Python之前运行stty sane。要仅启用本地回显,请运行stty echo