比如: kill -9 29720
输出: killed pid 29720
我生怕一个回车重复执行,杀了 pid 重新分配的另一个进程
相关命令:
pgrep -af "pattern"
pkill -9 -ef "pattern"
1
AngelCriss 2019-08-24 08:36:26 +08:00 via Android
echo $?
|
2
watzds 2019-08-24 08:53:06 +08:00 via Android
不会立马分配这个老 id,linux 有这个机制的
|
3
lionseun 2019-08-24 08:54:22 +08:00 via Android
自己写个 alias 吧
|
4
vacua 2019-08-24 08:59:02 +08:00 via Android
…重复执行可太秀了…
linux 进程被杀死 pid 不会立刻分配给另外的新进程,进程被杀死不代表进程的所有资源立刻被回收,杀死和回收之间需要一定的时间,其次 pid 分配采取了延迟重用的算法,依次分配 32768 个 pid 号,目的就是为了减少出现你说的那种 pid 立刻被分配给了其他进程的情况,在这些手段之下出现你说的这种情况的概率真是微乎其微 |
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)
|
8
gIrl1990 OP 比如方向键向上,然后一个手快回车,然后执行了。
希望有个输出或者有个确认,这样就比较好了~ |
9
GjriFeu 2019-08-24 10:41:25 +08:00 via iPhone
我一般都是执行两遍确认进程被杀了
|
10
Isaac313 2019-08-24 11:28:48 +08:00 via Android
命令执行完拍多几个 1 和回车 (溜了溜了,)
|
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。 |
13
gIrl1990 OP 接上一条: 那可以配置展示 控制台输出的状态吗? 是错误输出还是正常输出。。
|
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 |
15
julyclyde 2019-08-24 22:54:38 +08:00
发信号并不确保效果啊
只管发不管埋的 |
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 |