使用top命令显示该进程组所有进程,要求显示包含下列字段: pid、ppid、pgid、sid、tty、tpgid、sid、command
时间: 2023-07-04 07:13:18 浏览: 104
您可以使用 top 命令结合 ps 命令来实现显示该进程组所有进程,并且包含 pid、ppid、pgid、sid、tty、tpgid、sid、command 字段的要求。具体操作步骤如下:
1. 在终端中输入 top 命令,然后按下 Shift + H 键,以显示所有进程的线程信息。
2. 找到您要查看的进程组的进程,记录下该进程组的 pgid。
3. 在终端中输入以下命令,以显示该进程组所有进程的详细信息:
```
ps -e -o pid,ppid,pgid,sid,tty,tpgid,sid,comm | grep <pgid>
```
其中,-e 表示显示所有进程,-o 表示指定显示的字段,grep <pgid> 表示过滤出指定 pgid 的进程。
您可以根据需要对命令进行修改,如更改字段,或者使用其他工具来实现相同的功能。
相关问题
[2] 使用top命令显示该进程组所有进程,要求显示包含下列字段: pid、ppid、pgid、sid、tty、tpgid、sid、command
可以使用以下命令来显示该进程组所有进程的信息:
```
top -p <pgid> -c -O pid,ppid,pgid,sid,tty,tpgid,command
```
其中,`<pgid>` 是该进程组的进程组 ID。`-c` 参数表示显示完整的命令行信息,`-O` 参数后面跟着的是要按照哪个字段进行排序,这里选择按照进程 ID 进行排序。最后的字段列表中包含了 pid、ppid、pgid、sid、tty、tpgid、sid 和 command 等字段。
编译并执行所示程序文件alpha.c#include<unistd.h> #include<stdio.h> int main() { int pid; pid=fork(); pid=fork(); if(pid>0)fork(); printf("hello!\n"); sleep(30); return 0; }。随后执行下列操作:[1] 使用ps命令中恰当的选项说明该进程组中相关进程的父子关系。 [2] 使用top命令显示该进程组所有进程,要求显示包含下列字段: pid、ppid、pgid、sid、tty、tpgid、sid、command [3] 将process leader进程的优先级设置为10[4] 使用命令(不是快捷键)中止process leader进程。试问:属于同一进程组的其他进程是否也会被中止。
好的,我会回答你的问题。
1. 使用ps命令中恰当的选项说明该进程组中相关进程的父子关系。
可以使用 `ps -ef --forest` 命令来显示进程树,其中 `-f` 选项用来显示进程的详细信息,`--forest` 选项用来以树形结构显示进程间的关系。在该程序中,由于进行了三次 fork() 调用,因此会产生 8 个进程,它们的父子关系如下图所示:
```
root 12345 6789 0 09:00 pts/0 00:00:00 \_ bash
root 23456 12345 0 09:01 pts/0 00:00:00 \_ ./alpha
root 23457 23456 0 09:01 pts/0 00:00:00 | \_ ./alpha
root 23459 23457 0 09:01 pts/0 00:00:00 | \_ ./alpha
root 23458 23456 0 09:01 pts/0 00:00:00 | \_ ./alpha
root 23460 23459 0 09:01 pts/0 00:00:00 | \_ ./alpha
root 23461 23458 0 09:01 pts/0 00:00:00 | \_ ./alpha
root 23462 23461 0 09:01 pts/0 00:00:00 | \_ ./alpha
root 23463 23459 0 09:01 pts/0 00:00:00 | \_ ./alpha
```
其中 pid 为 23456 的进程是第一个 fork() 所创建的进程,它的两个子进程分别是 pid 为 23457 和 23458 的进程,它们是第二个 fork() 所创建的进程,而 pid 为 23459 的进程是第三个 fork() 所创建的进程,它的两个子进程分别是 pid 为 23460 和 23463 的进程,它们是第四个 fork() 所创建的进程。我们可以看到,这些进程都属于同一个进程组,其 PGID(进程组ID)都是第一个 fork() 所创建的进程的 PID。
2. 使用top命令显示该进程组所有进程,要求显示包含下列字段: pid、ppid、pgid、sid、tty、tpgid、sid、command
可以使用 `top` 命令来查看进程信息,其中可以使用 `f` 选项来选择需要显示的字段。在该程序中,我们需要显示的字段包括 pid、ppid、pgid、sid、tty、tpgid、command,可以按下 `f` 键,然后输入上述字段的序号,最后按下回车键即可。显示结果如下:
```
top - 09:10:55 up 1:03, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 9 total, 1 running, 8 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 983.9 total, 454.2 free, 226.9 used, 302.8 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 716.5 avail Mem
PID PPID PGID SID TT TPGID COMMAND
23456 12345 23456 12345 pts/0 23456 ./alpha
23457 23456 23456 12345 pts/0 23456 \_ ./alpha
23459 23457 23456 12345 pts/0 23456 | \_ ./alpha
23463 23459 23456 12345 pts/0 23456 | \_ ./alpha
23458 23456 23456 12345 pts/0 23456 | \_ ./alpha
23460 23459 23456 12345 pts/0 23456 | \_ ./alpha
23461 23458 23456 12345 pts/0 23456 | \_ ./alpha
23462 23461 23456 12345 pts/0 23456 | \_ ./alpha
```
可以看到,该进程组中所有进程的信息都被显示了出来。
3. 将process leader进程的优先级设置为10
可以使用 `renice` 命令来修改进程的优先级。在该程序中,第一个 fork() 所创建的进程的 PID 为 23456,因此它是该进程组的 process leader。可以使用如下命令将其优先级修改为 10:
```
sudo renice -n 10 -p 23456
```
4. 使用命令(不是快捷键)中止process leader进程。试问:属于同一进程组的其他进程是否也会被中止。
可以使用 `kill` 命令来中止进程。在该程序中,第一个 fork() 所创建的进程的 PID 为 23456,因此它是该进程组的 process leader。可以使用如下命令将其中止:
```
sudo kill -9 23456
```
当 process leader 进程被中止后,属于同一进程组的其他进程也会被中止。因此,该进程组中所有进程都会被中止。
阅读全文