Linux /macos kill 那个参数是用来显示结果的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gIrl1990
V2EX    问与答

Linux /macos kill 那个参数是用来显示结果的?

  gIrl1990 2019-08-24 08:28:47 +08:00 2381 次点击
这是一个创建于 2240 天前的主题,其中的信息可能已经有所发展或是发生改变。
比如: kill -9 29720 输出: killed pid 29720 

我生怕一个回车重复执行,杀了 pid 重新分配的另一个进程

第 1 条附言    2019-08-24 09:48:38 +08:00
错字: 那个参数 -> 哪个参数
第 2 条附言    2019-08-24 11:53:09 +08:00

相关命令:

pgrep -af "pattern" pkill -9 -ef "pattern" 
17 条回复    2019-08-29 12:53:27 +08:00
AngelCriss
    1
AngelCriss  
   2019-08-24 08:36:26 +08:00 via Android
echo $?
watzds
    2
watzds  
   2019-08-24 08:53:06 +08:00 via Android
不会立马分配这个老 id,linux 有这个机制的
lionseun
    3
lionseun  
   2019-08-24 08:54:22 +08:00 via Android
自己写个 alias 吧
vacua
    4
vacua  
   2019-08-24 08:59:02 +08:00 via Android
…重复执行可太秀了…
linux 进程被杀死 pid 不会立刻分配给另外的新进程,进程被杀死不代表进程的所有资源立刻被回收,杀死和回收之间需要一定的时间,其次 pid 分配采取了延迟重用的算法,依次分配 32768 个 pid 号,目的就是为了减少出现你说的那种 pid 立刻被分配给了其他进程的情况,在这些手段之下出现你说的这种情况的概率真是微乎其微
KINGOD
    5
KINGOD  
   2019-08-24 09:01:04 +08:00 via Android
不是,这个参数是向进程发送 signal。9 是 SIGKILL,杀进程。3 是 SIGQUIT,在 Android 上向一个进程发送 SIGQUIT,可以触发 dump 那个进程的 call stack。完整的 signal 列表可以查看 https://en.m.wikipedia.org/wiki/Signal_(IPC)
vimsucks
    6
vimsucks  
   2019-08-24 09:19:54 +08:00 via Adroid
@KINGOD 楼主打错别字了,那>哪
gIrl1990
    7
gIrl1990  
OP
   2019-08-24 09:49:48 +08:00
@lionseun ??
@vacua @watzds soga 谢谢两位
@vimsucks 3q
gIrl1990
    8
gIrl1990  
OP
   2019-08-24 09:58:04 +08:00
比如方向键向上,然后一个手快回车,然后执行了。
希望有个输出或者有个确认,这样就比较好了~
GjriFeu
    9
GjriFeu  
   2019-08-24 10:41:25 +08:00 via iPhone
我一般都是执行两遍确认进程被杀了
Isaac313
    10
Isaac313  
   2019-08-24 11:28:48 +08:00 via Android
命令执行完拍多几个 1 和回车 (溜了溜了,)
KINGOD
    11
KINGOD  
   2019-08-24 20:03:29 +08:00
那么 1 楼就是正确答案了,$? 代表上一个 shell 命令的返回值。0 代表信号已经发送给对应的进程了。

man pkill:
EXIT STATUS
0 One or more processes matched the criteria.
1 No processes matched.
2 Syntax error in the command line.
3 Fatal error: out of memory etc.

如果用 oh-my-zsh 的默认主题,可以直观看到上一个命令返回的是不是 0 (表现在 PS1 开头那个箭头是绿还是红)。
或者自己特意配置过 bash 的 PS1,也能看出来。

执行一次,返回 0,说明信号发过去了。再执行一次,这个进程号就找不到了,会返回非 0。
gIrl1990
    12
gIrl1990  
OP
   2019-08-24 20:09:13 +08:00
@KINGOD 还能配置 显示命令的 EXIT STATUS,怎么配置,求教程,来个链接什么的
gIrl1990
    13
gIrl1990  
OP
   2019-08-24 20:24:54 +08:00
接上一条: 那可以配置展示 控制台输出的状态吗? 是错误输出还是正常输出。。
KINGOD
    14
KINGOD  
   2019-08-24 21:42:03 +08:00
0. Linux 不可能把刚杀的进程号分给刚建的新进程,其实最初的问题不用担心。
至于 显示命令的 EXIT STATUS,

1. 最简单的还是 3 楼的方法,写个 function,调用自定义的 kill 时,实际调用
pkill $1 ; echo $?

或者
pkill $1 && echo "signal sent"
# 当 pkill $1 返回 true 时,才执行 && 后面的 echo

2. 装个 shell 配置管理工具,我用的这个。
https://github.com/robbyrussell/oh-my-zsh
https://github.com/Bash-it/bash-it
默认 theme 一般都有 $?

3. 手动修改 PS1 环境变量
PS1 这个变量,是控制命令提示符的样式的。可以改颜色、加 $?、加日期时间等。不过我也只是知道这么多,自己没改过。你可以搜搜 PROMPT_COMMAND 关键字,把自己写的函数的返回值赋到 PS1,比写 PS1=... 的 one-liner 会容易些。
主要可以参考 ArchWiki 文档 https://wiki.archlinux.org/index.php/Bash/Prompt_customization#Visualizing_exit_codes
julyclyde
    15
julyclyde  
   2019-08-24 22:54:38 +08:00
发信号并不确保效果啊
只管发不管埋的
gIrl1990
    16
gIrl1990  
OP
   2019-08-24 23:49:35 +08:00
@KINGOD 退出码我是已经搞成可视化了,那控制台普通输出还是错误输出可否可视化?
KINGOD
    17
KINGOD  
   2019-08-29 12:53:27 +08:00 via Android
@gIrl1990 你说的是 stdout 和 stderr 嘛?我没弄过,甚至没想到过,给这两个加样式。不过刚才顺手搜了下 terminal colored stdout stderr,发现有很多讨论,你可以用我的关键词自己搜一下相关资料。比如 https://serverfault.com/q/59262/431239
https://stackoverflow.com/q/6841143/1819810
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6051 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 25ms UTC 02:37 PVG 10:37 LAX 19:37 JFK 22:37
Do have faith in what you'r doing.
ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86