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


目录

  • free
  • df
  • top
  • wc
  • tail
  • uname
  • cat
  • grep
  • find
  • locate
  • which
  • whereis
  • scp
  • du
  • stat
  • telnet
  • kill
  • ps
  • shutdown
  • export
  • tar
  • 区别
  • 参考

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

  • -h:以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值
  • -s:周期性的查询内存使用信息,持续观察内存使用状况
  • -t:显示内存总和列
如下例:以合适的单位显示内存使用情况,每5秒观察一次内存
free -th -s 5

程序员必须耳熟能详的Linux命令
文章图片




df 查看磁盘使用情况
df [选项] [文件]

  • -h:使用人类可读的格式,使输出容易阅读和理解,从而使显示可读的
如下例:可友好的可读格式查看系统磁盘的使用状况
df -h

第一列Filesystem是指定文件系统的名称,最后一栏Mounted on是"安装在"指定的文件系统的挂载点
程序员必须耳熟能详的Linux命令
文章图片




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

程序员必须耳熟能详的Linux命令
文章图片




tail 读取文件并输出文件的最后部分,并且不断刷新
tail [选项] 目标文件

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



uname 查看操作系统的相关信息
uname [选项]

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



cat 读取文件的内容
cat [选项] 目标文件

  • -n:显示行号
如下例:
cat -n test.go

程序员必须耳熟能详的Linux命令
文章图片

命令常用场景
  • cat 目标文件1 > 目标文件2
    输入重定向,将显示结果输出重定向到另一个文件
如下例:将test.go的内容覆盖掉a.txt里的内容
cat test.go > a.txt

程序员必须耳熟能详的Linux命令
文章图片




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

程序员必须耳熟能详的Linux命令
文章图片




  • cat 始文件 >> 目标文件
    向文件中追加内容, 会将第一个文件中的内容追加到第二个文件的末尾
如下例:将test.go的内容追加到a.txt的末尾
cat test.go >> a.txt

程序员必须耳熟能详的Linux命令
文章图片




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

程序员必须耳熟能详的Linux命令
文章图片




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

程序员必须耳熟能详的Linux命令
文章图片

程序员必须耳熟能详的Linux命令
文章图片

命令常用场景
  • ls -l | grep -i ""
    如果要搜索包含特定关键字的文件名,可以通过grep命令过滤文件列表
如下例:查找当前目录下包含"go"的文件或文件夹
ls -l | grep -i go

程序员必须耳熟能详的Linux命令
文章图片




  • ps aux | grep ""
    结合ps查找进程
如下例:查找redis相关进程
ps aux | grep redis

程序员必须耳熟能详的Linux命令
文章图片




find 快速查找文件或目录
find path [选项] ""

  • -empty:查找文件是空文件或者空目录
  • -name:查找匹配名称的文件
  • -size:根据文件大小查找文件
  • -type:根据文件类型文件,d: 目录、f: 普通文件、l: 软链接、s: socket
  • -ctime:查找过去n天内被修改过的文件
  • -ipath:根据路径名称查找符合的文件
如下例:在根目录下查找大小大于50M且最近20天修改过的文件
find / -size +50M -ctime -20

程序员必须耳熟能详的Linux命令
文章图片




locate 用于查找符合条件的文件
locate [选项] 文件

  • -d:配置locate指令使用的数据库。locate指令预设的数据库位于/var/lib/slocate目录里,文档名为slocate.db,可使用 这个参数另行指定
如下例:查找main.go文件的所在路径
locate main.go

程序员必须耳熟能详的Linux命令
文章图片




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

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

程序员必须耳熟能详的Linux命令
文章图片




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/ root@192.168.110.1:/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

程序员必须耳熟能详的Linux命令
文章图片




stat 显示文件的状态信息和属性
stat [选项] 文件或目录

  • -f:显示文件系统的信息
如下例:查看hello目录的状态信息和属性
stat hello

程序员必须耳熟能详的Linux命令
文章图片




telnet 登入远程主机
telnet IP地址




kill 用于删除执行中的程序或工作
kill 进程编号

  • -KILL:强制杀死进程
如下例:
kill -KILL 123456




ps 用于显示当前进程的状态
  • -A:列出所有的进程
  • -au:显示较详细的资讯
  • -aux:显示所有包含其他使用者的进程
如下例:显示root进程用户信息
ps -u root

程序员必须耳熟能详的Linux命令
文章图片

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

程序员必须耳熟能详的Linux命令
文章图片




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

程序员必须耳熟能详的Linux命令
文章图片




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要广



参考 【程序员必须耳熟能详的Linux命令】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

    推荐阅读