作为程序员一定要保持良好的睡眠,才能好编程

nc命令检查-检测一个命令是否在运行

发布时间:2018-03-10

实际工作中,linux服务器配置好以后,日后可能会出现部分服务故障,比方说   网站打不开,那么如何实时知道我的服务器现在是什么情况呢?


正常情况下,我们会使用  netstat -ntlp   查看端口 、ps -ef 等命令去查看。


ps -ef | grep nginx 

这样可以检测到 nginx的运行情况,但不能说明 它正在运行,为什么呢,可能是处于假死状态。这个是需要我们进行检测的。


但是正常情况下,使用ps 这条命令有可能会出现假死的状态,ps 这是无法检测到的。


这就需要说明一下,今天我们要说的这个命令 nc



nc 这是一个命令,需要进行安装, yum install -y nc  等待完成即可。


nc -l localhost 10000   开启一个nc监护进程  10000



再次开启一个窗口

nc localhost 10000 


你好


点击回车的话  另外一个窗口就收到  你好 这个信息了


nc -w 3 localhost 3306  与3306端口通讯 3秒钟



例如命令

#这条命令 是需要 和 172.28.66.194 这台服务器的 80 端口 通讯 10 秒钟  ,如果通讯成功,打印出  ok  
nc -w 10 172.28.66.194 80 && echo ok
ok


#如果没有通讯成功,则 打印出  no
nc -w 10 172.28.66.194 3306 && echo ok || echo no
ok







[root@localhost ~]# nc -w 9 172.28.66.194 80
[root@localhost ~]# nc -w 9 172.28.66.194 80 && echo ok || echo no
ok
You have new mail in /var/spool/mail/root
[root@localhost ~]# nc -w 3 172.28.66.194 89990 && echo ok || echo no
nc: port range not valid
no
[root@localhost ~]# nc -w 3 172.28.66.194 85 && echo ok || echo no
no


检测一台服务器端口是否畅通,还有其他的两种方法:


telnet

此法常用来检测是个远端端口是否畅通

telnet 

Connecting to 172.28.66.194:80...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.



quit 退出


端口连接成功

telnet.png



端口连接失败

telnet failed.png




在使用nmap这个命令的时候,我们需要 yum install -y nmap  安装下

nmap


nmap ip -p portNum 这是执行规则

[root@localhost ~]# nmap 172.28.66.194 -p 80

Starting Nmap 5.51 ( http://nmap.org ) at 2018-09-03 09:49 CST
Nmap scan report for 172.28.66.194
Host is up (0.000088s latency).
PORT   STATE SERVICE
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
[root@localhost ~]# nmap 172.28.66.194 -p 81

Starting Nmap 5.51 ( http://nmap.org ) at 2018-09-03 09:50 CST
Nmap scan report for 172.28.66.194
Host is up (0.000051s latency).
PORT   STATE  SERVICE
81/tcp closed hosts2-ns

Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
[root@localhost ~]# nmap 172.28.66.194 -p 3306

Starting Nmap 5.51 ( http://nmap.org ) at 2018-09-03 09:50 CST
Nmap scan report for 172.28.66.194
Host is up (0.000064s latency).
PORT     STATE SERVICE
3306/tcp open  mysql

Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
You have new mail in /var/spool/mail/root
[root@localhost ~]# nmap 172.28.66.194 -p 9003

Starting Nmap 5.51 ( http://nmap.org ) at 2018-09-03 09:50 CST
Nmap scan report for 172.28.66.194
Host is up (0.000043s latency).
PORT     STATE  SERVICE
9003/tcp closed unknown

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds


这是执行的结果,会显示 出  open  还是close   

PORT     STATE SERVICE
3306/tcp open  mysql


备注说明:如下图所示,只有是0.0.0.0 这样的ip地址,才是对外公开的端口,

netstat.png


例如:

9007.png

这个端口其实我是开启的,但是前面有一个ip地址 127.0.0.1 ,这不是对外公开的端口,因此这里显示关闭。


如果nmap localhost  或 nmap 127.0.0.1 这是可以正常返回open 状态的


90072.png






这里其实有一件很有意思的事情:




nmap localhost -p 9007 | grep open | wc -l



grep.png


grep 通过管道可以 过滤 信息


wc -l