一文记录Linux常用命令和shell实践
1、linux基础命令
- 帮助命令:man、info
- 查找命令路径:which、whereis
- 查看文件文件个数:find ./ | wc -l
- 以时间顺序显示目录项:ls -lrt
- 查看文件时同时显示行数:cat -n xxx
- 查看两个文件的差别:diff file1 file2
- 动态显示文本最新信息,常用于查看日志: tail -f xxx.log
- 软连接/硬链接: ln cc ccAgain 和 ln -s cc ccAgain
- command1 && command2
- comamand1 || command2
- 查找txt和pdf文件:find . ( -name “.txt” -o -name “.pdf” ) -print
- find查找文件时指定深度:find . -maxdepth 1 -type f
- find只查找目录:find . -type d -print
- 文本处理
- 打包:taf -cvf xxx.tar . 解包: tar -xvf xxx.tar
- 压缩与解压:-z 解压gz文件;-j解压bz2;-J解压xz文件
- grep 查找文件中指定字符出现的次数
1 | cat Temp\ Query\ 1_20230914-171937.csv | grep "\"sop_v3_user" | grep -v "xxxx" | awk -F ',' '{print $2,$5,$6}' | sort | uniq -c | sort -rk 2 |
2、系统信息查看工具
- 查看操作系统发行版:lsb_release -a
- 查看内核版本信息:uname -a
- 查看cpu信息:cat /proc/cpuinfo
- 查看cpu核数:cat /proc/cpuinfo | grep processor | wc -l
- 查看内存信息:cat /proc/meminfo
- 显示架构:arch
- 查看进程间ipc资源情况:ipcs
- 显示当前所有的系统资源limit信息: ulimit -a
- 对生成的core文件的大小不进行限制:ulimit -c unlimited
3、系统资源管理和监控
- 查询正在运行的进程信息:ps -ef 或者 ps -ajx
- 查询某用户的进程: ps -ef | grep username 或者 ps -lu username
- 实时显示进程信息: top linux下的任务管理器,内存VIRT和RES
- 查看用户打开的文件: lsof -u username
- 查看某进程打开的文件: lsof -p pid
- 杀死某进程:kill -9 pid
- pmap输出进程内存你的状况,用来分析线程堆栈
- 查看内存使用量:free -m 或者 vmstat n m
- 查看磁盘使用情况:df -h
- du -ha –max-depth=1
- iostat 监视I/O子系统,ubuntu安装systat。通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息
- sar 找出系统瓶颈的利器
*ubuntu系统下,默认可能没有安装这个包,使用apt-get install sysstat 来安装;
安装完毕,将性能收集工具的开关打开: vi /etc/default/sysstat
设置 ENABLED=”true”
启动这个工具来收集系统性能数据: /etc/init.d/sysstat start.
4、网络工具
- 查看网络流量信息iftop
- netstat命令用于显示各种网络相关信息
- 查询某端口port被某个进程占用:netstat -antp | grep port,然后使用ps pid查询进程名称
- 也可以使用lsof -i:port 直接查询该端口的进程
- ping 测试网络连通情况
- traceroute IP 探测前往ip的路由信息
- 直接下载文件或者网页:wget
- 网络远程复制:scp -r localpath ID@host:path
- 使用ssh协议下载: scp -r ID@host:path localpath
- nc服务器编程常用,既可以作为客户端又可以指定端口作为服务端。
- 查看网络端口使用情况:https://www.runoob.com/w3cnote/linux-check-port-usage.html
5、环境变量
- 全局/etc/profile->/etc/profile.d;
- 读取当前用户下面的:
/.bash_profile->/.bash_login->~/.profile - 读取当前用户目录下面的:~/.bashrc
- export环境变量,退出失效
6、查看GPU信息
- 查看gpu信息 nvidia-smi
- 查看gpu驱动版本信息 cat /proc/driver/nvidia/version
- pkgconfig? PKG_CONFIG_PATH环境变量
7、测试系统磁盘的性能
dd是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。另外在linux中,有两个特殊的设备:/dev/null:回收站、无底洞,经常作为写端,不会产生IO,/dev/zero产生字符,经常作为读端,也不会产生IO。
(1)测试磁盘写能力
dd if=/dev/zero of=/test1.img bs=4k count=10000
因为/dev//zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。命令结尾添加oflag=direct将跳过内存缓存,添加oflag=sync将跳过hdd缓存。
(2)测试磁盘读能力
dd if=/dev/sda of=/dev/null bs=4k count=10000
因为/dev/sdb是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb上,也相当于测试磁盘的读能力。
(3)测试同时读写能力
time dd if=/dev/sda of=/test1.img bs=4k count=10000
在这个命令下,一个是物理分区,一个是实际的文件,对它们的读写都会产生IO(对/dev/sda是读,对/test.img是写),假设它们都在一个磁盘中,这个命令就相当于测试磁盘的同时读写能力。
8、使用dd和nc命令测试网络性能
nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具
(1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
(2)端口的扫描,nc可以作为client发起TCP或UDP连接
(3)机器之间传输文件
(4)机器之间网络测速
nc命令有个-l参数可以用来监听指定端口,因此我们要完成上面的功能,就只需要简单的从/dev/zero或者其他虚拟设备读入数据:
time nc -l -p 5001 < /test.img
然后另外一台电脑使用nc来连接到这个端口并读入数据:
time nc 192.168.0.11 5001 > /dev/null
上面的测试的结果中,是从磁盘读数据通过网络获取,通过time命令或缺时间参数,可以计算出网络的性能。更准备的测试应该从/dev/zero中多数据会更好一些
参考:https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/index.html