相关疑难解决方法(0)

终止信号列表

我熟悉几个过程信号以及它们的作用,但我想了解它们。

关于每个信号,我想了解三件事。

  1. 信号有什么作用
  2. 当通常发送这样的信号时
  3. 任何与它们关联的命令行快捷方式或命令

这是信号列表和我目前所拥有的。

0 - ? 
1 - SIGHUP - ?, controlling terminal closed, 
2 - SIGINT - interupt process stream, ctrl-C 
3 - SIGQUIT - like ctrl-C but with a core dump, interuption by error in code, ctl-/ 
4 - SIGILL 
5 - SIGTRAP 
6 - SIGABRT 
7 - SIGBUS 
8 - SIGFPE 
9 - SIGKILL - terminate immediately/hard kill, use when 15 doesn't work or when something disasterous might happen if process is allowed to …
Run Code Online (Sandbox Code Playgroud)

signals

69
推荐指数
1
解决办法
20万
查看次数

如何退出或取消错误的 bash 命令?

我希望为此受到一些抨击,但我在任何地方都找不到答案。好像应该很明显了吧。有时,当我在 bash 终端中输入错误命令时,光标会跳到下一行而没有任何错误或任何内容。我说不出我做错了什么。就像我被困在程序中一样。重演:

$ tidy
Run Code Online (Sandbox Code Playgroud)

我:“糟糕!这不是我想打字的意思……”

:q
Run Code Online (Sandbox Code Playgroud)

我:“那没用……”

:exit
:quit
exit
quit
/exit
/quit
-exit
-quit
-wtf???
Run Code Online (Sandbox Code Playgroud)

我知道我搞砸了,但如何在不关闭终端的情况下返回提示?

command-line shell kill terminal

52
推荐指数
4
解决办法
46万
查看次数

在哪些情况下,当您注销时,SIGHUP 不会发送到作业?

我读了一个声称正在运行的用户的答案

foo 2>&1 >& output.log &
Run Code Online (Sandbox Code Playgroud)

foo即使他们注销,也会导致继续运行。据该用户称,这甚至可以通过 SSH 连接工作。

我并不真正相信这一点,因为我的印象是,在与 SSH 断开连接或终止 TTY 的情况下,shell 及其进程会收到 SIGHUP,导致它们终止。这一点,我的假设下,被使用的唯一理由nohup在这样的情况下,或者tmuxscreen等。

然后我查看了glibc 的手册

该信号还用于向与该会话相关联的作业报告终端上控制进程的终止;此终止有效地断开会话中的所有进程与控制终端的连接。

这似乎证实了我的想法。但进一步看,它说

如果进程是具有控制终端的会话领导者,则向前台作业中的每个进程发送 SIGHUP 信号,并且控制终端与该会话解除关联。

那么,这是否意味着置于后台的作业将不会收到 SIGHUP?

令我更加困惑的是,我运行了一个交互式 Zsh 会话,运行yes >& /dev/null &并输入了exit,当 Zsh 警告我有正在运行的作业时,exit第二次输入后,它告诉我它已经 SIGHUPed 一个作业。在 Bash 中执行完全相同的操作会使工作继续运行……

ssh signals tty

13
推荐指数
1
解决办法
9396
查看次数

ssh 终止后,ssh 命令在其他系统上意外继续

我正在运行以下命令,并监视另一个系统上的输出文件:

ssh $ip_address 'for n in 1 2 3 4 5; do sleep 10; echo $n >>/tmp/count; done'
Run Code Online (Sandbox Code Playgroud)

如果我使用^C或仅通过终止我登录的终端来终止ssh 命令,我希望远程命令也终止。但是,这不会发生:/tmp/count无论如何都会获取所有数字 1-5,并ps -ejH显示 shell 及其sleep子项继续运行。

这是预期的行为吗,是否在任何地方都有记录?我可以禁用它吗?通过阅读,我希望必须使用 nohup 显式启用这种行为,而不是让它成为默认值。

我查看了 ssh 和 sshd 的手册页,但没有发现任何明显的内容,Google 向我指出了打开此行为的说明,而不是关闭它的说明。

我正在运行 Red Hat Enterprise Linux 6.2,两个系统上都有 root 登录名和 bash shell。

ssh rhel openssh sshd

11
推荐指数
1
解决办法
3673
查看次数

通过 Ctrl+C 退出进程与发出 kill -9 命令有什么区别?

我知道我可以用 kill -9 命令杀死任何进程。但有时我看到即使我用 终止了一个程序CTRL+C,该进程也不会被杀死。所以我想知道 kill -9 和CTRL+C

process kill signals process-management command

6
推荐指数
1
解决办法
5794
查看次数

“非法指令(核心转储)”究竟是什么意思?

我看到了很多解决问题的解决方案,例如

非法指令(核心转储)

但是,我想知道这到底是什么意思?是什么导致了该错误,其根本原因是什么?CPU 是否得到了它认为是指令但无法解码的人?引擎盖下会发生什么来产生该错误?

dmesg,我看到

[429572.598803] traps: test[4054] trap invalid opcode ip:400066 sp:ffac8cc0 error:0 in test[400000+1000]
[429758.598292] traps: test[4401] trap invalid opcode ip:400066 sp:ffa3f990 error:0 in test[400000+1000]
[430066.170626] traps: test[4854] trap invalid opcode ip:400066 sp:ff8ab000 error:0 in test[400000+1000]
[430439.855002] traps: test[5212] trap invalid opcode ip:8048071 sp:ffce2fa0 error:0 in test[8048000+1000]
Run Code Online (Sandbox Code Playgroud)

cpu error-handling x86 linux-kernel intel

5
推荐指数
1
解决办法
2万
查看次数