【问题标题】:Doubts with command: pkill -INT -f '^php test_program.php$'对命令的怀疑: pkill -INT -f '^php test_program.php$'
【发布时间】:2016-05-25 07:06:58
【问题描述】:

问题:命令的每个元素是什么:

pkill -INT -f '^php test_program.php$'

当我在 linux 终端中运行它的时候呢?我已经知道该命令会杀死名为 test_program.php 的进程,但我不知道该命令的所有不同元素都在做什么。请用尽可能简单的术语解释!我是 linux 命令的新手,目前我更喜欢婴儿术语而不是技术术语 :)


我的研究:通过在 linux 终端中运行 man pkill,会出现一本手册,其中包含以下 pkill 定义:

  • 基于名称或其他属性的信号处理。

这让我相信pkill 不仅会杀死进程,而且会发送许多不同的信号,其中一个可能会杀死进程。 pkill 命令的结构/概要显示为:pkill [option] pattern

从同一手册的选项列表中,-f, -full 具有以下定义:

  • 该模式通常只与进程名称匹配。设置 -f 时,将使用完整的命令行。

我不完全明白那是什么意思。另外,在命令中-f之前有一个-INT,这让我相信可以将多个选项连接在一起,但是-INT并没有显示在手册中。

该命令的其他部分似乎正在识别正在运行的程序:'^php test_program.php$',但为什么该命令的那部分不只是'test_program.php'?开头的^php 和结尾的$ 有什么作用?

【问题讨论】:

    标签: java php linux terminal kill-process


    【解决方案1】:

    您正在查看正则表达式。此表达式在进程名称中的任意位置查找字符串test_program.php。因此,如果进程名称类似于

    /var/php -runcommand test_program.php
    

    它会找到进程并杀死它。

    这也解释了-f, -full 选项。如果不使用正则表达式,则必须使用完整的进程名称(前一行)来匹配进程。

    最后,-INT 通常用于向任务发送运行级别。

    编辑

    我错了,-INT 选项不是用于运行级别(用于 Linux 内核),而是用于向任务发送 信号。这可能类似于Term(终止)、Stop(关闭)或Cont(继续处理)。 pkill 默认向进程发送终止信号。

    /var/php -runcommand test_program.php 是一个流程示例。如果您使用命令ps ax,您将获得所有进程的列表以及执行它们的程序。所以我只是假设php解释器驻留在/var/php/,php文件的执行是一个命令。

    【讨论】:

    • 我对正在使用的命令有点陌生。我不太确定运行级别是什么,我什至不确定/var/php -runcommand test_program.php 在做什么,可能只是像我对php test_program.php 一样运行程序?整个命令的哪一部分正在杀死进程?因为pkill的定义是给命令发信号,所以如果有很多命令,命令行中哪一个指定了“killing”?
    猜你喜欢
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多