程序员必须耳熟能详的Linux命令

free

显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区

free [选项]
  • -h:以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值
  • -s:周期性的查询内存使用信息,持续观察内存使用状况
  • -t:显示内存总和列

如下例:以合适的单位显示内存使用情况,每5秒观察一次内存

free -th -s 5

在这里插入图片描述


df

查看磁盘使用情况

df [选项] [文件]
  • -h:使用人类可读的格式,使输出容易阅读和理解,从而使显示可读的

如下例:可友好的可读格式查看系统磁盘的使用状况

df -h

第一列Filesystem是指定文件系统的名称,最后一栏Mounted on是"安装在"指定的文件系统的挂载点
在这里插入图片描述


top

实时显示cpu占用率,进程信息

top [选项]
  • -d: 指定显示的更新速度,或是在交谈式指令列( interactive command)按 s
  • -q: 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
  • -c: 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 (
    dead child process ) 的 CPU time 累积起来
  • -s: 安全模式,将交谈式指令取消, 避免潜在的危机
  • -i:不显示任何闲置 (idle) 或无用 (zombie) 的行程
  • -n: 更新的次数,完成后将会退出 top
  • -b:批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内
  • -p:显示指定的进程信息

如下例:更新两次后终止显示进程信息

top -n 2

如下例:更新周期为3秒,即每3秒更新一次进程信息

top -d 3

如下例:显示进程号为163的进程信息,CPU、内存占用率等

top -p 163



wc

统计文件的字符、文字和行的数量

wc [选项] 文件...
  • -c:只显示Bytes数
  • -l:只显示行数
  • -w:只显示字数

如下例:统计runtimelog.log的行数,字节数,字数

wc runtimelog.log 

在这里插入图片描述



tail

读取文件并输出文件的最后部分,并且不断刷新

tail [选项] 目标文件
  • -f:循环读取,作用是文件处于打开状态,不断显示新添加的行。通过这个选项我们可以用来监视某些文件
  • -n:显示文件的尾部 n 行内容
  • -s:常与-f合用,表示在每次循环读取反复的间隔休眠S秒



uname

查看操作系统的相关信息

uname [选项]
  • -a:显示系统全部的信息
  • -m:显示计算机类型
  • -n:显示主机名称
  • -r:显示操作系统的发行编号
  • -s:显示操作系统的名称
  • -v:显示操作系统的系统时间



cat

读取文件的内容

cat [选项] 目标文件
  • -n:显示行号

如下例:

cat -n test.go

在这里插入图片描述

命令常用场景

  • cat 目标文件1 > 目标文件2
    输入重定向,将显示结果输出重定向到另一个文件

如下例:将test.go的内容覆盖掉a.txt里的内容

cat test.go > a.txt

在这里插入图片描述


  • cat > 新文件
    新建文件

如下例:在当前目录下新建一个叫a.txt的文件

cat > a.txt

在这里插入图片描述


  • cat 始文件 >> 目标文件
    向文件中追加内容, 会将第一个文件中的内容追加到第二个文件的末尾

如下例:将test.go的内容追加到a.txt的末尾

cat test.go >> a.txt

在这里插入图片描述



  • cat /dev/null > 目标文件
    清空目标文件的内容,/dev/null 在类 Unix 系统中,/dev/null 称“空设备”,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个 EOF

如下例:清空test.go里的内容

cat /dev/null > test.go 

在这里插入图片描述



grep

指定特定搜索条件来搜索文件及其内容以获取有用的信息(grep)

grep [选项] "查询条件" 目标文件
  • -i:查找内容忽略大小写
  • -h:查询多文件时不显示文件名
  • -l:查询多文件时只输出包含匹配字符的文件名
  • -n:显示匹配行及行号
  • -c:统计匹配文本的次数
  • -v:显示不包含匹配文本的所有行
  • -r:递归查找子目录,查找当前目录极其子目录下面包含匹配字符的文件
  • -A:很多时候,我们并非关心匹配行而是关心匹配行的上下文,显示匹配文本的后n行(记忆为After)
  • -B:很多时候,我们并非关心匹配行而是关心匹配行的上下文,显示匹配文本的前n行(记忆为Before)
  • -C:很多时候,我们并非关心匹配行而是关心匹配行的上下文,显示匹配文本的前n行及后n行(记忆为Center)
  • --color=auto:可以将找到的关键词部分加上颜色的显示

如下例:显示test.go文件中包含 “=” 的行

grep -i "=" test.go

在这里插入图片描述
在这里插入图片描述

命令常用场景

  • ls -l | grep -i ""
    如果要搜索包含特定关键字的文件名,可以通过grep命令过滤文件列表

如下例:查找当前目录下包含"go"的文件或文件夹

ls -l | grep -i go

在这里插入图片描述


  • ps aux | grep ""
    结合ps查找进程

如下例:查找redis相关进程

ps aux | grep redis

在这里插入图片描述


find

快速查找文件或目录

find path [选项] ""
  • -empty:查找文件是空文件或者空目录
  • -name:查找匹配名称的文件
  • -size:根据文件大小查找文件
  • -type:根据文件类型文件,d: 目录、f: 普通文件、l: 软链接、s: socket
  • -ctime:查找过去n天内被修改过的文件
  • -ipath:根据路径名称查找符合的文件

如下例:在根目录下查找大小大于50M且最近20天修改过的文件

find / -size +50M -ctime -20

在这里插入图片描述


locate

用于查找符合条件的文件

locate [选项] 文件
  • -d:配置locate指令使用的数据库。locate指令预设的数据库位于/var/lib/slocate目录里,文档名为slocate.db,可使用 这个参数另行指定

如下例:查找main.go文件的所在路径

locate main.go

在这里插入图片描述


which

会在环境变量$PATH设置的目录里查找符合条件的文件

which 文件

如下例:想要查找redis相关的文件,但是通过环境变量却没有找到

which reids

在这里插入图片描述


whereis

该指令只能用于在特定目录中查找二进制文件、源代码文件和man手册页

whereis [选项] 二进制文件
  • -b:只查找二进制文件
  • -B:只在设置的目录下查找二进制文件
  • -f:不显示文件名前的路径名称
  • -m:只查找说明文件
  • -M:只在设置的目录下查找说明文件
  • -s:只查找原始代码文件
  • -S:只在设置的目录下查找原始代码文件
  • -u:查找不包含指定类型的文件



scp

是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令,用于 Linux 之间复制文件和目录

scp [选项] 源文件 目标文件 
  • -B: 使用批处理模式(传输过程中不询问传输口令或短语)
  • -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
  • -p:保留原文件的修改时间,访问时间和访问权限
  • -q: 不显示传输进度条
  • -r: 递归复制整个目录,递归是指包含所有的子文件和子目录
  • -v:详细方式显示输出,显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题
  • -c: 以cipher将数据传输进行加密,这个选项将直接传递给ssh
  • -F: 指定一个替代的ssh配置文件,此参数直接传递给ssh
  • -i: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh
  • -l: 限定用户所能使用的带宽,以Kbit/s为单位
  • -P:指定数据传输用到的端口号

如下例:从本地将某个目录发送(上传)到远程,如果远程服务器防火墙有为scp命令设置了指定的端口,就要使用端口号,指定了用远程用户名root登录,将整个文件夹发送到远程的/usr/local/code/ ,命令执行后需要再输入密码

scp -P 8592 -r /home/workspace/src/ [email protected]:/usr/local/code/ 

如下例:将远程的某个文件下载到本地,将远程的/usr/local/code的main.go文件下载到本地的/home/workspace/src/下,命令执行后需要再输入用户名和密码

scp 192.168.110.1:/usr/local/code/main.go /home/workspace/src/  



du

显示指定的目录或文件所占用的磁盘空间大小

du [选项] 文件或目录
  • -a:显示目录中个别文件的大小
  • -c:除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
  • -h:提高信息的可读性
  • -s:仅显示总计
  • -S:显示个别目录的大小时,并不含其子目录的大小

如下例:用可读的方式查看hello目录的所占大小

du -hc hello

在这里插入图片描述



stat

显示文件的状态信息和属性

stat [选项] 文件或目录
  • -f:显示文件系统的信息

如下例:查看hello目录的状态信息和属性

stat hello

在这里插入图片描述



telnet

登入远程主机

telnet IP地址



kill

用于删除执行中的程序或工作

kill 进程编号
  • -KILL:强制杀死进程

如下例:

kill -KILL 123456



ps

用于显示当前进程的状态

  • -A:列出所有的进程
  • -au:显示较详细的资讯
  • -aux:显示所有包含其他使用者的进程

如下例:显示root进程用户信息

ps -u root

在这里插入图片描述

如下例:显示所有命令,连带命令行

ps -ef

在这里插入图片描述



shutdown

用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序

shutdown [选项] time [message]
  • -t:设定在几秒钟之后进行关机程序
  • -r:关机后重新开机
  • -c:取消目前已经进行中的关机动作

如下例:立即关机

shutdown -h now

如下例:指定5分钟后关机

shutdown +5 "System will shutdown after 5 minutes" //5分钟后关机并显示警告信息



export

用于设置或显示环境变量,可新增,修改或删除环境变量,供后续执行的程序使用,export 的效力仅限于该次登陆操作

export [选项] [变量名称]=[变量设置值]

如下例:列出当前的环境变量值

export -p

在这里插入图片描述



tar

用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件

  • -c:建立新的备份文件
  • -t:列出备份文件的内容
  • -v:显示指令执行过程
  • -z:通过gzip指令处理备份文件
  • -f:指定备份文件

如下例:解压文件

tar -xzvf abc.tar.gz 



区别

  • grepfind的区别

find通过文件属性查找文件

grep通过内容查找相关文件行



  • locatefind的区别

find是去硬盘找

locate只在/var/lib/slocate资料库中找,locate的速度比find快,它并不是真的查找,而是查数据库,一般文件数据库在/var/lib/slocate/slocate.db中,所以locate的查找并不是实时的,而是以数据库的更新为准



  • whichwhereis的区别

which是用来查找系统$PATH目录下的执行文件

whereis是用来查找二进制(命令)、源文件、man文件,是通过文件索引数据库而非$PATH来查找的,所以查找的面比which要广



参考

https://mp.weixin.qq.com/s/uA_ClNmyu6HPOm8VBCrytg
https://blog.csdn.net/Hello_Hwc/article/details/40017833
https://www.runoob.com/linux/linux-command-manual.html

发布了22 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42403866/article/details/104336425