Linux下容易被忽视的那些命令用法
liebian365 2024-10-14 22:23 19 浏览 0 评论
本文适合在linux下开发的同学阅读,需要具备基本的linux操作命令。
一、前言
工作中发现很多同学对于Linux下的命令不太熟悉,尤其是一些功能强大的工具,使用者很少。正所谓工欲善其事,必先利其器。本文总结了Linux下常用命令的用法,希望能够帮助大家提升日常开发的效率。
二、命令
1.strace
strace用于跟踪程序执行过程中的系统调用,如跟踪test进程,只需要:
strace -p [test_pid] 或直接strace ./test
但如果需要:
跟踪进程内的线程: -f 选项
统计时间段内的各个系统调用次数分布:-C 选项
过滤某些系统调用:-e trace选项,如-e trace=network只显示网络相关的系统调用,-e trace=open,close,read,write只显示这4个系统调用,常用于只获取某些特定的系统调用
显示系统调用的时间:-ttt选项
详细显示每行的数据,而不是... -s选项加大字符串的长度限制如-s 1024
比如,跟踪pid为12345的进程中所有线程的read和write系统调用,输出字符串的长度限制为1024:
strace -s 1024 -f -e trace=read,write -p 12345
2.tcpdump
tcpdump是Linux上的抓包工具,如抓取eth0网卡上的包,使用:
sudo tcpdump -i eth0
但如果需要:
文本形式显示抓包数据:-A选项
显示16进制的报文数据:-X选项
输出结果到文件中 -w选项,如-w 1.cap将报文输出到1.cap文件,此文件可用wireshark查看
过滤主机和端口号 如host 11.11.11.11 and port 12345过滤主机ip为11.11.11.11,端口号为12345的tcp报文
比如,抓取80端口的HTTP报文,以文本形式展示:
sudo tcpdump -i any port 80 -A
这样你就可以清楚看到GET、POST请求的内容了。
3.nc
nc可以在Linux上开启TCP Server、TCP Client、UDP Server、UDP Client。
如在端口号12345上开启TCP Server和Client模拟TCP通信:
Server: nc -l 127.0.0.1 12345
在端口号12345上开启UDP Server和Client模拟TCP通信:
Server: nc -ul 127.0.0.1 12345
Unix Socket通信示例:
Server: nc -Ul /tmp/1.sock
4.curl
curl用于模拟HTTP请求,在终端模拟请求时常用,如最基本的用法:
curl http://www.baidu.com
但如果需要:
指定HTTP首部 -H选项,如-H "Host: xx.xx.xx.xx"
指定请求方法 -X选项,如-X POST,-d指定post数据
显示请求详细信息,包括请求和响应首部 -v选项
重定向请求自动追踪 -L选项
常见的curl请求选项-sSfL表示: 不显示进度信息,显示错误信息,发生HTTP错误时失败,自动跟踪重定向
5.find
find可用于查找文件,比如:
find . -name "1.txt"
表示在当前目录及其子目录下查找文件名为1.txt的文件,结合xargs使用功能更加强大,如:
find . -type f|xargs grep 'abcd'
表示在当前目录及其子目录下查找包含abcd字符串的文件行,经常用于搜索代码。
6.lsof
lsof命令主要用法包括:
sudo lsof -i :[port] 查看端口占用进程信息,经常用于端口绑定失败时确认端口被哪个进程占用
sudo lsof -p [pid] 查看进程打开了哪些文件或套接字
7.ss
Linux上的ss命令可以用于替换netstat,ss直接读取解析/proc/net下的统计信息,相比netstat遍历/proc下的每个PID目录,速度快很多。
常见示例:
ss -t -a 显示所有的TCP Sockets
ss -u -a 显示所有的UDP Sockets
ss -x src /tmp/a.sock 显示连接到/tmp/a.sock的进程
ss -o state [state TCP-STATE] 如ss -o state established显示所有建立的连接
8.awk/sed
awk和sed在文本处理方面十分强大,其中,awk按列进行处理,sed按行进行处理。
如采用冒号分隔数据,输出第一列数据($0代表行全部列数据,$1代表第一列,$2代表第二列...)
awk -F ":" '{print $1}'
在awk的结果基础上,结合sort、uniq和head等命令可以轻松完成频率统计等功能
查看文件的第100行到第200行:
9.screen
当采用telnet或SSH登录远程主机时,因为网络中断的原因会导致session终止,此时会触发SIGHUP信号使得任务终止,因此我们常常会看到有些任务采用nohup的方式运行,避免任务被打断。screen通过多终端的方式,巧妙地解决了这个问题。 示例:
screen -S test 开启一个screen,这时拥有一个终端,所有执行的程序都会在ps中展示
Ctrl+a键+d键 退出当前screen,切到上级窗口
screen -ls 查看所有screen列表,如
13333.test (Detached)
screen -r [pid.]tty.host 进入选定的screen,如screen -r 13333.test
exit 关闭当前screen
注:本文假定读者已经知道类似top、netstat、df、vmstat等常见命令的用法,所以介绍的都是一些容易被忽视却很实用的命令用法。本文对于这些命令进行了简化和提炼,所有命令的完整功能需要具体参考命令手册。
原PO主:亘井/软件编程之路
相关推荐
- 4万多吨豪华游轮遇险 竟是因为这个原因……
-
(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...
- “菜鸟黑客”必用兵器之“渗透测试篇二”
-
"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...
- 科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白
-
作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...
- 麦子陪你做作业(二):KEGG通路数据库的正确打开姿势
-
作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...
- 知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势
-
智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...
- 每日新闻播报(September 14)_每日新闻播报英文
-
AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...
- 香港新巴城巴开放实时到站数据 供科技界研发使用
-
中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...
- 5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper
-
本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...
- Qt动画效果展示_qt显示图片
-
今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...
- 如何从0到1设计实现一门自己的脚本语言
-
作者:dong...
- 三年级语文上册 仿写句子 需要的直接下载打印吧
-
描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...
- C++|那些一看就很简洁、优雅、经典的小代码段
-
目录0等概率随机洗牌:1大小写转换2字符串复制...
- 二年级上册语文必考句子仿写,家长打印,孩子照着练
-
二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)