我通过使用pgrep命令并使用snmp4j将陷阱发送到另一台机器来持续监视进程。
这是我监控过程的代码:
String[] process = new String[] {"/bin/sh", "-c","pgrep httpd" };
Process proc = new ProcessBuilder(process).start();
InputStreamReader input = new InputStreamReader(proc.getInputStream());
BufferedReader reader = new BufferedReader(input);
String line = reader.readLine();
int rc = proc.waitFor();
reader.close();
input.close();
我使用iptables限制发送到机器的陷阱数量,但每当陷阱数量超过配置的数量时,我都会收到以下错误:
org.snmp4j.MessageException: Operation not permitted
at org.snmp4j.MessageDispatcherImpl.sendPdu(Unknown Source)
at org.snmp4j.Snmp.sendMessage(Unknown Source)
at org.snmp4j.Snmp.send(Unknown Source)
at org.snmp4j.Snmp.send(Unknown Source)
当我收到此错误/ proc /(pid)/ fd计数也在机器中增加然后达到最大fd计数并且我收到了错误消息:
我该如何解决这个问题?