什么';如果要终止python脚本,那么killall的shell等价物是什么?

什么';如果要终止python脚本,那么killall的shell等价物是什么?,python,shell,unix,Python,Shell,Unix,所以我有一个二进制文件(binApp)要删除 killall -9 binApp 现在,我没有使用该二进制文件,而是创建了另一个python脚本(pyBinapp.py)来执行相同的任务。我想终止python任务,这是否有效: killall -9 pyBinApp ? 还有-9是什么意思?我找不到任何关于这个数字的文章。-9是要发送的信号(而不是默认的SIGTERM)-SIGKILL。应用程序可以忽略SIGTERM,而SIGKILL不能 我不认为在这种情况下使用killall是安全的,因为

所以我有一个二进制文件(binApp)要删除

killall -9 binApp
现在,我没有使用该二进制文件,而是创建了另一个python脚本(pyBinapp.py)来执行相同的任务。我想终止python任务,这是否有效:

killall -9 pyBinApp
?

还有-9是什么意思?我找不到任何关于这个数字的文章。

-9是要发送的信号(而不是默认的SIGTERM)-SIGKILL。应用程序可以忽略SIGTERM,而SIGKILL不能

我不认为在这种情况下使用killall是安全的,因为您必须“killallpython”,这可能会杀死正在运行的其他东西ps aux | grep python'查看正在运行的内容

编辑:实际上-我刚刚测试了它,只要您直接运行pyBinapp.py(它是可执行的,并且包含#!),而不是将它作为参数传递给python(例如python pyBinapp.py),您就可以使用killall pyBinapp终止它。py

-9是要发送的信号(而不是默认的SIGTERM)-SIGKILL。应用程序可以忽略SIGTERM,而SIGKILL不能

我不认为在这种情况下使用killall是安全的,因为您必须“killallpython”,这可能会杀死正在运行的其他东西ps aux | grep python'查看正在运行的内容


编辑:事实上-我刚刚测试过它,只要您直接运行pyBinapp.py(它是可执行的,并且包含#!),而不是将它作为参数传递给python(例如python pyBinapp.py),您就可以使用killall pyBinapp.py杀死它。

killall
只匹配进程名称(在您的例子中为“python”),因此它看不到脚本名称(“pyBinApp.py”),因为它是python进程参数之一

但是,
pgrep
可以与带有
-f
标志的完整参数列表匹配,包括脚本文件名

如果您正在运行
python-pyBinApp.py
,请尝试以下方法杀死它:

kill `pgrep -f pyBinApp.py`

pgrep
返回与模式匹配的所有PID,然后对所有PID执行
kill

killall
仅匹配进程名(“在您的示例中为python”),因此它不会看到脚本名(“pyBinApp.py”),因为它是python进程参数之一

但是,
pgrep
可以与带有
-f
标志的完整参数列表匹配,包括脚本文件名

如果您正在运行
python-pyBinApp.py
,请尝试以下方法杀死它:

kill `pgrep -f pyBinApp.py`
pgrep
返回与模式匹配的所有PID,然后对所有PID执行
kill

我使用:

pgrep -f youAppFile.py | xargs kill -9
pgrep返回特定文件的PID,您只终止特定应用程序。

我使用:

pgrep -f youAppFile.py | xargs kill -9

pgrep返回特定文件的PID,您只杀死特定的应用程序。

pkill直接执行此操作,而无需将其放大并通过管道杀死

pkill -f pyBinApp

做你想做的事。

pkill直接做,而不需要将它变大并通过管道杀死

pkill -f pyBinApp

做你想做的事。

-9意味着杀死它,而不向程序发送杀死信号,让它关闭自己并进行清理……不确定你剩下的问题是什么……我想你只是杀死了python进程,
python.exe
。所以基本上我要修改“killall-9 binApp”“这会杀死一个等价的python脚本。当我说等效时,我的意思是,例如,binApp和python脚本都进行1+1的计算,-9意味着在不向程序发送kill信号的情况下杀死它,让它自己关闭并进行清理。。。。我不确定你剩下的问题是什么…我想你只是杀死了python进程,
python.exe
。所以基本上我要修改“killall-9binapp”来杀死一个等价的python脚本。当我说等效时,我的意思是,例如,binApp和python脚本都进行1+1的计算。但是如果我从shell运行pyBinApp.py,我需要将它作为参数传递给python。。。我应该如何直接运行它?添加一个shebang
#/bin/usr/python
(无论如何都是类似的)到pyBinApp的顶部(第1行)。如果您使用的是
#,则py不起作用/usr/bin/env python
shebang,这是python程序员的常见做法。但是如果我从shell运行pyBinApp.py,我需要将它作为参数传递给python。。。我应该如何直接运行它?添加一个shebang
#/bin/usr/python
(无论如何都是类似的)到pyBinApp的顶部(第1行)。如果您使用的是
#,则py不起作用/usr/bin/env python
shebang,这是python程序员的常见做法。