Linux系统中的ps命令是一个用于查看进程状态的工具,它提供了丰富的选项和参数,允许用户以不同的方式显示进程信息。
基本用法
- 无参数使用:在终端中输入ps命令,默认情况下会显示当前终端会话中属于当前用户的进程列表。
- 结合参数使用:结合不同的选项,可以显示系统上所有的进程信息。
常用选项
- -e:显示系统上所有的进程,而不仅仅是当前用户的进程。
- -f:以全格式显示进程信息,包括进程的UID、PID、PPID、C、STIME、TTY、TIME、CMD等信息。
TTY pts/N(其中N是一个数字),这表示该进程是通过系统中的第N个伪终端的从设备启动的。伪终端是一种软件实现的终端,它允许一个程序(如终端模拟器-XShell、SSH服务器等)表现得像是一个真实的终端。每个伪终端都由一个主设备(master)和一个从设备(slave)组成.
- -l:以长格式显示进程信息 。
以下是额外的字段信息:
F字段:
4:这通常表示该进程以超级用户(root)权限运行。在Linux系统中,root用户拥有对系统的完全访问权限,因此具有该标志的进程可能具有更高的权限级别。
其他值:除了4和1之外,F字段还可能包含其他值,这些值的具体含义通常需要通过查阅特定系统的文档或手册页来确定。由于系统之间的差异,相同的F字段值在不同系统上可能具有不同的含义
- -u:显示与指定用户相关的进程信息,显示该用户启动的全部进程信息。可以通过指定用户名来限制显示的进程列表。
- -p:显示指定进程ID(PID)的进程信息。可以通过指定PID来查看特定进程的详细信息。
- -o:自定义输出格式。使用该选项可以指定要显示的列和排序方式。
例如,ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem会显示进程ID、父进程ID、命令行、内存使用率和CPU使用率,并按内存使用率降序排序。
疑难
1. 理想情况下显示4行数据,但打印行数为5.
分析:
管道(|)两侧的命令都会作为进程存在于进程列表中。在Unix和类Unix系统中,当你执行一个包含管道的命令序列时,shell会分别为管道两侧的每个命令创建一个或多个进程。这些进程会并行(或更准确地说是并发)执行,直到整个命令序列完成。
原因:在执行ps | awk ‘END {print NR}’时,awk也是独立的进程。
2. root用户登录执行ps 和 ps -u root显示不一致
原因和强调:
1)ps命令默认显示当前终端(或会话)中由当前用户启动的进程。
2)ps -u root命令专门用于显示root用户启动的所有进程。这个命令会过滤出所有以root用户身份运行的进程,无论这些进程是在哪个终端或会话中启动的。