首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux进程ID号--Linux进程管理与调度(三)【转】

Linux 内核使用 task_struct 数据结构来关联所有与进程有关数据和结构,Linux 内核所有涉及到进程和程序所有算法都是围绕该数据结构建立,是内核中最重要数据结构之一。...进程ID概述 进程ID类型 要想了解内核如何来组织和管理进程ID,先要知道进程ID类型: 内核中进程ID类型用pid_type来描述,它被定义在include/linux/pid.h中: enum...是 Linux 中在其命名空间中唯一标识进程而分配给它一个号码,称做进程ID号,简称PID。...(轻量级进程组)ID标识 在一个进程中,如果以CLONE_THREAD标志来调用clone建立进程就是该进程一个线程(即轻量级进程Linux其实没有严格进程概念),它们处于一个线程组,该线程组所有线程...内核是如何设计task_struct中进程ID相关数据结构 Linux 内核在设计管理ID数据结构时,要充分考虑以下因素: 如何快速地根据进程 task_struct、ID类型、命名空间找到局部ID

5.7K10

探索进程和子进程

: 通过getpid()得到PID和ps指令获取进程PID是一致,都是5258 一个进程属性中,除了有自己进程PID还有进程PID,ps指令中查询到PPID是当前进程进程PID,可以是用函数...>0时,执行进程,当id==0时,执行子进程。...在代码中,fork函数返回值我们用变量id来接收:pid_t id=fork(),为什么id可以同时有两个值? 在任何平台,进程在运行时候都是具有独立性。...子进程可以把进程数据全被拷贝一份,但是大部分数据对于子进程来说可能都是没用,这就造成了浪费,所以操作系统只是把进程中数据层面的代码临时拷贝一份给子进程,即子进程创建后,会共享进程代码和数据,...变量id接收值是fork函数返回值,进程return一次,子进程return一次,子进程会执行写时拷贝,所以变量会有两个返回值,本质上是有两块空间。

7510
您找到你想要的搜索结果了吗?
是的
没有找到

进程ID进程关系

进程ID 进程相关 ID 有多种,除了进程标识 PID 外,还包括:线程组标识 TGID,进程组标识 PGID,回话标识 SID。...TGID/PGID/SID 分别是相关线程组长/进程组长/回话 leader 进程 PID。 下面分别介绍这几种ID。 PID 进程总是会被分配一个唯一标识它们进程ID号,简称 PID。...因此进程还可以注册 SIGCHLD 信号处理函数,异步回收资源。 如果进程提前结束,那么子进程将把1号进程 init 作为进程。总之,进程都有进程,负责进程结束后资源回收。...在子进程退出且进程完成回收前,子进程变成僵尸进程。僵尸进程持续时间通常比较短,在进程回收它资源后就会消亡。如果进程没有处理子进程终止,那么子进程就会一直处于僵尸状态。...会话、进程组关系 Linux 系统中可以有多个会话(session),每个会话可以包含多个进程组,每个进程组可以包含多个进程

33622

进程和子进程谁先运行?

Linux中,进程和子进程是并行运行,先运行哪个是不确定,在小红帽系统(Red Hat)中,先运行是子进程,在ubuntu系统中,进程是先运行。...其实谁先运行不重要了,一般在编程中,把进程当做守护进程使用,用一个waitpid(pid,&status,0) != pid 等待子进程结束,进程一直阻塞在这个函数中。...Child process ID: %d\n", pid); } return 0; } 结果(Ubuntu中):明显先打印了进程 ?...Child process ID: %d\n", pid); pid_wait = waitpid(pid, &status, 0); // 等待指定进程进程 printf("Child...\n", pid_wait); } return 0; } 结果(Ubuntu中):进程等待了子进程结束 ? 如果喜欢我文章,欢迎关注、点赞和转发,下面可以留言~~~

3.7K30

进程欺骗实践

文章前言 监控进程和子进程之间关系是威胁检测团队检测恶意活动常用技术,例如,如果powershell是子进程,而Microsoft Word是进程,这是一种折中行为,各种EDR可以很容易地检测到这种异常活动...,这时红队可以考虑使用进程PID欺骗作为逃避方法,Windows API调用"CreateProcess"允许用户传入一个用于分配PID参数,它可以用于指定当前进程进程。...项目介绍 https://github.com/Al1ex/SelectMyParent image.png 进程欺骗 Step 1:选择进程并确定其PID image.png Step 2:之后执行以下命令进行进程欺骗...SelectMyParent.exe notepad 928 image.png Step 3:使用process Explor查看进程树,可以看到成功欺骗 image.png 参考链接 https...2020/02/24/parent-pid-spoofing/ https://ired.team/offensive-security/defense-evasion/parent-process-id-ppid-spoofing

1.3K20

Linux进程为何要苦苦地知道子进程死亡原因?

白发人送黑发人 一个普遍常识是,在Linux里面总是“白发人送黑发人”,子进程死亡,进程透过wait()等待子进程死亡,并清理子进程僵尸,当然进程也可以因此而获得子进程死亡原因。.../a.out child process id: 3320 然后用信号2去杀死这个子进程3320: kill -2 3320 进程waitpid()返回,然后status里面获知原因,进程打印:...则进程探测到子进程死亡后,可打印它退出状态: $ ..../a.out child process id: 3362 child process exits, status=1 由此可以看出,进程对子进程死亡和死亡原因是了如指掌。 ?...事出必有因 那么,进程为什么必须知道子进程死亡呢?进程为什么一定要苦苦地知道子进程死亡原因?

2K20

Linux】解决:为什么重复创建同一个【进程pid会变化,而ppid进程id不变?】

前言 大家好吖,欢迎来到 YY 滴Linux 系列 ,热烈欢迎!...本章主要内容面向接触过Linux老铁 主要内容含: 1.系统调用接口查看pid,ppid pid:当前进程 ppid:进程 每一次启动进程, 系统会重新生成pid ,系统只保证当前生命周期内...pid有效; 但是 进程不会变 2.为什么ppid进程id不变?...——bash命令行解释器与bash进程 当我们运行一个进程时,命令行解释器会把这个指令解释成bash进程 接着再由这个bash进程执行对应命令 当这个子进程出现问题时,并不影响bash进程...即:每一条命令被执行,都属于bash进程 我们执行一段代码,parent对应是getppid()函数; 我们接着用ps+grep过滤指令查看这个16815进程,发现其就是bash进程

9110

进程退出时如何确保子进程退出?

前言 子进程退出时候,进程能够收到子进程退出信号,便于管理,但是有时候又需要在进程退出时候,子进程也退出,该怎么办呢? 进程退出时,子进程会如何?...17433进程id是17432,但是在10秒后,它进程变成了1658。...另外还可以观察到,该进程也是其他系统进程进程。 如何确保进程退出同时,子进程也退出? 既然如此,如何确保进程退出同时,子进程也退出呢?...内容很多,主要意思为:设置一个信号,当进程退出时候,子进程将会收到该信号。 那么根据这个,我们完全可以在进程退出时,也给子进程一个退出信号。...练习 尝试将上面的代码在非图形界面的linux操作系统中运行,看看最终被收养是否为init进程。 交流 虽然本文方法可行,但并不适用于所有操作系统,你有什么更好办法解决上面的问题?

11.5K21

Fork进程后,是否与进程共享stdio?

今天想到一个问题:如果我在代码里面,fork当前进程,然后两个进程都执行scanf(),那会发生什么?键盘输入数据是定向到哪个进程呢?...scanf("%c\n", &c); printf("parent process: %c\n", c); } } } 根据上面这串代码,进程和子进程都会调用...scanf,并打印自己读取到数据。...process: 4 child process: 5 parent process: 5 parent process: 6 child process: 6 child process: 可以看到,进程和子进程都读取了键盘数据...具体是哪一个进程获取到数据,则与进程调度有关。这提醒了我一点:多个进程同时读取同一个stdin的话,会造成获取到数据不完整问题。(这与stdin默认为tty这样字节设备特性有关)

13220

关于进程和子进程关系(UAC 绕过思路)

假设是a进程创建了b进程,那么a进程就是b进程进程。...IceSworld,Process Explorer等) 查看时,会发现提权进程进程是创建它进程,这是由于AIS利用了CreateProcessAsUser() API中一个新功能,这里新功能就是将提权进程进程设置成创建该进程进程...,假设我们利用一下该API,我们就能够将自己进程进程设置为随意进程(要提权绕过UAC鸽子注意了),假设把木马进程进程设置为 杀软 ID或者csrss.exe ,notepad.exe 等可信进程...就能能设置这个被创建进程进程,这里也仿照黑防上贴下部分代码: DWORD pid = 0; /* 依据进程名获取随意进程Id */ GetProcessIdByName(L"explorer.exe...假设你调试程序检測进程,直接用以上办法启动它,当然进程就是他检測同意进程喽, 这里启动时要注意是设置CREATE_SUSPEND 就是创建挂起,然后在创建后使用ResumeThread恢复就能够顺利调试了

1.5K30

linux通过进程名杀死进程_linux关闭进程命令

笔记:根据一个进程名字或启动此进程命令(连续一部分即可)杀死进程 一、使用单条命令 ps -ef | grep 进程名/启动进程命令 | grep -v grep | awk ‘{print $2...}’ | xargs kill -9 执行结果: [1]-  已杀死               sleep 200 [2]+  已杀死               sleep 200 二、编写脚本 linux.../bin/bash # 脚本名:kill_process.sh # 脚本功能:强制杀死进程 方式kill -9     # 1通过ps查询进程id     # 2使用kill -9 强制终止进程...kill_processes(){     # 获取进程id     pids=$(ps -ef | grep “$1” | grep -v grep | grep -v $0 | awk ‘{...————————————————————— # 根据进程名查询包含进程进程 并排除grep查询进程和此脚本进程 ps -ef | grep “$pName” | grep -v grep | grep

15.8K20

Linux进程学习【进程状态】

本文将会带着大家认识各种 进程 状态 ---- 正文 在谈 进程状态 之前,首先要回顾下之前 进程 相关知识 OS管理本质是先描述,再组织 OS并非直接管理 进程 ,而是管理 进程 PCB(...,即把手机揣进兜里,然后 专心执行走路这个 进程 进程状态 进程 有各种运行状态,方便OS进行管理,在 Windows 中,进程 状态是这样 而在我们 Linux 中,新建、就绪、运行都可以看作...运行 R 这一个状态,所以比较清晰 而我们今天要学习正是 Linux 进程 状态 进程是何种状态,取决于此进程PCB在哪里排队 ️运行 R 首先来看看第一种状态 R 以我们以往认知来说...僵尸 T 状态 通俗来说,僵尸状态 是给 进程 准备 当 子进程 被终止后,会先维持一个 僵尸 状态,方便 进程 来读取到 子进程 退出结果,然后再将 子进程 回收 单纯在 bash 环境下终止...进程,此时 子进程 会被OS领养 子进程 进程 变为 1号进程进程 就变成了一个 孤儿进程 发出指令终止 进程 假设 子进程 不被 1号进程 领养 子进程 退出时就会无人回收

18230

Linux进程调度_linux进程查看和调度

Linux 系统为了提升响应速度,倾向于优先调度 I/O 消耗型。...一、普通进程Linux 中普通进程依赖称之为 nice 值 东东来进行进程优先级描述。nice 值范围是 [-20, 19]。...—— 小结 实时进程优先级:value 越高,优先级越大 普通进程优先级:nice值越高,普通进程优先级越小 任何实时进程优先级 > 普通进程 Linux 调度算法 ---- Linux 中有一个总调度结构...Linux 调度时机 ---- 一、进程切换 从进程角度看,CPU是共享资源,由所有的进程按特定策略轮番使用。...也可以用 pidstat -w 命令查看进程切换每秒统计值: pidstat -w 1 Linux 3.10.0-229.14.1.el7.x86_64 (bj71s060) 02/01/2018

20.5K10

Linux中查看进程、杀死进程、进入进程命令

(1)强行中止(经常使用杀掉)一个进程标识号为324进程: #kill -9 324 (2)解除Linux系统死锁 在Linux中有时会发生这样一种情况:一个程序崩溃,并且处于死锁状态。...(4)killall命令 Linux下还提供了一个killall命令,可以直接使用进程名字而不是进程标识号,例如: # killall -HUP inetd *杀死进程最安全方法是单纯使用kill...然而,如果进程启动了子进程,只杀死进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓“僵尸进程”,应确保在杀死进程之前,先杀死其所有的子进程。...当使用该选项时,kill命令也试图杀死所留下进程。但这个命令也不是总能成功--或许仍然需要先手工杀死子进程,然后再杀死进程。...*TERM信号 给进程发送一个TERM信号,试图杀死它和它进程。 # kill -TERM PPID *killall命令 killall命令杀死同一进程组内所有进程

11.2K30

Linux进程学习【进程地址】

"字符串地址:%p\n", ps); //%p 专门用来打印地址信息 return 0; } 利用前面学习 fork 函数创建子进程,使得子进程进程共同使用一个变量 #include <stdio.h...n", getpid(), getppid(), val, &val); exit(0); } waitpid(id, 0, 0); printf("我是进程,pid:%d ppid...光有 虚拟地址空间 是不够,还需要一套完整 ‘‘翻译’’ 机制进行程序寻址,如 Linux 页表 + MMU ️页表+MMU 页表 本质上就是一张表,操作系统 会为每个 进程 分配一个 页表...️写时拷贝 Linux 中存在一个很有意思机制:写时拷贝 这是一种 赌bo 行为,OS 此时就赌你不会对数据进行修改,这样就可以 使多个 进程 在访问同一个数据时,指向同一块空间,当发生改写行为时...保护物理内存与其他进程(权限设置) 将 进程管理 和 内存管理 进行 解耦,方便 OS 进行更高效管理 可以让进程以统一视角看待自己代码和数据 ---- 总结 以上就是本篇关于 Linux进程学习

14120

linux进程

1.查进程 ps命令查找与进程相关PID号: ps a 显示现行终端机下所有程序,包括其他用户程序。 ps -A 显示所有程序。...ps c 列出程序时,显示每个程序真正指令名称,而不包含路径,参数或常驻服务标示。 ps -e 此参数效果和指定"A"参数相同。 ps e 列出程序时,显示每个程序所使用环境变量。...ps s 采用程序信号格式显示程序状况。 ps S 列出程序时,包括已中断子程序资料。 ps -t 指定终端机编号,并列出属于该终端机程序状况。...2.杀进程和查看进程对应PID目录下exe文件信息 最常用方法是ps -aux或者ps -ef 然后再通过管道使用grep命令过滤查找特定进程,然后再对特定进程进行操作。...使用kill命令结束进程:kill -a 进程pid 或者 killall 程序名 查看对应PID目录下exe文件信息: [root@localhost postfix]# ps -aux|grep

8.6K100
领券