如何在systemtap脚本中获取kill signal sender的主机名
all, 我在使用systemtap脚本时遇到问题。 我不知道如何在systemtap脚本中获取kill signal sender的主机名。例如, 。我在服务器'sf1'中执行kill -9 xclock_process_pid。同时,我运行1.stap -x xclock_process_pid来监视xclock, 在'sf1'中发送kill -9 xclock_process_pid时,是否有任何方法可以在systemtap脚本中获取服务器名称'sf1'?如何在systemtap脚本中获取kill signal sender的主机名
但我遇到一些问题。我的1.stap显示如下:
#!/usr/bin/env stap
function hostname:string() %{
STAP_RETURN(current->nsproxy->uts_ns->name.nodename);
%}
probe oneshot {
log(hostname())
}
当我运行'stap -g 1.stap'将reprot下面的错误你能帮我吗?语义错误:位置0处的探测点不匹配(可选项:__nfs __scheduler __signal __tcpmib __vm _linuxmib _signal _sunrpc _syscall _vfs begin begin(number)end end(number)error error(number)generic ioblock ioblock_trace ioscheduler ioscheduler_trace ipmib irq_handler kernel kprobe kprocess linuxmib module字符串)nd_syscall netdev永不nfs nfsd进程进程进程进程号字符串procfs procfs字符串调度程序scsi信号套接字softirq stap staprun sunrpc系统调用tcp tcpmib定时器tty udp vfs vm workqueue):标识符'oneshot'在systemtap.stap: 87:7解决探测点onehot来源:探测oneshot {^通过2:分析失败。再试一次“--vp 01”选项。
换句话说,你在问如何获取当前机器的主机名。 TCP/IP级别的主机名不可及。这个sethostname(2)
级别的名字不容易到达,隐藏在内核变量后面的锁定的utsname()->
字段中。
如果安全不是一个问题,你可以通过内嵌的-C功能4.8时代的内核做到这一点:
function hostname:string() %{
STAP_RETURN(current->nsproxy->uts_ns->name.nodename);
%}
probe oneshot {
log(hostname())
}
,你会用stap -g ...
(大师模式)运行。
非常感谢第一。 – user1102185
当我运行'stap -g 1.stap'会出现以上错误,请问我能检查一下吗? – user1102185
好的,当添加“oneshot”探针别名时,您的systemtap版本必须大于2.5(2014-04-30)。使用'probe begin {log(....);退出()}'而不是。 – fche