我想知道什麼系統調用是由echo
(該命令,而不是內置的shell)產生的,所以我決定通過dtrace監聽它。具體而言,我使用了dtruss
。爲什麼我不能跟蹤`/ bin/echo`所產生的系統調用?
考慮到了以下工作(跟蹤由sed
所做的所有的系統調用):
sudo dtruss /usr/local/bin/sed 's/a/e/' <<< 'cat'
SYSCALL(args) = return
thread_selfid(0x0, 0x0, 0x0) = 470642 0
# and many more…
但是,如果我嘗試同樣與echo
,我得到如下:
sudo dtruss /bin/echo 'cat'
dtrace: failed to execute /bin/echo: unknown error
事實上:有是很多命令與我得到這個錯誤。通用性是這些命令全部在/bin
或/usr/bin
。
Brendan's blog表明,它能夠在諸如ls
命令使用dtruss
(他的實例是sudo dtruss ls -l hfsslower.d
,其中hfsslower.d
是一個普通的文本文件)。這篇博客文章是在2011年撰寫的,涉及Mac OS X.但是我知道,OS X自那時起就有了各種安全增強功能。
難道是我碰到某種OS X安全嗎?我正在使用OS X 10.12 Sierra。