我使用 ruby 编写了一个小型 webSocket 服务器。我使用以下命令从命令行运行它:
ruby websocket_server.rb
这将启动服务器,并一直工作到我保持 ssh 连接打开并运行为止(我在远程服务器场中的服务器上执行此操作,因此无法直接访问)。我想了解如何编写两个脚本:一个脚本将在启动时启动 ruby 程序,另一个脚本将检查(例如每 30 分钟一次)程序是否启动并运行。顺便提一下,我的最终目标是在 php 仪表板上有一个“按钮”,如果进程挂起,则可重新启动进程,而无需等待检查和重新启动进程(我已经能够检查进程状态)。
答案1
Ubuntu 14.04 使用暴发户,因此您可以编写一个小的配置文件,说明您希望 upstart 如何管理您的服务,例如,您将其命名为“myweb”。使用 sudo 创建一个名为的文件/etc/init/myweb.conf
(从那里到实际文件的符号链接将不起作用),内容如下:
description "run webSocket server when network ready"
start on static-network-up
respawn
exec ruby websocket_server.rb
你可以用以下方法测试一下
sudo start myweb
status myweb
sudo stop myweb
该status
命令将显示进程是否仍在运行。respawn
表示您希望进程在终止时自动重新启动。start、stop 和 status 命令都只是指向 initctl 的链接。有关 conf 文件格式,请参阅man initctl
,以及man 5 init
新贵食谱。