linux下几个常用的命令

本文记录了在Linux服务器项目调试中常用的7个命令,包括ping、tail、nc、netstat、strace、ps和top。通过这些命令,可以检查网络连通性、实时查看文件变化、模拟客户端发送数据、查询网络套接字状态、跟踪系统调用、监控进程以及系统资源使用情况。详细介绍了每个命令的使用格式和实际应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录本人在写服务器项目时,调试过程中用到的几个命令。

1、ping

用于检测一个主机网络功能的可用性,以及网络的连接速度。其原理为:使用ICMP协议,向指定的网络地址发送一定数据长度的数据包,若网络地址存在且网络功能没有问题,就会返回同样大小的数据包,若在超时时间内没有返回,也会返回对应的错误信息。

格式:

ping   主机IP

例如:在终端输入ping 127.0.0.1(127.0.0.1为本地环回地址,常用于本机模拟通信测试),结果无误,如下:
在这里插入图片描述
ping命令的详解可参考博客:https://blog.youkuaiyun.com/hebbely/article/details/54965989

2、tail

用于查看文件内容,与cat不同的是,tail可以查看正在改变的文件内容,常用于实时更新的日志文件中。
格式:

tail -f filename

3、nc

常用于模拟一个客户端,向服务器发送数据,并返回数据,用来测试服务器的性能。
格式:

nc 主机ip  端口号

举例:本机有一个服务器(端口号为6666),终端输入nc 127.0.0.1 6666,建立连接后,输入数据发送给服务端,并返回大写的数据,如下:
客户端:
在这里插入图片描述
服务端:
在这里插入图片描述

4、netstat

用于查询网络套接字的连接情况,接口状态,显示路由表信息等。
格式:

 netstat -参数 

在这里插入图片描述
比如:我要查看本机服务器端口6666上的套接字连接情况,终端输入netstat -ntap|grep 6666,结果如下:
在这里插入图片描述
结果显示端口6666的服务器上有一个listen监听套接字描述符,以及一个已连接的套接字描述符,同属于进程80529;端口45660的客户端上只有一个已连接的套接字描述符,进程号为80644。可以发现,服务端和客户端是在同一台主机上的,事实的确如此。

5、strace

用于跟踪系统中进程或线程的系统调用,从而调试程序的运行状态。
常用格式:

strace -p 进程号/线程号

举例:本机开启了一个多线程服务端,主线程80733,子线程80734、80735
在这里插入图片描述
在终端输入:sudo strace -p 80733,可以看到主线程正阻塞在epoll_wait上,等待事件发生。
在这里插入图片描述

最后讲一下,本人调试服务器的过程中,遇到的一个问题,我要创建的是一个多线程池,结果发现在创建第一个子线程的时候,程序阻塞了无法向下执行,也无法接受新连接,其日志消息如下图所示:
在这里插入图片描述
于是我在终端中调试线程80870,输入:sudo strace -p 80870,结果如下:
在这里插入图片描述
很明显线程80870出现了错误,错误就是:FUTEX_WAIT_PRIVATE,即线程发生了死锁情况,于是我利用日志消息判断线程建立的过程中可能发生死锁的地方,最后确定线程在cond_.signal()处发生死锁,即没有解锁,无法执行loop_->loop()。
在这里插入图片描述
逻辑上此处不可能发生死锁,最后一步一步发现是线程锁写错了,把解锁(pthread_mutex_unlock)写成了加锁(pthread_mutex_lock),导致锁的临界区结束时,本该解锁结果又加了一次锁,就导致了死锁。
在这里插入图片描述
把这个问题改正后,重新编译并启动服务器后,可以看到服务器运行结果如下,
在这里插入图片描述
可以看到要创建的两个子线程81072、81073都创建完成其事件循环也在运行,主线程的事件循环也在运行等待新连接,服务器初始化状态无误。

6、ps

用于查询当前时刻进程运行情况,常用参数如下:

-A :所有的进程均显示出来
-a :不与terminal有关的所有进程
-u :有效用户的相关进程
-x :一般与a参数一起使用,可列出较完整的信息
-l :较长,较详细地将PID的信息列出

常用的参数搭配使用方法:

ps aux   # 查看系统所有的进程数据
ps ax    # 查看不与terminal有关的所有进程
ps -lA   # 查看系统所有的进程数据
ps axjf  # 查看连同一部分进程树状态

7、top

用于监控linux系统系统状况,实时显示各个进程的资源占用情况,内存使用情况以及进程运行时间等等。
具体详解:Linux中top命令参数详解Linux中top命令参数详解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值