linux shell ctrl+c 为啥可以退出进程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux shell ctrl+c 为啥可以退出进程相关的知识,希望对你有一定的参考价值。

ctrl+c触发一个信号给进程,信号名为SIGINT (interrupt signal中断信号)

你可以在shell里trap掉这个信号,再按ctrl+c就不会退出了。

trap 'echo \"no exit\"' 2追问

有命令可以不用ctrl+c退出的吗?比如"bash script", ./script 脚本可以用ctrl+C退出,进程被kill掉,但是script里面包含bash $0, bash 的进程为什么不可以ctrl+C kill掉?谢谢

追答

没见过你说的这种情况,除非你看错了,你看到的bash有可能是和终端绑在一起的那个,而不是执行script的那个,例如,我执行一个脚本sx1:
17874 0.7 0.0 \_ xterm
17876 0.3 0.0 | \_ bash
18621 0.2 0.0 | \_ bash sx1
18624 0.0 0.0 | \_ sleep 1
18625 0.1 0.0 \_ /bin/ps axf -o pid %mem %cpu cmd

ctrl+c以后:
17874 0.7 0.0 \_ xterm
17876 0.3 0.0 | \_ bash
18666 0.1 0.0 \_ /bin/ps axf -o pid %mem %cpu cmd

很明显,bash sx1完全退出了.

参考技术A ctrl+c对于shell就是中断指令啊,当然可以退出进程了。 参考技术B 如果是在前台运行 linux shell 使用ctrl+c就会中断script运行。
需要使用 nohup命令使script后台运行,就不会出现这样的问题了。
使用方法如下:
在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&"来将命令同时放入后台运行,也可用">filename 2>&1"来更改缺省的重定向文件名。
nohup 示例

[root@pvcent107 ~]# nohup ping www.ibm.com &
[1] 3059
nohup: appending output to `nohup.out'
[root@pvcent107 ~]# ps -ef |grep 3059
root 3059 984 0 21:06 pts/3 00:00:00 ping www.ibm.com
root 3067 984 0 21:06 pts/3 00:00:00 grep 3059
[root@pvcent107 ~]#

使用jobs命令查看用户发起的后台任务

参考资料:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

Linux Shell 快捷键

常用


Ctrl+R:快速检索历史命令(Retrieve)

Ctrl+U:删除整个命令行文本字符(Unity)


Ctrl+S:暂停正在运行的程序 (Stop)

Ctrl+Q:退出暂停(Quit)

Ctrl+Z:使正在运行在终端的任务,运行于后台 (可用fg恢复)

Ctrl+C:中断终端中正在执行的任务(Complete)

Ctrl+D:在空命令行的情况下可以退出终端(Drop Out)

Ctrl+P :上一个使用的历史命令,相当于向上键 (Previous)

Ctrl+N:下一个使用的历史命令,相当于向下键(Next )

Ctrl+[ :相当于Esc键


Esc键:连续按3次显示所有的支持的终端命令

Tab键:命令、文件名等自动补全功能

移动光标

Ctrl+A : 光标定位于行首  (Ahead)

Ctrl+E : 光标定位于行尾  (End)

Ctrl+B:光标向行首移动一个字符(Backwards)

Ctrl+F:光标向行尾移动一个字符(Forwards)

 

删除字符

Ctrl+W: 删除光标处到行首的字符

Ctrl+K:删除光标处到行尾的字符

Ctrl+H:向行首删除一个字符

Ctrl+D:向行尾删除一个字符

Ctrl+Y:粘贴

Ctrl+T: 交换光标所在字符和其前的字符 (Turn to)




以上是关于linux shell ctrl+c 为啥可以退出进程的主要内容,如果未能解决你的问题,请参考以下文章

Linux的shell脚本trap信号处理

Linux里面shell窗口命令Ctrl+s命令作用是啥?

linux shell 常用指令

Linux Shell 快捷键

常用linux系统命令-shell命令

linux常用命令(待完善)