我有python脚本连接到具有lenny操作系统的远程服务器。它使用以下行在后台运行一个过程:
shell.send("cd /my/directory/; nohup ./exec_name > /dev/null 2>&1 &\n")
然后在其他一些代码之后,它向服务器发送kill
命令以停止进程执行;这是代码:
shell.send("kill -9 process_pid \n")
它不返回任何错误,但不会终止进程并且它仍在系统中存活。我也尝试了killall -9 process_name
,但我得到了相同的结果。有什么帮助吗?
有关更多信息,请参阅以下连接服务器的代码:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname = "host_ip", username = "un"], password = "up")
channel = ssh.get_transport().open_session()
pty = channel.get_pty()
shell = ssh.invoke_shell()
我应该提到用户具有root权限。
编辑1:
我忘了说我试过了:
ssh.exec_command("kill -9 process_pid \n")
但它返回了这个错误:
SSHClient is not active right now.
编辑2:
正如@JimB在评论中提到的,关于exec_command
的问题是传输已经过时。我做了一个临时的SSH连接,然后杀死了这个过程;它很成功。但我仍在寻找更好的方法。