我有一个 ruby 脚本和一个 qt 可执行文件。它们几乎都完成相同的任务,但监听不同的端口。基本上,它们是 UDP 套接字服务器,监听我远程 ubuntu 服务器上指定端口上的传入连接。它们监听来自 GPS 设备的 GSM 调制解调器的 UDP 数据包。现在,我可以通过 ssh 进入我的远程服务器并运行 ruby 脚本以开始监听到所述端口的连接:“ruby server.rb”。但是,只要我注销并关闭 ssh 连接,脚本大概就会停止监听。我希望这个脚本继续永远监听该端口上的传入连接,即使在我注销服务器之后。
例如:
sudo netstat -tulpn
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 25391/mysqld
该 mysqld 服务器不断侦听端口 3306 的传入连接。我希望我的脚本也能做同样的事情。我希望能够运行 netstat 并始终看到我的程序在运行并侦听指定端口。
在这种情况下,最好的方法是什么?创建一个守护进程?还是使用 nohup?
答案1
使用一个名为 的程序screen
。
将其安装在服务器上并运行screen
,任何运行的程序都将在服务器上保持活动状态。
要安装它,请运行
sudo apt-get install screen
有关其他命令的更多详细信息,请参见此处http://www.kuro5hin.org/story/2004/3/9/16838/14935