centos每次启动程序pid每次变化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos每次启动程序pid每次变化相关的知识,希望对你有一定的参考价值。

参考技术A 进程的 PID 在变,这说明什么呢?在我看来,要么是这些进程在不停地重启,要么就是全新的进程,这无非也就两个原因:

第一个原因,进程在不停地崩溃重启,比如因为段错误、配置错误等等,这时,进程在退出后可能又被监控系统自动重启了。

第二个原因,这些进程都是短时进程,也就是在其他应用内部通过 exec 调用的外面命令。这些命令一般都只运行很短的时间就会结束,你很难用 top 这种间隔时间比较长的工具发现(上面的案例,我们碰巧发现了)。

短时应用的运行时间比较短,很难在 top 或者 ps 这类展示系统概要和进程快照的工具中发现,你需要使用记录事件的工具来配合诊断,比如 execsnoop 或者 perf top。

至于 stress,我们前面提到过,它是一个常用的压力测试工具。它的 PID 在不断变化中,看起来像是被其他进程调用的短时进程。要想继续分析下去,还得找到它们的父进程。

要怎么查找一个进程的父进程呢?没错,用 pstree 就可以用树状形式显示所有进程之间的关系。
参考技术B 第一步:开机时启动bios,bios对硬件进行加电自检,自检完后开始找可以引导系统的设备(硬盘,U盘等),bios是一个固定在主板上的芯片。
第二步:MBR进行引导,硬盘第一个扇区有一个512字节的主引导程序,存放系统的启动引导程序(boot loader)(446字节)和分区表(64字节,一个分区16个字节),和一个16进制的字段(55AA,AA55)(2字节)表示可以从这个硬盘进行引导。boot loader的目标是寻找内核加载内核。
第三步:出现grub菜单提供给用户(grub引导菜单)。
第四步:找到内核后在系统中解压并运行,这个时候MBR将控制权交给内核。内核会自己检测一次内核,然后动态的加载一些内核模块(module),加载模块的时候就把驱动程序装上了。
第五步:和第四步同时进行,由于没有驱动程序启动内核模块加载驱动,所以出现initramfs虚拟文件系统帮助挂载系统识别驱动,找到内核加载内核的同时,加载一个init程序。init作用:挂载根,加载驱动程序。有了驱动程序后,init消失。

Delphi 我想获得进程句柄,怎么每次都变化

var id : HWnd; pid : Thandle;beginid := FindWindow(nil,pchar(Edit1.Text)); //获取窗口句柄if id > 0 thenbeginGetWindowThreadProcessId(id,pid); //获取进程PIDpp := OpenProcess(PROCESS_ALL_ACCESS,false,pid); //获取进程句柄label8.Caption := '连接状态 = 连接成功';label6.Caption := inttostr(id);label5.Caption := inttostr(pid);label7.Caption := inttostr(pp);end;if id = 0 thenbeginlabel8.Caption := '连接状态 = 连接失败';label3.Caption := '0';Timer1.Enabled := false; end;end;每次这个OpenProcess(PROCESS_ALL_ACCESS,false,pid); 返回值都是变来变去的怎么回事

这是正常的,因为我们每次获得的都是快照,所以每次都不同,但可以正常操作进程。 参考技术A 进行句柄,当然每次运行会有变化啊! 参考技术B 句柄不是一尘不变的。

以上是关于centos每次启动程序pid每次变化的主要内容,如果未能解决你的问题,请参考以下文章

CentOS VNC 开机自动启动 但是每次都要输入vncserver才行

为啥每次用户启动应用程序时都要注册推送通知?

每次启动画面在 iOS 应用程序中消失时启动视频

每次启动应用程序时如何刷新 webview 的内容?

如何不让mysql每次开机时自动启动

应用程序在每次从 TestFlight 首次启动时崩溃