QNX-8—QNX常用命令—slay

发布时间 2023-06-25 18:07:36作者: Hello-World3

一、翻译

翻译自:
QNX Software Development Platform --> Utilities & Libraries --> Utilities Reference --> S --> slay
https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.utilities/topic/s/slay.html


按名称或 ID 终止或修改进程 (QNX Neutrino)


1. 句法:

slay [options]... process_name|process_id ...


2. 运行于:

QNX中微子


3. 选项:

-signal_number

指定在与 process_name 或 process_id 匹配的进程上发出哪个信号。 有关信号编号的列表,请参阅 <signal.h>。

-C cpunum

(QNX Neutrino Core OS 6.3.2 或更高版本)将 CPU 亲和性设置为 cpunum,其中第一个 CPU 为 0。您可以多次使用此选项。 有关详细信息,请参阅下面的“设置运行掩码”。

-f

强制对共享相同 process_name 或 ID 的所有进程执行该操作。 通常,当多个进程具有指定的名称或 ID 时,slay 会提示确认。

-h

在进程上设置 SIGSTOP 信号,有效地保持其执行。

-i

(QNX Neutrino Core OS 6.3.2 或更高版本)与 -C 或 -R 选项结合使用时,除了运行掩码之外,还设置继承掩码。 有关详细信息,请参阅下面的“设置运行掩码”。

-m name|pid

将匹配限制为仅进程名称或仅进程 ID。 默认情况下,slay 匹配进程 ID 和名称。 例如:

-------------------------------------------
This command:       Matches a process with:
-------------------------------------------
slay 1234           ID 1234 or the name 1234
slay -m pid 1234    ID 1234
slay -m name 1234   The name 1234
-------------------------------------------


-n nodename

(QNX Neutrino Core OS 6.3.2 或更高版本)在指定远程节点 nodename 上搜索指定进程。

-P prio[f|r|o]

将与 process_name 匹配的进程的优先级设置为 prio。 非 root 用户的最大优先级限制为 63; root 可以指定最高 255 的优先级。您可以使用 procnto 的 -P 选项更改特权优先级的范围。######
优先级后面可以跟f、r或o,分别将调度策略更改为 SCHED_FIFO、SCHED_RR 或 SCHED_OTHER。

SCHED_OTHER 目前与 SCHED_RR 相同。

如果指定 -P 而没有 -T,则 slay 设置指定进程中所有线程的优先级。

-p

以十进制形式将进程 ID 打印到标准输出,每行一个进程 ID。 这些进程并没有被杀死。

-q

在处理进程之前进行查询,即使只找到一个具有匹配名称或 ID 的进程(覆盖选项 -f)。 此选项对于查看 slay 提供的其他进程信息很有用。

-Q

安静。 当您从 C 程序调用 slay 时,此选项非常有用。

-R runmask

(QNX Neutrino Core OS 6.3.2 或更高版本)将 CPU 亲和性设置为 runmask。 您可以多次使用此选项来指定长度超过 32 位的掩码。 有关详细信息,请参阅下面的“设置运行掩码”。

-S

不要终止具有子进程的进程。 您通常在关闭其他设备上的 shell 的 shell 命令中使用此选项。 设置此选项可防止 slay 杀死正在运行其他进程(例如编辑器)的 shell。 如果您还指定 -q,则即使指定进程有子进程,slay 也会提示强制终止。

-s signal_name

要发送的信号。 此选项会导致为与 process_name 或 ID 匹配的进程发出信号 sig。

-T tid

(QNX Neutrino Core OS 6.3.2 或更高版本)将操作应用于具有给定 ID 的线程。 您可以使用此选项将信号定向到特定线程,或更改线程的优先级或运行掩码。

-t ttyname

仅匹配名称(或 ID)为 process_name (process_id) 且以 ttyname 作为控制终端的进程。 如果 ttyname 不以斜杠 (/) 开头,则 slay 假定它以 /dev/ 前缀开头。

-u

在进程上设置 SIGCONT 信号。 如果进程的执行被 SIGSTOP 信号暂停,则从中断处开始执行。 如果进程之前没有设置过 SIGSTOP,则 SIGCONT 信号不起作用。

-v

冗长; 显示有关正在发出信号的进程的消息。

process_name

要操作的进程的名称。

process_id

要操作的进程的 ID。


4. 描述:

使用 slay 实用程序按名称或 ID 终止或修改进程。 指定进程名称时不带路径。 例如,假设您想要终止一个名为 /bin/sleep 的进程。 输入 sleep 作为进程名称足以让 slay 找到并杀死它。

该命令有多种形式。 最简单且最常用的形式是:

slay process_name|process_id

此命令查找具有指定名称或 ID 的进程。 如果只找到一个,则会在其上设置一个 SIGTERM 信号。 如果多个进程具有指定的名称或 ID,系统将提示您对每个进程做出 yes/no 响应。 当每个进程以此形式列出时,还会显示进程名称、pid 和 tty 组/成员编号以帮助您进行选择。


(1) 要在进程上设置信号,您必须拥有该进程或以 root 身份登录。
(2) 已终止进程的清理按照发送信号的线程的优先级进行。
(3) 当您使用 slay 实用程序更改线程的优先级或运行掩码时,它会使用 DCMD_PROC_STOP 和 DCMD_PROC_RUN devctl() 命令。 这些命令用于调试; 不要在生产系统中使用它们。


4.1 设置运行掩码

在多核系统上,您可以使用运行掩码来指定线程或进程可以在哪些处理器上运行。 默认值为全 1(即所有 CPU)。

您可以使用 slay 更改已经运行的线程的运行掩码,或者运行掩码和继承掩码; 要设置新进程的掩码,请使用 on 命令。 这两个命令以相同的方式解释 -C 和 -R 选项。

您可以使用多个 -R 选项来指定长度超过 32 位的运行掩码。 第一个 -R 选项指定位 0 到 31,第二个指定位 32 到 63,依此类推。

如果同时使用 -C 和 -R 选项或它们的多个实例,则生成的掩码是所有 -C 和 -R 选项的按位 ORing。 例如,slay -R 0x1 相当于 slay -C0,slay -R 0x1 -C3 相当于 slay -C0 -C3。【?】

当您使用 -R 或 -C 而不使用 -T 时,指定进程中的所有线程都会受到影响。

如果使用 -R 或 -C,slay 始终更改指定线程或进程的运行掩码。 如果还指定 -i 选项,slay 还会将继承掩码【?】设置为与运行掩码相同的值。


(1) 如果生成的运行掩码指定至少一个物理存在的 CPU,则接受该运行掩码,并且忽略与不存在的 CPU 对应的任何位。 如果生成的运行掩码未指定任何物理存在的 CPU,则会产生错误。
(2) 如果更改进程的运行掩码,则阻塞线程的处理器不会更改,直到线程解除阻塞(或者如果线程保持阻塞,则永远不会更改)。


有关运行掩码的更多信息,请参阅系统架构指南的 Multicore Processing 一章和 QNX Neutrino 程序员指南的 Multicore Processing 一章。


5. 例子:

终止节点 sam 上的 some_app 进程:

slay -n sam some_app

以 root 身份将 my_test 进程的优先级更改为 20:

slay -P 20 my_test
slay -P 19r 1146965
slay -T 100 -P 19r 806997

 

6. 退出状态

0

没有进程符合提供的标准、发生错误或匹配并执行操作的进程数是 256 的倍数。

1–128

匹配并按模 256 进行操作的进程数量(例如,状态 1 可能意味着 1 个进程、257 个进程、513 个进程等)。

129–160

如果退出状态是通过直接生成收集的,则这是匹配并以模 256 执行的进程数。如果通过 shell 运行 slay,则这要么是匹配并执行的进程数,要么指示 slay 死亡的原因 到一个信号(从退出状态中减去 128 以确定信号编号)。

161–255

匹配并执行操作的进程数以 256 为模。


7. 注意事项:

由于历史原因,slay 的退出状态是不标准的。 我们强烈建议您不要在依赖退出状态的任何情况下使用 slay,因为在某些情况下状态是不明确的。

 

相关概念
Multicore Processing (System Architecture)
Multicore Processing (QNX Neutrino Programmer's Guide)


相关参考
kill
on
pidin
ps