在我的 Linux 服务器上我运行了:
sudo thin start -p 80 -d
现在我想重启服务器。问题是,我似乎无法让旧进程终止它。我试过:
netstat -anp
但是我在端口 80 上看到的内容是这样的:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
所以,它没有给我一个 PID 来杀死它......
我试过了,pgrep -l thin
但什么也没发生。同时pgrep -l ruby
有 6 个进程在运行。我不太明白为什么会有多个 ruby 线程运行,或者我需要终止哪一个线程...
我如何终止/重新启动瘦守护进程?
答案1
thin
是一个 Ruby 瑰宝,因此 Ruby 解释器运行它是有意义的。
典型的调用thin
如下:
bundle exec rails server thin -p $PORT -e $RACK_ENV
在进程列表中,从ps
命令来看,出现如下内容:
6870 pts/3 Rl+ 0:01 /usr/bin/ruby script/rails server thin -p 80 -e production
使用 时pgrep
,默认情况下它仅与命令名称匹配(即ruby
)。当您搜索的模式出现在参数中时,这将不匹配。为此,您-f
还需要使用该选项:
pgrep -l -f thin
然后返回结果如下:
6870 /usr/bin/ruby script/rails server thin -p 80 -e production
瞧,这就是您正在寻找的流程。
答案2
以 root身份运行netstat -tulpn
将会在输出中给出 PID。
[root@hostname ~]# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 3738/nrpe
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 12747/java
tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 3273/snmpd
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 30110/python
tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 12747/java
tcp 0 0 0.0.0.0:8649 0.0.0.0:* LISTEN 19770/gmond
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1656/mysqld
tcp 0 0 0.0.0.0:8651 0.0.0.0:* LISTEN 19794/gmetad
tcp 0 0 0.0.0.0:8652 0.0.0.0:* LISTEN 19794/gmetad
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 12747/java
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1914/httpd
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3885/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 13549/sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 12403/postgres
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 15834/master
udp 0 0 0.0.0.0:40462 0.0.0.0:* 3862/avahi-daemon
udp 0 0 0.0.0.0:161 0.0.0.0:* 3273/snmpd
udp 0 0 127.0.0.1:53 0.0.0.0:* 3885/dnsmasq
udp 0 0 10.182.10.5:8649 0.0.0.0:* 19770/gmond
udp 0 0 0.0.0.0:5353 0.0.0.0:* 3862/avahi-daemon
udp 0 0 10.182.10.5:123 0.0.0.0:* 3335/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 3335/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 3335/ntpd