Windows 上的 Ruby 脚本进程监控

标签 ruby windows process-monitoring

我想在 Windows 上远程监控我的 ruby​​ 脚本进程。我确实知道如何在基于unix的系统上使用god或类似的监控框架来做到这一点,但问题是我想在windows上使用它。

基本上,我想做几件事:

  • 监控脚本是否正在运行
  • 如果脚本停止,则应重新启动
  • 将脚本的状态发送到远程服务器(这不是那么重要,我可以自己写这个选项)

也许有人可以建议。

请注意,我更喜欢用 ruby​​ 编写监控解决方案,这样我就可以进一步扩展它。

最佳答案

我在论坛上找到了这个www.ruby-forum.com并对它进行了一些调整,您可以看到进程(脚本)是否仍在运行。重新启动并报告,我想您可以自己处理吗?

require 'WIN32OLE'

procs = WIN32OLE.connect("winmgmts:\\\\.")
procs.InstancesOf("win32_process").each do |p|
  puts p.commandline if p.name == 'ruby.exe'
end

这里是可用的属性

class Win32_Process : CIM_Process
{
  string Caption;
  string CommandLine;
  string CreationClassName;
  datetime CreationDate;
  string CSCreationClassName;
  string CSName;
  string Description;
  string ExecutablePath;
  uint16 ExecutionState;
  string Handle;
  uint32 HandleCount;
  datetime InstallDate;
  uint64 KernelModeTime;
  uint32 MaximumWorkingSetSize;
  uint32 MinimumWorkingSetSize;
  string Name;
  string OSCreationClassName;
  string OSName;
  uint64 OtherOperationCount;
  uint64 OtherTransferCount;
  uint32 PageFaults;
  uint32 PageFileUsage;
  uint32 ParentProcessId;
  uint32 PeakPageFileUsage;
  uint64 PeakVirtualSize;
  uint32 PeakWorkingSetSize;
  uint32 Priority;
  uint64 PrivatePageCount;
  uint32 ProcessId;
  uint32 QuotaNonPagedPoolUsage;
  uint32 QuotaPagedPoolUsage;
  uint32 QuotaPeakNonPagedPoolUsage;
  uint32 QuotaPeakPagedPoolUsage;
  uint64 ReadOperationCount;
  uint64 ReadTransferCount;
  uint32 SessionId;
  string Status;
  datetime TerminationDate;
  uint32 ThreadCount;
  uint64 UserModeTime;
  uint64 VirtualSize;
  string WindowsVersion;
  uint64 WorkingSetSize;
  uint64 WriteOperationCount;
  uint64 WriteTransferCount;
};

关于Windows 上的 Ruby 脚本进程监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23702680/

相关文章:

ruby - 如何在不使用 block 的情况下在 Ruby 中计算 'map'?

mysql - 从 MySQL 迁移到 MongoDB 时出现 Gem::load 错误

读取时出现 Python 权限错误

windows - 如何在作为 Windows 服务运行的 tomcat7 上启用 JMX?

windows - SNMP - 从进程中获取信息

linux - linux top程序中,z选项表示什么

ruby-on-rails - 需要从 database.yml 文件中获取用户名和密码,并传递给 rake 任务中的方法

ruby-on-rails - 安装 ruby​​-oci8 gem 时遇到问题

c - 在窗口的某些区域绘制矩形导致屏幕闪烁

debugging - 我怎样才能捕获一个神秘的进程 killer ?