Unix 如何检查hup信号是否完成了除日志解析之外的其他过程?

Unix 如何检查hup信号是否完成了除日志解析之外的其他过程?,unix,solaris,Unix,Solaris,我有一个进程正在运行,我需要向它发送HUP信号并确认它是否完成 pkill HUP [process] 我现在是用日志文件做的,但是有很多事情我需要处理。。 同一个日志文件用hup done消息更新了100次,我必须对其进行解析,以获取最新的hup done消息等 如果hup触发并完成,是否有任何标志集或系统事件集 是否有人在进程上执行类似于hup信号的检查,并检查它是否真的完成了 感谢回复您可以使用dtrace通过proc::signal handle probe监视正在处理的信号。类似探针

我有一个进程正在运行,我需要向它发送HUP信号并确认它是否完成

pkill HUP [process]
我现在是用日志文件做的,但是有很多事情我需要处理。。 同一个日志文件用hup done消息更新了100次,我必须对其进行解析,以获取最新的hup done消息等

如果hup触发并完成,是否有任何标志集或系统事件集

是否有人在进程上执行类似于hup信号的检查,并检查它是否真的完成了

感谢回复

您可以使用dtrace通过proc::signal handle probe监视正在处理的信号。类似探针的列表可在中找到

下面的示例将监视由特定进程ID处理的SIGHUP。dtrace相当灵活,还可以监视具有给定名称或用户ID的所有进程

# cat sig.d
proc:::signal-handle
/ pid == $1 && args[0]==SIGHUP /
{
  printf("pid %d - %s - got signal %d at %Y\n", pid, execname, args[0], walltimestamp);
}
# sleep 300 &
1054
# dtrace -q -s sig.d 1054 &
1057
# kill -HUP 1054
# pid 1054 - sleep - got signal 1 at 2014 Mar 13 10:31:03
1054 Hangup
# 

你所说的完成它的过程是什么意思?使用dtrace可以很容易地告诉您目标进程何时开始执行SIGHUP的信号处理程序。如果你想知道信号处理程序什么时候做了某些事情,那就有点难了,这取决于你想寻找什么。谢谢你的评论,实际上这是demon进程,它不在我的控制范围内,在后台写日志,我只需要在hup触发时检查日志中写的东西,m解析它并检查hup是否已完成,是否有更好的方法,例如,在向demon发送任何信号时设置任何系统事件或标志?感谢您的评论,如果hup过程完成,是否设置了任何标志?这取决于要处理的进程,或者任何sig句柄在完成后被释放,等等???@user1145280这取决于你所说的完成。请举例说明接收信号的进程要监视什么。实际上,这就像有守护进程一样,为了进行配置更新,我从我的源代码中看到了-pkill-HUP,我可以在日志中看到类似HUP:start的消息,在bla-bla更新后,它会显示HUP:done now…因为我手中没有控制权,我只能在启动HUP后解析日志,直到HUP:done。。安装此日志解析..我想知道是否可以执行其他操作。。?就像你说的信号之类@user1145280你想知道什么时候守护进程将任何东西写入日志文件吗?