zoukankan      html  css  js  c++  java
  • Ubuntu15.04 删除/sbin/upstart与孤儿进程收养的问题

    使用ubuntu 15.04的用户在fork进程后如果子进程成为孤儿进程那么就会发现一个问题,那就是收养孤儿进程的不是我们熟悉的PID为1的init,而是一个在/sbin的upstart。那么这个进程是什么呢。

    不妨先看一下这个进程:


    那他的父进程呢,根据PID我们找到他的父进程:


    发现他的父进程就是ubuntu图形化界面的进程。

    通过他所在的父目录可以看出他是一个管理系统的命令。他也是开机进入用户时启动。上网查了一下这个进程的功能是:用于linux开机自动启动某些后台服务,同时还承担监控这些服务运行状态的功能。

    ubuntu不错的一个成就就是用upstart代替init的一部分功能吧,之所以其他的linux发行版本没有这么做,大多是因为有着自己的考虑。upstart就是在ubuntu15.04中在图形化界面收养孤儿进程的进程。为什么我说是图形化界面下的收养孤儿进程的进程呢?


    那么就可以作死一下了。为什么一定是upstart收养孤儿进程,我把它关掉,总不能归他收养了吧。

    第一步,kill掉upstart。因为upstart本身属于用户,所以被kill掉了,接着就屏幕一卡注销了。我想这个大概与他的父进程是lightdm且当前运行的是图形化界面有关把。也就是upstart这个后台服务可能跟图形界面有关。

    第一步作死失败,那就索性把他源文件删除或移动!

    第二步,想了想,为了不作大死,还是移动到家目录下吧。移动完成以后,kill掉正在进行的进程upstart,注销后,再进去,结果直接注销又跳出来了,再进入的时候同样,于是不停的注销,最后的结果是进不去图形界面里面去了!(当时有点小慌张)


    鼓捣了半天,偶然看到网上对upstart有这样一句描述:upstart的运行级别3不是在text模式,而且也不能通过改变运行界别来改变进入text模式。

    这句话告诉我们,upstart跟文本界面是没有关系的,所以直接ctrl alt F1进入文本界面,然后将文件移回,进入图形界面登录,又恢复正常了。


    那么这个时候想到一个问题,既然在upstart无法影响文本界面的话我们不妨进入文本界面进行一下操作。发现文本界面如果kill掉upstart是没有任何影响的,只会注销图形化界面,我这时候查看孤儿进程的收养者,发现变成PID为1的init了。一切大概就明了了。


    小结:/sbin/upstart这个文件运行后的进程是与图形化界面息息相关的,两者没有一个,另外一个也不会存在。upstart是在图形化界面下的一个后台的守护程序。在图形化界面收养孤儿进程。但是在文本界面下,一切都与upstart无关了。


  • 相关阅读:
    vscode使用SSH Targets连接远程系统进行开发
    python2.7版本安装pip
    ubuntu系统安装最新版本nodejs
    win7安装yarn后执行报错
    Object合并,并使用默认值处理
    解决JSON.stringify序列化循环依赖对象报错
    docker环境下安装maven私服和gitlab
    单例模式的无锁实现
    【Java学习笔记】Java的垃圾回收机制
    Ubuntu下源码安装Python
  • 原文地址:https://www.cnblogs.com/chilumanxi/p/5136102.html
Copyright © 2011-2022 走看看