一、查看已知端口占用情况
比如,我们想知道8080端口的使用情况,或者说被谁占用了,命令如下:
netstat -anp | grep 8080
结果如下:

也可以使用命令:
netstat -tln | grep 8080
结果:
和上个命令对比,少了“2597932/java”,这个显示的是进程号以及被哪个程序所占用。
如果没有被占用,就什么都不显示。
二、查看全部端口占用情况
netstat -anp
# 或者
netstat -tln
显示结果分别如下面:
[root@Cent0S8-FTP sysconfig]# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:44321 0.0.0.0:* LISTEN 1740/pmcd
tcp 0 0 127.0.0.1:4330 0.0.0.0:* LISTEN 2715/pmlogger
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1191/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1196/cupsd
tcp 0 0 192.168.10.111:22 192.168.10.112:56798 ESTABLISHED 3209340/sshd: fangd
tcp 0 0 192.168.10.111:22 192.168.10.112:58794 ESTABLISHED 3330163/sshd: fangd
tcp 32 0 192.168.10.111:35222 8.43.85.13:443 CLOSE_WAIT 3876/gnome-shell
tcp 0 52 192.168.10.111:22 192.168.10.112:56674 ESTABLISHED 3198229/sshd: fangd
tcp6 0 0 ::1:44321 :::* LISTEN 1740/pmcd
tcp6 0 0 ::1:4330 :::* LISTEN 2715/pmlogger
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::21 :::* LISTEN 1430/vsftpd
tcp6 0 0 :::22 :::* LISTEN 1191/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1196/cupsd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 982/avahi-daemon: r
udp 0 0 192.168.10.111:46722 193.182.111.143:123 ESTABLISHED 985/chronyd
udp 0 0 0.0.0.0:67 0.0.0.0:* 2632/dnsmasq
udp 0 0 192.168.10.111:68 192.168.10.1:67 ESTABLISHED 1176/NetworkManager
udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
udp 0 0 0.0.0.0:45242 0.0.0.0:* 982/avahi-daemon: r
udp 0 0 127.0.0.1:323 0.0.0.0:* 985/chronyd
udp6 0 0 :::5353 :::* 982/avahi-daemon: r
udp6 0 0 :::111 :::* 1/systemd
udp6 0 0 ::1:323 :::* 985/chronyd
udp6 0 0 :::41737 :::* 982/avahi-daemon: r
raw6 0 0 :::58 :::* 7 1176/NetworkManager
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] SEQPACKET LISTENING 24579 1/systemd /run/systemd/coredump
unix 2 [ ACC ] STREAM LISTENING 29959 967/lsmd /var/run/lsm/ipc/simc
[root@Cent0S8-FTP sysconfig]# netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:44321 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:4330 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 ::1:44321 :::* LISTEN
tcp6 0 0 ::1:4330 :::* LISTEN
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::21 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
三、查看具体端口被哪个程序占用
lsof -i :8080
[root@Cent0S8-FTP sysconfig]# lsof -i :8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 2597932 root 45u IPv6 27126054 0t0 TCP *:webcache (LISTEN)
四、kill被占用的进程
我们通过三中的命令得到PID对应的2597932,或者通过命令“netstat -anp | grep 8080”得到的“2597932/java”,这里的2597932都是端口占用的对应进程的进程号,我们杀掉对应进程号即可。
kill -9 2597932
五、检查对应端口是否还在占用
在“四”中,我们kill了对应的进程,那么是否成功了呢,我们可以通过“一”中的命令再查看一下8080端口的使用情况。
netstat -anp | grep 8080
发现没有任何结果,这就说明已经kill掉了对应的进程。
这是在Ruby中设置默认值的常用方法:classQuietByDefaultdefinitialize(opts={})@verbose=opts[:verbose]endend这是一个容易落入的陷阱:classVerboseNoMatterWhatdefinitialize(opts={})@verbose=opts[:verbose]||trueendend正确的做法是:classVerboseByDefaultdefinitialize(opts={})@verbose=opts.include?(:verbose)?opts[:verbose]:trueendend编写Verb
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案
我正在学习Rails,对Sinatra和Merb知之甚少。我想知道您会在哪些情况下使用Merb/Sinatra。感谢您的反馈! 最佳答案 Sinatra是一个比Rails更小、更轻的框架。如果你想让一些东西快速运行,只需发送几个URL并返回一些简单的内容,就可以使用它。看看Sinatrahomepage;这就是启动和运行“Hello,World”所需的全部内容,而在Rails中,您需要生成整个项目结构、设置Controller和View、设置路由等等(我还没有有一段时间写了一个Rails应用程序,所以我不知道“Hello,World
s=Socket.new(Socket::AF_INET,Socket::SOCK_STREAM,0)s.connect(Socket.pack_sockaddr_in('port','hostname'))ssl=OpenSSL::SSL::SSLSocket.new(s,sslcert)ssl.connect从这里开始,如果ssl连接和底层套接字仍然是ESTABLISHED,或者它是否在默认值7200之后进入CLOSE_WAIT,我想检查一个线程几秒钟甚至更糟的是在实际上不需要.write()或.read()的情况下关闭。是用select()、IO.select()还是其他方法完成
假设我在Store的模型中有这个非常简单的方法:defgeocode_addressloc=Store.geocode(address)self.lat=loc.latself.lng=loc.lngend如果我想编写一些不受地理编码服务影响的测试脚本,这些脚本可能已关闭、有限制或取决于我的互联网连接,我该如何模拟地理编码服务?如果我可以将地理编码对象传递到该方法中,那将很容易,但我不知道在这种情况下该怎么做。谢谢!特里斯坦 最佳答案 使用内置模拟和stub的rspecs,你可以做这样的事情:setupdo@subject=MyCl
因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实
是否可以让这段代码更紧凑?我在这里错过了什么吗?ifvaluemax_ratemax_rateelsevalueend 最佳答案 这里有一些完全不同的东西:[min_rate,value,max_rate].sort[1] 关于ruby-如何更优雅地记下这三种情况?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/13309740/
我想在共享服务器上建立一个jekyll博客。当我尝试安装Jekyll时,我得到“您没有写权限”。我该如何在没有root或sudo的情况下解决这个问题?更多细节:我在共享服务器上有空间,但没有根访问权限。我无法安装Ruby,尽管托管公司应我的要求安装了它。当我尝试安装Jekyll时我使用user@hosting.org[~]#geminstalljekyll这是我得到的回应:ERROR:Whileexecutinggem...(Gem::FilePermissionError)Youdon'thavewritepermissionsintothe/usr/lib/ruby/gems/1.
例如,假设我有一个名为Products的模型,并且在ProductsController中,我有以下代码用于product_listView以显示已排序的产品。@products=Product.order(params[:order_by])让我们想象一下,在product_listView中,用户可以使用下拉菜单按价格、评级、重量等进行排序。数据库中的产品不会经常更改。我很难理解的是,每次用户选择新的order_by过滤器时,rails是否必须查询,或者rails是否能够以某种方式缓存事件记录以在服务器端重新排序?有没有一种方法可以编写它,以便在用户排序时rails不会重新查询结果