linux注销后,后台脚本[不会]销毁?!? 400 报错 我是linux初学者,正在学习程序管理这一章,使用的是centos 6.X。
我上网下了个shell脚本,后台执行他 [./xx.sh &] ,然后退出登录,我用其他账号ps查看发现这个脚本仍然在执行 !?
而且这个脚本的PID由原来正常的PID变成了 1。
PS:使用nohup来执行和上面描述的情况一样!
我【没有用nohup】等其他命令,为什么退出登录脚本还在继续执行?!
user注销后,后台程序理应被关闭;但实验中却没有?!这是为什么?我想知道原因
而且我试过[top &]这样,注销后它会正常退出的!done
顺道请教一下,怎么让[已经执行的程序]即使user注销/终端断开也能继续运行?
应该不是Ctrl+z吧,这个只是挂起,即使使用bg也只是放到后台。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
制作成系统服务######回复 @kabin : 注销只是一个退出登录状态 ,也不应该带这些操作吧,也许你可以写个脚本在完成注销的时候关闭你想关闭的程序######我的问题是,user注销后,后台程序理应被关闭;但实验中却没有?!这是为什么?我想知道原因。######web server 用户注销了 然后把这个用户的 httpd 关了?######怎么感觉你说的和我问题不是同一件事情。。。。######linux中 “&” 和“nohup”都是后台执行某程序的意思,即使你注销或者退出登录,仍然会运行,除非你kill掉此进程。######而且我试过[top &]这样,注销后它会正常退出的! 请看看问题,你有试过么?######但是各大书籍都说使用&,注销后会会被结束,因为是该用户bash的子程序。。。。你的观点比较奇怪######
简单来说
后边不加 & ,term关闭后程序会退出
后边加&,用exit退出term。程序还可以继续执行
######“user注销后,后台程序理应被关闭;但实验中却没有?!这是为什么?我想知道原因” 这是windows的做法吧,或者个人理解是图形终端的做法。windows中后台程序不是真后台成为一个服务/后台进程,只是前端图形隐藏了而已。
linux某个脚本或程序没有后台运行(比如加入“&” 或“nohup”,又或创建后台进程),那么在其执行终端(不管是图形终端,还是命令行终端)退出后,进程也会结束。
######你可以man nohup看看######nohup是专门用于user断开后,程序仍然可以执行的命令。。。-_-~!汗 因为用户注销前,他的所有子程序都会收到SIGHUP信号,而停止程序;而nohup是让该程序忽略这个信号!######另外 [top &] 是个特殊情况。######为什么呢?######ping `hostname` 在用户退出终端(exit)时,终端会收到hup(hangup)信号从而关闭其所有子进程(比如这里的ping).nohup 和&不一样的.
nohup肯定不会被注销掉.&这种东西好像是看情况.
我感觉和脚本的类型有关系, 看执行的是什么操作, 申请的是那种资源, 因为操作系统不是实时检查客户端退出的.
如果脚本是实时申请资源或者操作系统调度的那么会很快退出, 如果是半沉睡那种, 应该不会马上退出的.
######回复 @kabin : :) 貌似确实是这样的.你不说我还真想不起来总结这个规律...######是的,也就是说,&程序注销后是否会被关闭,貌似要看程序的类型;这个真没了解