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 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
注:本文假定读者已经知道类似top、netstat、df、vmstat等常见命令的用法,所以介绍的都是一些容易被忽视却很实用的命令用法。本文对于这些命令进行了简化和提炼,所有命令的完整功能需要具体参考命令手册。
本文作者:佚名 来源:51CTO阿里云服务器Alibaba Cloud Linux操作系统安装Redis流程及命令 阿里云服务器Alibaba Cloud Linux操作系统安装Redis流程及命令,Alibaba Cloud Linux 2针对Redis应用进行了专项调优,相比社区版操作系统,Redis应用整体性能提升20%以上。Alibaba Cloud Linux 2内置Redis 6.0.5和Redis 3.2.12的yum源,执行sudo yum install命令即可部署Redis 6.0.5和Redis 3.2.12。
前端可以掌握的linux命令: 三种远程方式和三种关机重启的方式 前言: 平常自己喜欢折腾,所以自己买了云服务器,有时候会捯饬一下,所以避免不了要跟linux系统打交道,那么第一步便是如何远程,如何开机如何重启的问题
相关文章
- Linux中more和less命令用法
- linux每日命令(32):gzip命令
- Linux-安装命令01:apt-get命令详解(超详细)【apt-get是Ubuntu默认的包管理工具】
- linux中grep命令的用法
- Linux的date命令用法
- Linux基础命令介绍十四:定时任务
- Linux top命令的用法详细详解
- 红帽CEO:Linux将称霸云计算
- linux就该这么学之新手必须掌握的linux命令
- Linux命令·lsof
- 【Hack The Box】linux练习-- Pit
- Linux -- Grep命令
- linux:make命令与makefile文件
- Linux上安装配置InstantClient及64位系统Pl/SQL配置
- linux-shell脚本命令之grep
- Linux 服务器防火墙开放端口命令(iptables、firewalld和ufw)
- Linux查看内存和cpu利用率的命令
- linux中grep命令的用法
- 嵌入式 Linux下curl库API简单介绍
- Linux-bc命令(21)
- Linux-iconv命令、并批处理将所有GBK文件转换为UTF8(18)
- Linux 下一个很棒的命令行工具