我熟悉几个过程信号以及它们的作用,但我想了解它们。
关于每个信号,我想了解三件事。
这是信号列表和我目前所拥有的。
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) 我希望为此受到一些抨击,但我在任何地方都找不到答案。好像应该很明显了吧。有时,当我在 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)
我知道我搞砸了,但如何在不关闭终端的情况下返回提示?
我读了一个声称正在运行的用户的答案
foo 2>&1 >& output.log &
Run Code Online (Sandbox Code Playgroud)
foo即使他们注销,也会导致继续运行。据该用户称,这甚至可以通过 SSH 连接工作。
我并不真正相信这一点,因为我的印象是,在与 SSH 断开连接或终止 TTY 的情况下,shell 及其进程会收到 SIGHUP,导致它们终止。这一点,我的假设下,被使用的唯一理由nohup在这样的情况下,或者tmux,screen等。
然后我查看了glibc 的手册:
该信号还用于向与该会话相关联的作业报告终端上控制进程的终止;此终止有效地断开会话中的所有进程与控制终端的连接。
这似乎证实了我的想法。但进一步看,它说:
如果进程是具有控制终端的会话领导者,则向前台作业中的每个进程发送 SIGHUP 信号,并且控制终端与该会话解除关联。
那么,这是否意味着置于后台的作业将不会收到 SIGHUP?
令我更加困惑的是,我运行了一个交互式 Zsh 会话,运行yes >& /dev/null &并输入了exit,当 Zsh 警告我有正在运行的作业时,exit第二次输入后,它告诉我它已经 SIGHUPed 一个作业。在 Bash 中执行完全相同的操作会使工作继续运行……
我正在运行以下命令,并监视另一个系统上的输出文件:
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。
我知道我可以用 kill -9 命令杀死任何进程。但有时我看到即使我用 终止了一个程序CTRL+C,该进程也不会被杀死。所以我想知道 kill -9 和CTRL+C
我看到了很多解决问题的解决方案,例如
非法指令(核心转储)
但是,我想知道这到底是什么意思?是什么导致了该错误,其根本原因是什么?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)