按名称终止Unix进程

killproc的Python项目详细描述


简介

killproc是按名称终止或终止unix进程的命令行实用程序。标准Unix kill命令根据进程id而不是进程名标识进程。例如,要终止django-admin.py脚本的实例,可以使用以下序列:

$  ps -ef | grep django-admin.py | grep -v grep
501 20060     1   0   0:00.11 ttys001    0:00.38 python django-admin.py runserver 0.0.0.0:8002
501 20063 20060   0   0:00.35 ttys001    0:01.07 python django-admin.py runserver 0.0.0.0:8002
$ kill -TERM 20060 20063
$ ps -ef | grep django-admin.py | grep -v grep

运行额外的ps命令并从其输出中挑选进程id可以得到 乏味。

killproc自动执行此序列:您提供进程名的一部分,它执行ps,过滤 通过将进程名片段与ps输出的cmd列匹配得到的结果。为每个人 匹配,系统将提示用户是否要终止进程(可以打开提示 通过命令行选项关闭)。使用killproc完成上述任务可能如下所示:

killproc django-admin.py
python django-admin.py runserver 0.0.0.0:8002
Kill process 20106? [y] y
Sending signal SIGTERM to process 20106
python django-admin.py runserver 0.0.0.0:8002
Kill process 20109? [y] y
Sending signal SIGTERM to process 20109
Sent signal SIGTERM to 2 processes

支持的平台

killproc已经在mac osx和ubuntu linux上进行了测试。预计它可以在大多数linux和bsd变体上工作。

安装

killproc是用python编写并使用setuptools打包的。已经登记了 在killproc下的PyPi上。因此,如果机器上安装了python和setuptools, 您可以通过简易安装运行安装:

easy_install killproc

或PIP:

pip killproc

两个命令都会将python包放在python环境中,并在python的二进制文件中创建killproc脚本 目录(从而使其在您的路径中可用)。

killproc.py文件可以作为独立的命令行实用程序运行。因此,作为另一种安装方法,您可以获取 从源发行版中删除killproc.py文件,将其放在可执行路径上的目录中,将其重命名为killproc,然后添加execute 权限。

用法

killproc的命令行格式为:

killproc [options] process_name

可用选项有:

-h, --help            show help message and exit
-k, --with-extreme-prejudice
                       If specified, use SIGKILL (default is SIGTERM)
-s SIGNAL_NO, --signal=SIGNAL_NO
                       Use the specified signal. Defaults to 15 (SIGTERM)
-n, --non-interactive
                       If specified, don't ask user for confirmation

注意事项、限制和未来的增强功能

匹配进程不按用户筛选。如果其他用户的进程与进程名片段匹配,则killproc 也会提示用户输入这些用户,并且终止这些进程将失败。作为未来的增强, killproc默认情况下应该只返回当前用户的匹配进程,并返回一个命令行选项 匹配所有用户(在以根用户或sudo身份运行时很有用)。

最好将进程名片段解释为与正在运行的命令匹配的正则表达式。 但是,这不应该是默认行为。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spinner选定值未上载到firebase数据库   java如何通过bukkit中的配置添加消息?   java在SharedReference中保存列表的泛型类型   javascript Java小程序未定义   swt在Java中构建控制台应用程序   java OAuth同意屏幕没有突然显示,没有错误?   java webview选择文件安卓不工作   java Spring boot JPA如何从同一连接添加多个数据库?   java JDBC DB2驱动程序计时器线程处于阻塞状态   java我在vscode中运行flatter时看到一个错误在phone中运行应用程序somone能否帮助我plz   Java:生成JSON:如何避免生成不完整的JSON   java Date compareTo()方法始终返回1   当使用Junit runner运行测试时,java Spring自动连线失败   java Android/Sockets如何将信息从主UI线程发送到socket线程?   java Android内存声明全局变量   java如何在JBoss中拥有多个具有相同JNDI名称的数据源?   python在Java中嵌入CPython时,为什么会挂起?   java如何提供深度模拟对象?   java“find:smallint,expected:integer”Hibernate对informix数据库的验证在短时间内失败