Linux 命令大全

Posted 小破孩楼主

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 命令大全相关的知识,希望对你有一定的参考价值。

目录

一、文件浏览命令

二、文件目录操作命令

三、文件查找命令

四、文件权限设置

五、系统性能监控命令

六、网络查看命令

七、linux 其他命令

 

一、文件浏览命令

  格式: 命令 [option] file

  • cat  由第一行开始显示文件内容  
  • tac  从最后一行开始显示,tac 是 cat 的倒写
  • nl   显示行号                                           -b a :空行也列出行号(类似 cat -n); -b t :非空行才列出行号(默认值); 
  • more 一页一页的显示文件内容           [空格键]下一页,[Backspace]上一页。    +n 从笫n行开始显示    -n 定义屏幕大小为n行  -c 清屏显示
  • less 与 more 类似,但他可以往前翻页    [空格键] 滚动一行, [回车键] 滚动一页,[pagedown]: 下一页,[pageup]:上一页
  • head 看头几行,                                    -n 设定行数
  • tail   看尾部几行                                     -f 循环读取    tail -100f catalina.out
  • od   以二进制的方式读取文件内容 

 

二、文件目录操作命令

1. mkdir    -m:mode 设定权限  -p:parents 创建父级目录             mkdir -m 777 -p dir1/dir2  

2. rm    -r 递归   -f force 强行删除,忽略不存在的文件,系统不再提示    rm -rf dir  

3. mv   -b :覆盖前先备份   -f :force 强制覆盖   -i :询问是否覆盖       mv 1.txt 2.txt  可用于重命名

4. ls命令   列出目录中所有子目录和文件

-a, –all 列出目录下的所有文件,包括以.开头的隐含文件
-l 列出目录或文件的详细信息,包括文件的权限、所有者、文件大小等
-R, –recursive 递归查询   -r, –reverse 依相反次序排列     -t 以文件修改时间排序
-F 显示文件类型(File type),在列出的文件名后添加符号:/ 表明是一个目录;@ 表明是到其它文件的符号链接;* 表明是一个可执行文件。 

ls -l s* 列出当前目录中所有以“s”开头的目录的详细内容
ls -F /opt/soft |grep /$ 只列出文件下的子目录
ls -ltr s* 列出目录下以s 开头的档案,愈新的排愈后面
ls | sed "s:^:`pwd`/:"   列出文件的绝对路径

5. tar   为linux的文件和目录创建档案

  tar [主选项+辅选项] 文件或目录

  主选项:【每条命令只能有一个主选项】

-c: --create  新建一个压缩文档,即打包     -x: --extract,--get  解压文件
-t: --list  查看压缩文档里的所有内容    -r:--append   向压缩文档里追加文件    -u:--update   更新原压缩包中的文件

  辅助选项:

-z 支持gzip解压文件  -j 支持bzip2解压文件  -Z 支持compress解压文件
-v 显示操作过程        -f 指定压缩文件  -t 显示压缩文件的内容
-d 记录文件的差别    -W 确认压缩文件的正确性  -l 文件系统边界设置
-k 保留原有文件不覆盖  -m 保留文件不被覆盖

      

tar -cvf log.tar 1.log 2.log   仅打包,不压缩!
tar -tf log.tar   不解压的情况下查看

6. gzip

-a 使用ASCII文字模式 -d 解压文件 -l 列出压缩文件的详细信息  -r 递归处理   -v 显示指令执行过程
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。

gzip *  / gzip -dv *   压缩和解压缩文件或目录,若当前目录下有10个文件则生成10个.gz的压缩包,gzip没有打包功能!

 

三、文件查找命令

1. find命令 在目录结构中搜索文件

格式:find pathname -options [-print -exec -ok ...]

命令选项:
-name 按照文件名查找文件   -perm 按照文件权限来查找文件
-user 按照文件属主来查找文件  -group 按照文件所属的组来查找文件
-mtime (modify time)指文件内容被修改的时间 +n:大于n, -n:小于n
-atime (access time)文件被读取或者执行的时间 -ctime (change time)文件状态改变时间,如通过chmod修改文件属性
-type 查找某一类型的文件,f:普通文件,d:目录,p:管道文件,l:符号链接文件,c:字符设备文件,b:块设备文件
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计 -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找

find -atime -2 查找2天内修改过的文件
find . -type f -name "*.log"  根据关键字和类型查找
find /opt/soft/ -perm 777  按照目录或文件的权限来查找文件
find . -size +1000c -print 查找当前目录大于1K的文件

2. which命令   查看可执行文件的位置

  which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。   which pwd

3. whereis命令  定位文件在文件系统中的位置

-b 查找二进制文件 -m 帮助文件   -s 源代码文件    whereis -b svn

4. locate命令   配合数据库查看文件位置

  locate和find功能类似,但locate是透过updatedb程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在执行loacte时直接找该索引,查询速度会较快

locate pwd  查找和pwd相关的所有文件
locate /etc/sh  搜索etc目录下所有以sh开头的文件

 

四、文件权限设置命令

1. chmod命令

  权限分为只读r、只写w 和 可执行x,用户分为 文件所有者u、同组用户g、其他用户o 和 所有的用户及群组a

1)文字设定法: chmod [who] [+ | - | =] [mode] 文件名

2)数字设定法: chmod [mode] 文件名

  • 数字属性的mode为3个数字,按顺序表示(u)(g)(o)对应的权限。r=4,w=2,x=1 ,- 为0 表示删除权限
  • rwx属性为4+2+1=7 ; rw-属性则4+2=6;r-x属性则4+1=5。
  • chmod ug+w,o-x test.log ;   chmod -R 777 dir

2. chgrp命令  (change group)    改变文件或目录所属的用户组

-c 当发生改变时输出调试信息 -f 不显示错误信息 -R 递归处理 -v 运行时显示详细的处理信息
--dereference 作用于符号链接的指向,而不是符号链接本身 --no-dereference 作用于符号链接本身
用户组的所有信息都存放在/etc/group文件中 cat /etc/group

chgrp -v group1 1.log
chgrp --reference=1.log 2.log 改变文件2.log的群组属性,使得文件2.log的群组属性和参考文件1.log的群组属性相同

3. chown命令(change owner)  改变文件或目录的所有者和所属的用户组

  chown -R root /usr/tony  

 

五、系统性能监控命令

1. top命令   能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。

  -u  指定用户名; -p  指定进程;  -n  循环显示的次数

   

  显示结果中的S 表示进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

2. free命令   显示系统使用和空闲的内存情况

  -k  以KB为单位显示内存使用情况;  -m  以MB为单位;-g   以GB为单位; -s<间隔秒数>  持续观察内存使用状况。

  free -m -s 10

  

3. vmstat命令 显示关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。

-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
-d:显示磁盘相关统计信息。

Procs(进程)       r: 运行队列中进程数量  b: 等待IO的进程数量
Memory(内存)  swpd: 使用虚拟内存大小  free: 可用内存大小  buff: 用作缓冲的内存大小  cache: 用作缓存的内存大小
Swap                    si: 每秒从交换区写到内存的大小  so: 每秒写入交换区的内存大小
IO                         bi: 每秒读取的块数  bo: 每秒写入的块数
系统                      in: 每秒中断数,包括时钟中断  cs: 每秒上下文切换数。
CPU                      us: 用户进程执行时间(user time)  sy: 系统进程执行时间  id: 中央处理器的空闲时间(包括IO等待时间)  wa: 等待IO时间   (以百分比表示)

4. iostat命令   统计系统的磁盘操作活动

   查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。但不能指定进程。

  格式:iostat[参数][时间][次数]

-C 显示CPU使用情况 -d 显示磁盘使用情况
-k 以 KB 为单位显示 -m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息 -n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况 -t 显示终端和CPU的信息
-x 显示详细信息 -V 显示版本信息

  (1) iostat -2 -3   每隔2秒刷新显示,且显示3次

%user:CPU处在用户模式下的时间百分比  %nice:CPU处在带NICE值的用户模式下的时间百分比   %system:系统模式
%iowait:CPU等待输入输出完成时间的百分比   %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比   %idle:CPU空闲时间百分比
备注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

      

  (2) iostat -d -x -k 1 1  查看设备使用率(%util)、响应时间(await)

  每秒用于 I/O 操作的时间比,如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

  

5. lsof命令   列出当前系统打开的文件

-c <进程名> 列出指定进程所打开的文件;   -p <进程号> 列出指定进程号所打开的文件
-u username 显示所属user进程打开的文件; -g gid 显示归属gid的进程情况
+d <目录> 显示目录下被进程打开的文件    +D<目录> 同上,但是会搜索目录下的所有目录,时间相对较长
-a 表示两个参数都必须满足时才显示结果   -i 用以显示符合条件的进程情况

lsof -d <FD> 0表示标准输入,1表示标准输出,2表示标准错误,所以大多数应用程序所打开的文件的 FD 都是从 3 开始
lsof -c mysql -c apache 列出一个或多个程序进程所打开的文件信息
lsof -i 列出所有的网络连接 lsof -i tcp/udp/:3306/udp:55/tcp:80
lsof -i @peida.linux:20,21,22,25,53,80 -r 3 每隔3秒打印peida.linux上端口为:20,21,22,25,53,80相关的所有文件信息

6. ps  (Process Status) 列出系统当前运行的进程。       

-a 显示同一终端下的所有程序 -aux 显示所有包含其他使用者的行程 -f 显示程序间的关系 -u 指定用户

ps -ef|grep tomcat    ps 与grep常用组合用法,查找特定进程
ps -aux --sort -pcpu | less      根据 CPU 使用率按降序排序
ps -aux --sort -pmem | less    根据内存使用率按降序排序

 

六、网络查看命令

1. ifconfig命令   获取或修改网络接口配置信息

格式:ifconfig [网络设备] [参数]

ifconfig  显示网络设备信息
ifconfig eth0 up/down   启动/关闭指定网卡
ifconfig eth0 add/del 33ffe:3240:800:1005::2/64   为网卡eth0配置/删除IPv6地址
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE   修改MAC地址
ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255   配置IP地址,添加子掩码和广播地址
ifconfig eth0 mtu 1500   设置最大传输单元
ifconfig eth0 arp/-arp     启用/关闭ARP协议

2. ip命令   ip命令用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道。[替换ifconfig]

3. netstat命令   显示网络连接状态及其相关信息

-a 显示所有socket,包括正在监听的。 -c 每隔1秒就重新显示一遍,直到用户中断它。
-i 显示所有网络接口的信息 -n 以网络IP地址代替名称,显示出网络连接情形。
-t 显示TCP协议的连接情况 -u 显示UDP协议的连接情况。
-p 显示建立相关连接的程序名和PID。 -b 显示在创建每个连接或侦听端口时涉及的可执行程序。 -o显示与每个连接相关的所属进程 ID。
-e 显示以太网统计。此选项可以与 -s 选项结合使用。 -s 显示每个协议的统计。
-f 显示外部地址的完全限定域名(FQDN)。 -r显示核心路由表,格式同“route -e”

netstat -l   显示监听的套接口
netstat -a | awk \'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}\'    统计机器中网络连接各个状态个数
netstat -ap | grep ssh     找出程序运行的端口
netstat -anpt | grep \':8080\'    找出运行在指定端口的进程

4. ss命令    (Socket Statistics) 用来获取socket统计信息  [替换netstat]

  ss可以显示和netstat类似的内容。但它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。ss比netstat快的主要原因是,netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。可以使用 time ss 和 time netstat -at 对比两个命令的效率。

  ss常用参数和netstat类似,如-anp

5. ping命令   用来测试与目标主机的连通性

ping -c 10 -i 0.5 192.168.120.206       -c 指定次数 -i 间隔的秒数
ping -b 192.168.120.1      ping网关,可用route查看网关地址

6. telnet命令  远程登录  

  telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了

  telnet <ip/hostname>

7. ssh命令  远程登录

8. rcp命令  (remote file copy) 远程文件拷贝

  rcp [参数] [源文件] [目标文件]         -r 递归 -x 为传送的所有数据打开DES加密 -p 试图保留源文件的修改时间和模式

  rcp -r  /home/root/dir  hostname:/home/root/

9. scp命令  (secure copy) 远程文件拷贝

  scp [参数] [原路径] [目标路径]

  scp root@192.168.120.204:/home/root/test.tar.gz /home/root/    从远处复制文件到本地目录, scp传输是加密的

10. route命令   显示和操作IP路由表

route -n 显示当前路由
route add/del default gw 192.168.120.240 添加/删除默认网关
route add/del -net 224.0.0.0 netmask 240.0.0.0 dev eth0 添加/删除网关/设置网关
route add/del -net 224.0.0.0 netmask 240.0.0.0 reject 添加/删除一条屏蔽的路由,目的地址为 224.x.x.x 将被拒绝

11. traceroute命令   检测发出数据包的主机到目标主机之间所经过的网关

  -q: 设置向每个网关发送的探测包个数(缺省为3)  -m 设置跳数

    以下返回结果每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,其实就是3个数据包对映的网关响应时间。
复制代码
 [root@localhost ~]# traceroute www.baidu.com
 traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
 1  192.168.74.2 (192.168.74.2)  2.606 ms  2.771 ms  2.950 ms
 2  211.151.56.57 (211.151.56.57)  0.596 ms  0.598 ms  0.591 ms
 3  211.151.227.206 (211.151.227.206)  0.546 ms  0.544 ms  0.538 ms
 4  210.77.139.145 (210.77.139.145)  0.710 ms  0.748 ms  0.801 ms
 5  202.106.42.101 (202.106.42.101)  6.759 ms  6.945 ms  7.107 ms
 6  61.148.154.97 (61.148.154.97)  718.908 ms * bt-228-025.bta.net.cn (202.106.228.25)  5.177 ms
 7  124.65.58.213 (124.65.58.213)  4.343 ms  4.336 ms  4.367 ms
 8  202.106.35.190 (202.106.35.190)  1.795 ms 61.148.156.138 (61.148.156.138)  1.899 ms  1.951 ms
 9  * * *
10  * * *
复制代码

 

七、linux 其他命令

1. grep 文本搜索

ps -ef|grep -c svn  查找指定进程个数
cat test.txt | grep -nf key.txt    从文件中读取关键词对test.txt进行搜索, 且显示行号
grep \'linux\' test1.txt test2.txt   从多个文件中查找关键词
cat test.txt |grep ^[^u]   输出非u开头的行内容
cat test.txt |grep hat$     输出以hat结尾的行内容

2. wc 统计指定文件中的字节数、字数、行数

-c 统计字节数。  -m 统计字符数。这个标志不能与 -c 标志一起使用。
-l 统计行数。    -w word统计单词数。计算由空白、跳格或换行字符分隔的字符串数量。

wc test.txt 显示:行数 单词数 字节数 文件名
ls -l | wc -l 统计当前目录下的文件数

3. watch  周期性执行命令/定时执行命令

-n或--interval 指定间隔的时间(缺省2秒)   -d或--differences  会高亮显示变化的区域

watch -n 5 -d \'cat /proc/loadavg\'    每10秒输出系统的平均负载

4. ln 文件链接

  为某一个文件在另外一个位置建立一个同步的链接,可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link)。硬链接会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接

硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建

 ln [参数][源文件或目录][目标文件或目录]

-b 删除,覆盖以前建立的链接 -i 交互模式,文件存在则提示用户是否覆盖
-d 允许超级用户制作目录的硬链接 -f 强制执行
-s 软链接(符号链接) -n 把符号链接视为一般目录 -v 显示详细的处理过程

ln -s test.log link1 给文件创建软链接
ln test.log ln1 给文件创建硬链接
ln test.log /opt/soft 创建test.log的硬连接/opt/soft/test.log
1)源文件被删除后,并没有影响硬链接文件;软链接文件在centos系统下不断的闪烁,提示源文件已经不存在
2)重建源文件后,软链接不在闪烁提示,说明已经链接成功,找到了链接文件系统;重建后,硬链接文件并没有受到源文件影响,硬链接文件的内容还是保留了删除前源文件的内容,说明硬链接已经失效

5. make 编译命令

  make是一个解释makefile中指令的命令工具,make可自动完成编译工作,而不用gcc命令单独编译每个源文件,并且可以只对程序员在上次编译后修改过的部分进行编译,提高了开发效率。Makefile文件描述了整个工程的编译、连接等规则。

  Linux应用软件的安装包通常有三种:
a. tar包,如software.tar.gz。它是使用UNIX系统的打包工具tar打包的。

  1)“tar –xvf 解压后的tar包”进行解包;
  2) 阅读附带的INSTALL文件、README文件;
  3) 执行“./configure”命令为编译做好准备;
  4) 执行“make”命令进行软件编译;
  5) 执行“make install”完成安装;
  6) 执行“make clean”删除安装时产生的临时文件。

b. rpm包,如software.rpm。它是Redhat Linux提供的一种包封装格式。

rpm参数 : -i    安装软件     -t     测试安装,不是真的安装    -p   显示安装进度    
           -U   升级安装    -v    检测套件是否正确安装        -f    忽略任何错误

       安装:rpm –ivh software.rpm  卸载: rpm –e software //软件名

c. dpkg包,如software.deb。它是Debain Linux提供的一种包封装格式。

   安装:dpkg –i software-1.2.3-1.deb  卸载: dpkg –e software

RedHat 系列 
  1) 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数” 
  2)包管理工具 yum 
  3) 支持tar包

Debian系列 
  1) 常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数” 
  2) 包管理工具 apt-get 
  3) 支持tar包

复制代码
apt-get update 更新软件包,在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令
apt-get upgrade 更新已安装的软件包
apt-get dist-upgrade 升级系统
apt-get install packagename 安装软件包
apt-get remove packagename 卸载软件包(保留配置文件)
apt-get –purge remove packagename 卸载软件包(删除配置文件)
apt-get clean 删除包缓存中的所有deb //APT的底层包是dpkg, 而dpkg安装软件包时, 会将*.deb放在缓存中/var/cache/apt/archives/
apt-get autoclean  删除包缓存中的已经过期的deb

以上是关于Linux 命令大全的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全

Linux常用命令代码大全

Linux常用基本命令大全介绍

《Linux命令行与shell脚本编程大全》第十七章 创建函数