May*_*hux 10 command-line environment-variables
有时我会在显示中遇到一些问题,主要是我想知道哪些文件或进程正在使用 DISPLAY 环境变量。
那么如何列出所有设置了 DISPLAY 的进程呢?
May*_*hux 15
经过多次搜索和尝试,我想到了这个命令:
for file in /proc/[0-9]*; do grep -ao 'DISPLAY=[^[:cntrl:]]*' $file/environ 2>/dev/null && grep -ao '(.*)' $file/stat; done | sed 'N;s/\n/\t/'
Run Code Online (Sandbox Code Playgroud)
输出示例是:
DISPLAY=:0 (unity-files-dae)
DISPLAY=:0 (unity-music-dae)
DISPLAY=:0 (unity-lens-vide)
DISPLAY=:0 (zeitgeist-daemo)
DISPLAY=:0 (zeitgeist-fts)
DISPLAY=:0 (zeitgeist-datah)
DISPLAY=:0 (cat)
DISPLAY=:0 (unity-scope-vid)
DISPLAY=:0 (unity-musicstor)
DISPLAY=:0 (dconf-service)
DISPLAY=:0 (gdu-notificatio)
DISPLAY=:0 (telepathy-indic)
DISPLAY=:0 (mission-control)
DISPLAY=:0 (goa-daemon)
DISPLAY=:0 (VBoxXPCOMIPCD)
Run Code Online (Sandbox Code Playgroud)
为了解释发生了什么,这个循环在每个文件中/proc搜索的目录中递归搜索DISPLAY。这些文件实际上是正在运行的进程,因此每个包含单词 DISPLAY 的文件都表示该进程正在使用它。