Python挂起在ssh上

Python挂起在ssh上,python,linux,ssh,freeze,Python,Linux,Ssh,Freeze,我正试图通过ssh直接运行python脚本,如下所示: ssh hostname python_script 不幸的是,python启动后什么也没有发生,事实上,远程创建的python进程即使在我断开SSH连接后也保持“活动”。如果我尝试启动python解释器,也会发生同样的情况,但是其他命令可以正常工作。SSH不会导致运行python脚本出现问题。一般来说,需要注意的是环境变量的变化以及对标准输入/输出的任何期望,因为这些可能会导致类似于您所描述的症状。如果不运行脚本,直接运行python将

我正试图通过ssh直接运行python脚本,如下所示:

ssh hostname python_script

不幸的是,python启动后什么也没有发生,事实上,远程创建的python进程即使在我断开SSH连接后也保持“活动”。如果我尝试启动python解释器,也会发生同样的情况,但是其他命令可以正常工作。

SSH不会导致运行python脚本出现问题。一般来说,需要注意的是环境变量的变化以及对标准输入/输出的任何期望,因为这些可能会导致类似于您所描述的症状。如果不运行脚本,直接运行python将挂起,因为python希望能够与stdin/stdout交互

测试基本环境是否正常工作的一种简单方法是创建一个测试程序(test.py),其中包含:

print "foo"
然后


您应该得到“foo”作为响应。

试试ssh-t主机名python\u脚本。默认情况下,
ssh
在给定要运行的程序时不分配与之交互的伪tty(尽管如果您只分配
ssh hostname
),它会这样做
-t
告诉它这样做。

ssh-t是一个很好的建议

您还可以尝试在代码中添加print语句/函数,将其写入/var/tmp或其他文件中,以查看它在做什么

查看进程正在做什么的另一种方法是使用类似Linux的strace:


例如:ssh remote.host.com'strace-f-o/var/tmp/my_script.strace my_script'。然后检查/var/tmp/my_script.strace以查看它被卡住了什么。读取strace输出并不总是简单的,但至少很有趣。:)

你的python脚本做什么?这个python脚本做什么?它会弄乱任何一个餐厅吗?它在本地执行时是否运行正常?它使用pyinotify监视用户登录和注销计算机。它在本地和远程(从Bash运行时)都可以正常工作,但在直接由SSH启动时不能正常工作,Python解释器shell也不能正常工作。除了向stdout写入数据外,我不接触流。如果你想监视用户的登录和注销,为什么要使用inotify?为什么不是syslog?让机器在人们登录/注销时向您发送消息,而不是通过ssh在其上运行代理…这可以工作,但我的脚本仍然没有输出任何内容。如果我的程序是由登录shell启动的,inotify会在意吗?
ssh hostname python test.py