进程查看
# 进程查看
一个程序启动后就是一个进程了,进程的数据肯定是在内存中的。包括正文段 + 数据段。内存中的一些数据也会写入到
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
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
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
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
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
2
3
4
5
6
7
[root@jb51 process]# php demo13.php
root
1
2
3
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
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