wxvirus wxvirus
首页
  • Go文章

    • Go语言学习
  • Rust

    • Rust学习
  • Java

    • 《Java》
  • Python文章

    • Python
  • PHP文章

    • PHP设计模式
  • 学习笔记

    • 《Git》
  • HTML
  • CSS
  • JS
  • 技术文档
  • GitHub技巧
  • 刷题
  • 博客搭建
  • 算法学习
  • 架构设计
  • 设计模式
  • 学习
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

无解的lifecycle

let today = new Beginning()
首页
  • Go文章

    • Go语言学习
  • Rust

    • Rust学习
  • Java

    • 《Java》
  • Python文章

    • Python
  • PHP文章

    • PHP设计模式
  • 学习笔记

    • 《Git》
  • HTML
  • CSS
  • JS
  • 技术文档
  • GitHub技巧
  • 刷题
  • 博客搭建
  • 算法学习
  • 架构设计
  • 设计模式
  • 学习
  • 面试
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • C&C++

  • PHP

    • PHP基础或常见方法

    • Laravel

    • ThinkPHP

    • PHP多进程编程

      • 程序与进程
      • PHP解释器的执行过程
      • 进程环境
      • 解释器文件
      • 进程标识与fork
      • 进程退出
      • 进程exec
      • 进程调度
      • 多进程编写
      • SUID特权进程
      • 进程查看
        • 进程查看
          • proc
          • 打印进程的资源限制
          • 获取当前登录的用户
      • 中断信号
      • 进程关系与守护进程
      • 进程组
      • 会话
      • 守护进程
      • 作业控制
      • 进程间通信
    • swoole

  • Python

  • Go

  • microservice

  • rust

  • Java

  • 学习笔记

  • 后端
  • PHP
  • PHP多进程编程
wxvirus
2022-04-23

进程查看

# 进程查看

一个程序启动后就是一个进程了,进程的数据肯定是在内存中的。包括正文段 + 数据段。内存中的一些数据也会写入到proc文件系统中,即proc/进程pid

ps 命令

ps PID,PPID,UID,GID,STAT,COMMAND
1

top 命令

top
1

pstree 命令

pstree
1

# proc

这个文件系统目录,一般是进程运行过程中会把进程的数据写入到这个目录里面。

简单创建一个进程

<?php
echo posix_getpid();

while (1) {
    ;
}
1
2
3
4
5
6

Linux 系统中一般会把进程/线程 称之为任务(Task)

[root@jb51 process]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
1
2

TTY:是一个物理终端 | 伪终端 pts/0 可以使用ssh / telnet进行连接登录

man7.org 网址去查看 linux 相关命令文档 (opens new window)

# 打印进程的资源限制

<?php

print_r(posix_getrlimit());

// 阻塞住
while (1) {}
1
2
3
4
5
6
[root@jb51 process]# php demo13.php
Array
(
    [soft core] => 0
    [hard core] => unlimited
    [soft data] => unlimited
    [hard data] => unlimited
    [soft stack] => 8388608
    [hard stack] => unlimited
    [soft totalmem] => unlimited
    [hard totalmem] => unlimited
    [soft rss] => unlimited
    [hard rss] => unlimited
    [soft maxproc] => 15066
    [hard maxproc] => 15066
    [soft memlock] => unlimited
    [hard memlock] => unlimited
    [soft cpu] => unlimited
    [hard cpu] => unlimited
    [soft filesize] => unlimited
    [hard filesize] => unlimited
    [soft openfiles] => 100001
    [hard openfiles] => 100002
)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 获取当前登录的用户

<?php

print_r(posix_getlogin());

while (1) {
    ;
}
1
2
3
4
5
6
7
[root@jb51 process]# php demo13.php
root

1
2
3

这样运行之后 ,我们可以进入到/proc/进程id目录查看一些信息。

[root@jb51 25720]# cat status
Name:   php
Umask:  0022
State:  R (running)
Tgid:   25720
Ngid:   0
Pid:    25720
PPid:   24560
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
FDSize: 256
Groups: 0
VmPeak:   256960 kB
VmSize:   256908 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:     15628 kB
VmRSS:     15628 kB
RssAnon:            5368 kB
RssFile:            8208 kB
RssShmem:           2052 kB
VmData:     7128 kB
VmStk:       132 kB
VmExe:     11424 kB
VmLib:     42288 kB
VmPTE:       272 kB
VmSwap:        0 kB
Threads:        1
SigQ:   0/15066
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 0000000184004a07
CapInh: 0000000000000000
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
CapAmb: 0000000000000000
NoNewPrivs:     0
Seccomp:        0
Speculation_Store_Bypass:       vulnerable
Cpus_allowed:   3
Cpus_allowed_list:      0-1
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        0
nonvoluntary_ctxt_switches:     378

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

Umask:文件创建屏蔽字。

State:运行状态

一个进程启动之后,必然会启动一个主线程,有自己的入口函数【php 是 c 开发的】

一般就是main函数

Tgid:线程组 id

当启动多个线程之后,如果这个系统是多核[线程数量 <= CPU 的核数]的,那么它就是并发执行;反之,线程数量超过了核数,那么就是模拟的并发执行(交互切换运行)

多线程开发:PHP一般用不到。

其他的信息一般就是和内存和文件有关。

编辑 (opens new window)
上次更新: 2022/04/23, 22:56:01
SUID特权进程
中断信号

← SUID特权进程 中断信号→

最近更新
01
vue3配合vite初始化项目的一些配置
07-26
02
网盘系统开发学习
07-24
03
linux多进程
06-19
更多文章>
Theme by Vdoing | Copyright © 2021-2024 wxvirus 苏ICP备2021007210号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式