linux shell ctrl+c 为什么可以退出进程
3个回答
展开全部
ctrl+c触发一个信号给进程,信号名为SIGINT (interrupt signal中断信号)
你可以在shell里trap掉这个信号,再按ctrl+c就不会退出了。
trap 'echo \"no exit\"' 2
你可以在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完全退出了.
展开全部
ctrl+c对于shell就是中断指令啊,当然可以退出进程了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是在前台运行 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命令查看用户发起的后台任务
需要使用 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/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询