#环境变量 #环境 #进程 #Linux # #键值 #运行中的进程

app envgrep

在Linux上搜索所有进程的环境变量

1 个不稳定版本

0.1.0 2021年6月23日

#11#运行中的进程

MIT 许可证

8KB
97 代码行

EnvGrep

Linux命令行工具,用于查找您有读取权限的所有进程中的环境变量键或值。

示例

让我们假设我们有一个长时间运行的服务器进程,它使用一些环境变量进行配置:SERVER_VERSIONSERVER_BIND_PORTSERVER_ID。我们可以使用几个 tail -f /dev/null 进程来模拟这种情况。

$ env SERVER_VERSION=1.0.1 SERVER_ID=1 SERVER_BIND_PORT=:8080 tail -f /dev/null &
[1] 1969
$ env SERVER_VERSION=1.0.1 SERVER_ID=2 SERVER_BIND_PORT=:9090 tail -f /dev/null &
[2] 1970
$ env SERVER_VERSION=1.0.1 SERVER_ID=3 SERVER_BIND_PORT=:8181 tail -f /dev/null &
[3] 1971

现在这些进程正在运行,并设置了它们的变量,我们可以使用 envgrep 来搜索键和值。

# To find all configuration variables for all servers
$ envgrep SERVER
/proc/1969/environ (tail -f /dev/null):
SERVER_VERSION = "1.0.1"
SERVER_ID = "1"
SERVER_BIND_PORT = ":8080"

/proc/1970/environ (tail -f /dev/null):
SERVER_VERSION = "1.0.1"
SERVER_ID = "2"
SERVER_BIND_PORT = ":9090"

/proc/1971/environ (tail -f /dev/null):
SERVER_VERSION = "1.0.1"
SERVER_ID = "3"
SERVER_BIND_PORT = ":8181"

# To find only the IDs for the server processes
$ envgrep SERVER_ID
/proc/1969/environ (tail -f /dev/null):
SERVER_ID = "1"

/proc/1970/environ (tail -f /dev/null):
SERVER_ID = "2"

/proc/1971/environ (tail -f /dev/null):
SERVER_ID = "3"

# To find the specific process that is running on port 8181
$ envgrep 8181
/proc/1971/environ (tail -f /dev/null):
SERVER_BIND_PORT = ":8181"

安装

envgrep 目前没有与任何发行版的包管理器打包,因此您必须依赖于 cargo 从源代码编译和安装。

$ cargo install envgrep

命令行选项

envgrep 0.1.0
Search through the environment variables of all running processes on the system and report on all variables that match
the specified pattern

USAGE:
    envgrep [FLAGS] <PATTERN>

FLAGS:
    -i, --case-insensitive    Perform case-insensitive matching with the specified regex
    -h, --help                Prints help information
    -V, --version             Prints version information
    -v, --verbose             Print all error messages as they occur instead of hiding them

ARGS:
    <PATTERN>    Regex pattern to use to search for environment variables. Matches on both parts of the `KEY=value`
                 string (independently), so parts of the environment variable name, value, or both can be used here``

限制

Envgrep 可以通过 procfs 搜索环境变量,但应用程序也可以修改它们自己的环境。许多可执行文件不会将对其环境的更改写回到 procfs,因此如果您的可执行文件修改了自己的环境,它可能不会出现在 envgrep 的输出中。

此工具目前依赖于 procfs,因此它仅在支持 procfs 的操作系统上工作(不支持 macOS 或 Windows)。

依赖项

~6MB
~105K SLoC