像下面的命令在 Linux 上工作,有办法在 shell 中显示加载的文件吗?
echo exit | strace bash -li |& less | grep '^open'
输出是:
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libtinfo.so.5", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/dev/tty", O_RDWR|O_NONBLOCK) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 3
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
...
在 macOS 上,您可以使用这组稍微不同的命令:
sudo bash -c "echo exit | dtruss bash -li 2>&1 | less | grep '^open'"
或者,如果您有 bash 版本 4 或 5:
sudo bash -c "echo exit | dtruss bash -li |& less | grep '^open'"
(如前所述还有在评论部分)
笔记:
|&
是2>&1 |
macOS 附带的 bash 3.x的简写,但在 bash 3.x 上不可用(它需要 bash >= 4)。它的目的是将标准输出和标准错误重定向到管道之后的下一个命令的输入。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句