linux使用proc实现ps -ef
时间: 2023-11-15 20:59:54 浏览: 51
在Linux中,/proc是一个虚拟文件系统,它提供了一个接口,允许用户和进程访问内核的信息。ps命令是通过读取/proc目录下的进程信息来实现的。具体来说,ps -ef命令会读取/proc目录下的每个进程的信息,并将其格式化输出。在/proc目录下,每个进程都有一个以其PID命名的子目录,其中包含了该进程的各种信息,如进程状态、进程命令行、进程环境变量等。ps命令会读取这些信息,并将其格式化输出。因此,通过读取/proc目录下的进程信息,ps命令可以实现显示系统进程的功能。
相关问题
cat /proc/`ps -ef|grep andlink_router | grep -v grep | awk '{print $2}'`/status | grep -E 'VmRSS|VmHWM' ps: unrecognized option: e BusyBox v1.25.1 () multi-call binary. Usage: ps Show list of processes w Wide output cat: can't open '/proc//status': No such file or directory,这种报错怎么解决
这种报错通常是由于您的命令中使用了一些特定于Linux系统的功能,而您正在尝试在不支持这些功能的系统上运行该命令。根据您的报错信息,我猜测您正在尝试在一个 BusyBox 系统上运行该命令,而该命令的参数可能不被 BusyBox 所支持。
要解决这个问题,您可以尝试使用 BusyBox 支持的 ps 命令来代替原始的 ps 命令。具体来说,您可以尝试以下命令:
```
busybox ps -w | grep andlink_router | grep -v grep | awk '{print $1}'
```
这将使用 BusyBox 的 ps 命令来查找包含 "andlink_router" 字符串的进程,并使用 awk 命令提取进程 ID。然后,您可以将其用于您的原始命令,如下所示:
```
cat /proc/$(busybox ps -w | grep andlink_router | grep -v grep | awk '{print $1}')/status | grep -E 'VmRSS|VmHWM'
```
这应该可以正常工作,并提供您所需的输出。
使用linux命令查看jvm时区
要使用Linux命令查看JVM的时区,可以执行以下命令:
```
ps -ef | grep java
```
该命令将会列出当前正在运行的Java进程。找到您想要查看时区的Java进程,并记下其进程ID(PID)。
然后,可以执行以下命令来查看该Java进程的环境变量:
```
cat /proc/[PID]/environ | tr '\0' '\n'
```
其中,`[PID]` 是您记下的Java进程的进程ID。该命令将会输出该Java进程的所有环境变量,包括JVM的时区设置。您可以查找 `user.timezone` 环境变量来确认JVM的时区设置是否正确。
请注意,由于环境变量可能包含大量信息,因此您可能需要使用 `grep` 命令来过滤输出。例如,您可以使用以下命令来查找 `user.timezone` 环境变量:
```
cat /proc/[PID]/environ | tr '\0' '\n' | grep user.timezone
```