ruby - 在给定端口上启动和停止进程的更好方法

标签 ruby linux refactoring

我的代码可以工作,但是有更好的解决方案吗?

我有一个重启外部工具的 Action 。有时它会重新启动或启动。我将端口设置为 12928。我的检查对象有一个从系统获取 PID 的方法。

def pids
  %x{netstat -tanp | grep 12928}
end

通过 pid 方法(如下)我得到了 pid。

def pid
  /(?<pid>\d+)\//.match(pits.to_s)[:pid].to_i
end

要停止此服务,我使用:

Process.kill("SIGTERM",pid) 
Process.detach(pid)

最佳答案

我发现了一个名为 eye ( https://github.com/kostya/eye ) 的 gem ,它的灵感来自 Bluepill 和 God。

看起来不错,我会试一试。

如果有人对此感兴趣,这里是存储库中的示例:

process :sample1 do
  pid_file '1.pid' 
  start_command 'ruby ./sample.rb'
  daemonize true
  stdall 'sample1.log'
end

开始一份工作时:

eye start sample1

要停止此作业,您键入:

eye stop sample1

关于ruby - 在给定端口上启动和停止进程的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31448675/

相关文章:

ruby-on-rails - 要散列的 Rails 对象

ios - pod install 向我提出错误如何解决

linux - 如何在 CentOS 最小安装中的 awk 中使用多个字段分隔符

c++ - 阻止其他人根据条件调用函数,但总是允许类调用它?

java - 关于返回 null 的重构代码的有趣思考问题

ruby - 获取 ruby​​ 可枚举(.select、.min、.max)作为引用而不是副本

ruby-on-rails - 如何使用 mongoid 构建管理 UI?

c++ - 无法在 Linux 上构建 opencv_contrib 模块

python - 在 Python 中运行时获取系统调用号

.net - Form_Load() 'event' 或覆盖 OnLoad()