Linux 进程系统

Linux 进程系统 守护进程的产生

process namespace

**namespace 是 Linux 内核用来隔离内核资源的方式。**通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存在。具体的实现方式是把一个或多个进程的相关资源指定在同一个 namespace 中,namespace也是实现docker的核心技术之一。
为了实现隔离,需要解决
IPC CLONE NEWIPC System VIPC(信号量、消息队列和共享内存)和 POSIX message queue
Network CLONE NEWNET Network devices,stacks,ports,etc(网络设备、网络栈、端门等).
Mount CLONE NEWNS Mount points(文件系统挂载点
PID CLONE NEWPID ProcessIDs(进程编号)
User CLONE NEWUSER Userand groupIDs(用户和用户组)
UTS CLONE NEWUTS Hostname and NIs domain name(主机名与 NIS 域名)
CgroupCLONE NEWCGROUP Cgroup root directory(cgroup 的根目录

前6种是必须解决的问题,被docker采纳

从版本号为 3.8 的内核开始,/proc/[pid]/ns 目录下会包含进程所属的 namespace 信息

 ll /proc/$$/ns

进程调度 clone exec族函数

写时复制cow
当新进程(子进程)被创建时,Linux内核并不会立马将父进程的内容复制给子进程,而仅仅当进程空间的内容发生变化时,才执行复制操作
fork 和vfork的区别,vfork是对fork的优化,在需要copy父进程内存空间的时候,不会立即拷贝而是直接将子进程内存空间指向父进程(类似线程),

init进程

没有信号处理机制,收养孤儿进程
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。

守护进程

守护进程是对进程的权限提升,使其摆脱一系列系统控制来运行预期中的程序。

  1. 在后台运行:fork出子进程A,当前进程退出,保留子进程A。
  2. 脱离控制终端:目的是摆脱终端的影响,通过setsid()重新为子进程A设置新的会话。
  3. 禁止子进程A重新打开终端:因为设置新会话之后的进程A,是进程组的组长,所以它是有能力重新申请打开一个控制终端。通过再次fork子进程B,并退出进程A,B不再是进程组组长,也无法打开新的终端。
  4. 关闭已打开的文件描述符、改变工作目录等等。
  5. 处理SIGCHILD信号:由于守护进程一般是长期运行的进程,当产生子进程时,需要处理子进程退出时发送的SIGCHILD信号,不然子进程就会变成僵尸进程,从而占据系统资源。

总结来说,守护进程是一种长期运行于后台的进程,它脱离了控制终端,不受用户终端退出的影响。可以通过nohup操作,将一个进程变成守护进程执行。比如nohup ./spider &,这样即使终端断开后,spider进程仍会继续执行。

lsof的常见用法如下:

  • 查看特定用户打开的文件列表:lsof -u xxx

  • 查看特定端口打开的文件列表:lsof -i 8080

  • 查看特定端口范围打开的文件列表:lsof -i :1-1024

  • 基于TCP或者UDP查看打开的文件列表:lsof -i udp

  • 查看特定进程打开的文件列表:lsof -p $pid

  • 查看打开特定文件的进程列表:lsof -t $file_name

  • 查看打开特定目录的进程列表:lsof +D $file_path

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值