当 svcadm 重新启动已终止的服务时如何收到通知

dee*_*ell 5 solaris services

我正在使用 svcadm 来保持我的 node.js 服务器在 Illumos 上运行,如果 svcadm 由于崩溃而重新启动服务器,是否有办法收到通知?特别是如果该进程自行关闭而不是在我重新启动它时。

我想要运行一个脚本,以便我可以发送电子邮件或发出警报。

Bit*_*Nix 0

每个服务都有自己的日志。您可以通过执行以下操作来检查您的服务的日志是什么,例如我正在使用 ssh:

#svcs -xv ssh
svc:/network/ssh:default (SSH server)
 State: online since Tue Nov 27 11:38:34 2012
   See: man -M /usr/share/man -s 1M sshd
   See: /var/svc/log/network-ssh:default.log
Impact: None.
Run Code Online (Sandbox Code Playgroud)

现在您可以拥有自己的脚本(假设在 crontab 中)来检查日志文件上的更改。第二种方式,我想这实际上是最好的一种,您可以更改启动脚本,无论何时启动,它都会自动向您发送一封电子邮件。

要找出启动脚本所在的位置:

svccfg -s svc:/network/ssh
listprop
...
start/exec                        astring  "/lib/svc/method/sshd start
...
Run Code Online (Sandbox Code Playgroud)

现在只需编辑脚本,在启动之前您可以放置​​自动邮件通知

vi /lib/svc/method/sshd    
Run Code Online (Sandbox Code Playgroud)

搜索函数 start 并添加如下内容:

echo "Service ssh has been restarted!" |mailx -s "SSHD" user@mailbox
Run Code Online (Sandbox Code Playgroud)

现在只需更新以匹配您的环境和服务。不漂亮但有效。