Python 由于os.system()问题终止Ubuntu上的进程
我尝试从python shell向Ubuntu OS发送命令,以定义特定端口上存在的进程并将其终止:Python 由于os.system()问题终止Ubuntu上的进程,python,linux,os.system,Python,Linux,Os.system,我尝试从python shell向Ubuntu OS发送命令,以定义特定端口上存在的进程并将其终止: port = 8000 os.system("netstat -lpn | grep %s" % port) 输出: tcp 0 0 127.0.0.1.8000 0.0.0.0:*听22000/python 然后: 但有以下线索 sh:1:kill:非法选项-S 由于某些原因,命令不能用完整的signal-SIGTERM传输到操作系统,而只能用-S。我可以直接从终端终止这个进程,所以这似乎是
port = 8000
os.system("netstat -lpn | grep %s" % port)
输出:
tcp 0 0 127.0.0.1.8000 0.0.0.0:*听22000/python
然后:
但有以下线索
sh:1:kill:非法选项-S
由于某些原因,命令不能用完整的signal-SIGTERM传输到操作系统,而只能用-S。我可以直接从终端终止这个进程,所以这似乎是Python或操作系统的问题。。。如何使用Python运行kill命令?
非常感谢您的帮助您可以尝试使用
import signal
os.kill(process.pid, signal.SIGKILL)
可以找到文档
您还可以使用signal.CTRL\u C\u事件,它对应于CTRL+C击键事件。您可以尝试使用
import signal
os.kill(process.pid, signal.SIGKILL)
可以找到文档
您还可以使用signal.CTRL\u C\u事件,它对应于CTRL+C击键事件。os.system使用sh来执行命令,而不是终端中的bash。sh中的kill内置要求给出不带SIG前缀的信号名称。将os.system命令行更改为kill-TERM 22000
[编辑]正如@DJanssens所建议的,使用os.kill比为这么简单的事情调用shell更好。os.system使用sh来执行命令,而不是终端中的bash。sh中的kill内置要求给出不带SIG前缀的信号名称。将os.system命令行更改为kill-TERM 22000
[编辑]正如@DJanssens所建议的,使用os.kill比为这么简单的事情调用shell更好。谢谢!os.kill22000,signal.SIGTERM工作正常谢谢!os.kill22000,signal.SIGTERM工作正常