Linux下容易被忽视的命令有哪些

61次阅读
没有评论

共计 2644 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章给大家分享的是有关 Linux 下容易被忽视的命令有哪些的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

一、前言

工作中发现很多同学对于 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 Client: nc 127.0.0.1 12345

在端口号 12345 上开启 UDP Server 和 Client 模拟 TCP 通信:

Server: nc -ul 127.0.0.1 12345 Client: nc -u 127.0.0.1 12345

Unix Socket 通信示例:

Server: nc -Ul /tmp/1.sock Client: nc -U /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 行: sed -n  100,200p  log.txt  替换字符串中的特定子串  echo  int charset=gb2312 float |sed  s/charset=gb2312/charset=UTF-8/g   替换 test 文件每行匹配 ab 的部分为 cd sed -i  s/ab/cd/g  test

9.screen

当采用 telnet 或 SSH 登录远程主机时,因为网络中断的原因会导致 session 终止,此时会触发 SIGHUP 信号使得任务终止,因此我们常常会看到有些任务采用 nohup 的方式运行,避免任务被打断。screen 通过多终端的方式,巧妙地解决了这个问题。  示例:

screen -S test 开启一个 screen,这时拥有一个终端,所有执行的程序都会在 ps 中展示

Ctrl+ a 键 + d 键 退出当前 screen, 切到上级窗口

screen -ls 查看所有 screen 列表,如

13333.test (Detached) 14039.test4 (Detached)  表示两个 screen,screen 标识为 13333.test 和 14039.test4

screen -r [pid.]tty.host 进入选定的 screen,如 screen -r 13333.test

exit 关闭当前 screen

感谢各位的阅读!关于“Linux 下容易被忽视的命令有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计2644字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)