目录
守护进程(deamon) || 精灵进程
特点
什么是前台进程组
把自己写的服务器deamon
deamon代码
守护进程(deamon) || 精灵进程
特点
01. 他的PPID是1(附件特征)
02. COMMAND --- 称为进程启动的命令
03. TIME --- 进程启动时长的问题
04. UID --- 是谁启动的
(ls-n / ls-l 就可以看见用户的UID和我们看见的用户名是对应的,就像之前文件名和inode的映射一样)
05. STAT --- 状态
06. TPGID --- 当前进程组和终端相关的信息
(-1 就是说这个进程和中单没有任何关系,具体数字就是和终端有关)
07. TTY --- 就是代表是哪一个终端
08. PGID --- 当前进程所属的进程组(一旦当前shell要构建一个任务,起了三个进程,第一个进程一般都是进程组的组长)
所以jobs查看任务的时候只有一个,因为他们三是一个组的
09. SID --- 当前进程的会话id
什么是前台进程组
任何时刻,只能有一个前台进程组,当我们登录windows,就肯定要给我们提供一个图形化界面,在linux下就需要(前台进程组(可以只有一个进程))给我们加载bash(一个任务)。
这就是为什么我们登录的时候要有shell,因为登录是系统给我们形成一个会话,这个绘画内部的绘画画手的进程组就是我们的bash。
如果我们把后台进程提到前台
我们的shell就无法运行了,是因为只能有一个前台进程组,bash就会自己把自己投递到后台了,所以命令行解释器就用不了了。
所以我们现在就可以说是:
PS:如果用的时间久了,当前会话占的资源比较多,所以电脑可能会比较卡,所以退出登入,注销一下,注销就是把这个会话之前申请的资源全部释放,然后重新登录,这就是为什么卡的时候说注销一下就可以。(和重启类似)(但有些任务不一定通过注销能解决)
守护进程/精灵进程
所以,我们的网络服务器就不能属于这个会话内,这样就会受这个会话,用户登录和注销的影响(不一定会退出),所以有网络服务的时候,就应该脱离这个会话,让他在计算机里面形成一个新的会话(让他自成进程组,自成新会话)。这样的进程就称为守护进程/精灵进程。
编写守护进程 setsid()-- 将调用进程设置成独立的会话/dev/nnull -- linux 下的垃圾桶/信息黑洞就是往里面读写的数据都会被直接丢弃。
把自己写的服务器deamon
就相当于服务部署到了linux当中
哪怕是自己的xshell关了也可以client继续用
那就只能用信号杀了(一般守护进程的命名是d结尾)
deamon代码
daemon(是否更换当前路径,是否关闭0,1,2)系统带的 但一般自己写好点nohup(就是不挂起)(变成后台进程)
a.out循环打印
nohup.out一直在增大,打印日志信息,就说明程序一直在运行
发现一直在执行,自己自成进程组,自己是组长,但是所属会话依旧是30244(bash),所以这个进程依旧是属于在本绘画内部形成了一个并非守护进程,但是非常像守护进程的了,但是他设置了nohup,不让他受用户登入注销的影响,即这个进程已经属于我们的后台进程了
当我们用户退出再进去的时候
之前那个bash不存在了,PPID也是1了。说明一旦用户退出了,虽然自己不是会话的画手,但是他依旧已经是一个独立的绘画了,这样的我们也称为守护进程化。(已经是一个孤儿进程了)。