1 个不稳定版本
0.1.0 | 2021年6月23日 |
---|
#11 在 #运行中的进程
8KB
97 代码行
EnvGrep
Linux命令行工具,用于查找您有读取权限的所有进程中的环境变量键或值。
示例
让我们假设我们有一个长时间运行的服务器进程,它使用一些环境变量进行配置:SERVER_VERSION
、SERVER_BIND_PORT
和 SERVER_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