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

 我来答
luneng8183
推荐于2018-05-15 · TA获得超过900个赞
知道小有建树答主
回答量:606
采纳率:100%
帮助的人:506万
展开全部
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完全退出了.
健忘的猫
2012-02-28 · TA获得超过189个赞
知道答主
回答量:113
采纳率:0%
帮助的人:69.9万
展开全部
ctrl+c对于shell就是中断指令啊,当然可以退出进程了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
惠静逸r
2012-02-28 · TA获得超过868个赞
知道小有建树答主
回答量:858
采纳率:97%
帮助的人:474万
展开全部
如果是在前台运行 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/

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式