Sar*_*ATM 5 macos sudo dtrace control-c
我有一个2009年中期的MacBook Pro和一个新的2012 MacBook Pro,我正在学习DTrace(一个非常神奇的工具).当我计算新的2012 MBP上的聚合时,聚合不会打印出来.
sudo dtrace -n 'syscall:::entry { @[execname] = count() }'
Run Code Online (Sandbox Code Playgroud)
在我2009年中期的MBP上,它显示了类似于:
usbmuxd 1
GrowlHelperApp 2
imklaunchagent 2
installd 2
stackshot 2
...
Run Code Online (Sandbox Code Playgroud)
2012 MBP没有显示任何内容.
我在BEING和END探针中添加了一个printf,看看END探针是否会像这样发射:
BEGIN
{
printf("Hi!");
}
syscall:::entry
{
@[execname] = count();
}
END
{
printf("Bye!")
}
Run Code Online (Sandbox Code Playgroud)
在2009年中期,MBP两种探测器都被发射和打印,而在2012 MBP上,只有BEGIN探测器被发射.END从未解雇过.
两个MBP都在运行Lion 10.7.3.我不确定下一步该尝试什么.现在想到的唯一区别是我没有在2012 MBP上安装开发人员命令行工具.这对我来说没有意义,而且是在黑暗中拍摄.
任何帮助或想法将不胜感激.谢谢.
============= [启用Root帐户] ====================
所以我启用了root帐户并重新运行了命令
sudo dtrace -n 'syscall:::entry { @[execname] = count() }'
Run Code Online (Sandbox Code Playgroud)
没有成功,但如果我这样做
su
dtrace -n 'syscall:::entry { @[execname] = count() }'
Run Code Online (Sandbox Code Playgroud)
有用!
============= [kill -s INT] =============================
我做了一些实验.如果我跑:
sudo kill -s INT [pid of dtrace]
Run Code Online (Sandbox Code Playgroud)
一切正常,输出显示.
如果我跑:
sudo kill -s INT [pid of sudo running dtrace]
Run Code Online (Sandbox Code Playgroud)
这也有效!
但是如果我在终端中使用control-c,它不会显示输出.
control-c和kill -s INT有什么区别?
归档时间: |
|
查看次数: |
592 次 |
最近记录: |