AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 707363
Accepted
MathMan
MathMan
Asked: 2022-06-25 04:24:38 +0800 CST2022-06-25 04:24:38 +0800 CST 2022-06-25 04:24:38 +0800 CST

将 -exec 与 kill 命令一起使用

  • 772

我正在尝试执行以下命令,其中我使用了 kill 和 exec 命令。

kill -l -exec grep -i 'term' {} +

因为, kill -l 返回所有终止信号的列表,我想使用 grep 和不区分大小写的 -i 标志来查找所有包含单词“term”的信号。但是,它返回以下错误。有人可以建议为什么会这样吗?

-bash: kill: grep: invalid signal specification
-bash: kill: -i: invalid signal specification
15
-bash: kill: {}: invalid signal specification
-bash: kill: +: invalid signal specification
grep kill
  • 2 2 个回答
  • 50 Views

2 个回答

  • Voted
  1. Best Answer
    Stéphane Chazelas
    2022-06-27T09:57:31+08:002022-06-27T09:57:31+08:00

    -exec cmd {} +是find命令和find单独命令的成语。它在那里使用cmd它找到的文件作为参数运行。-exec没有选项,它通常称为谓词,用于构成find表达式的条件和操作链(find还支持在应该开始查找的文件/目录列表之前传递的选项)。

    kill是一个内置在大多数 shell 中的命令,用于根据进程 ID 或它们所属的 shell 作业向进程发送信号。

    大多数实现还支持一个-l选项,该选项列出可能以随实现而变化的格式发送的信号。有些列表信号每行一个,有些在列中,有些只是空格分隔,有些包括信号名称和编号。

    如果除了-l选项之外,您还传递了一个信号名称或编号(带有或不SIG带有某些实现的前缀),一些kill实现将输出相应的信号编号/名称,尽管有些总是打印名称,有些只接受数字。

    所以:

    kill -l TERM
    

    例如,在某些kill实现中,包括 shell 的kill内置zsh将输出:

    15
    

    在15大多数(如果不是全部)系统上,SIGTERM 的实际值。

    在zshshell 中,信号名称(+ EXIT 也用于trap)也可以在$signals特殊数组中使用:

    $ echo $signals
    EXIT HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS ZERR DEBUG
    

    给定信号的信号编号是它在数组中的索引减 1。

    $ echo $signals[15+1]
    TERM
    $ echo $(( signals[(I)TERM] - 1 ))
    15
    

    或者对于不区分大小写的匹配:

    $ set -o extendedglob
    $ echo $(( signals[(I)(#i)term] - 1 ))
    15
    

    (kill -l term也适用于许多kill实现)。

    • 2
  2. lauhub
    2022-06-27T09:18:21+08:002022-06-27T09:18:21+08:00

    使用该-l选项,不处于 POSIX 模式时bash的kill内置输出为:

    $ kill -l
     1) SIGHUP        2) SIGINT       3) SIGQUIT      4) SIGILL
     5) SIGTRAP      6) SIGABRT      7) SIGEMT       8) SIGFPE
     9) SIGKILL     10) SIGBUS      11) SIGSEGV     12) SIGSYS
    13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGURG
    17) SIGSTOP     18) SIGTSTP     19) SIGCONT     20) SIGCHLD
    21) SIGTTIN     22) SIGTTOU     23) SIGIO       24) SIGXCPU
    25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
    29) SIGINFO     30) SIGUSR1     31) SIGUSR2     
    

    我可以将每一对number) signal与xargs -n 2

    所以这应该做你要求的:

    kill -l | xargs -n 2 | grep -i term
    
    • 0

相关问题

  • 命令 ls | grep 只显示目录(当它也应该显示文件时)

  • grep 什么时候计数,什么时候不计数

  • 默默杀死subshel​​l?

  • 从后台进程退出脚本?

  • grep --line-buffered 直到 X 行?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve