跳到主要内容

常用命令

简介

一台完整的计算机是由运算器、控制器、存储器、输入/输出等多种硬件设备共同组成的,而能让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务,对系统的正常运行起着十分重要的作用。 Shell就是终端程序的统称,它充当了人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端程序,它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是 Bash(Bourne-Again SHell)解释器,这个 Bash 解释器主要有以下4项优势:

  • 通过上下方向键来调取执行过的 Linux 命令;
  • 命令或参数仅需输入前几位就可以用 Tab 键补全;
  • 具有强大的批处理脚本;
  • 具有实用的环境变量功能。

执行命令

命令名称    [命令参数]    [命令对象]

可选择的、可加或可不加的、非必需的参数使用中括号引起来,而命令所要求的、必须有的参数或对象值,则不带中括号。

  • 命令名称:就是语法中的“动词”,表达的是想要做的事情,例如创建用户、查看文件、重启系统等操作。

  • 命令参数:用于对命令进行调整,让“修改”过的命令能更好地贴合工作需求,达到事半功倍的效果。

Linux命令参数的长格式与短格式示例

长格式man --help
短格式man -h
  • 命令对象:一般指要处理的文件、目录、用户等资源名称,也就是命令执行后的“承受方”。例如创建一位叫小明的用户、查看一个叫工资表的文件、重启一个IP为192.168.10.10的系统等。

Linux系统中的命令、参数、对象都是严格区分大小写

帮助文档

man

使用 man 命令查看到的帮助内容信息

按键作用
空格键向下翻一页
PaGe down向下翻一页
PaGe up向上翻一页
home直接前往首页
end直接前往尾页
/从上至下搜索某个关键词,如“/linux”
?从下至上搜索某个关键词,如“?linux”
n定位到下一个搜索到的关键词
N定位到上一个搜索到的关键词
q退出帮助文档

示例

# 查看 man 的帮助文件
man man

# 查看 ssh 的帮助文件
man sh

快捷键

Tab

实现对命令、参数或文件的内容补全。

按键作用
Tab键自动补全
Tab键 + Tab键匹配所有符合的命令

Ctrl+c

终止当前进程的运行,控制权会立刻回到命令行终端。

Ctrl+d

键盘输入结束。

Ctrl+l

清空当前终端中已有的内容(清屏操作)。

系统工作常用

echo

在终端设备上输出字符串或变量提取后的值,语法格式:

echo [字符串] [$变量]

示例:

echo HelloLinux
# 输出字符串
# HelloLinux

echo $SHELL
# 输出 变量
# /bin/bash

date

用于显示或设置系统的时间与日期,语法格式:

date [+指定的格式]

date 命令中的参数及其作用

参数作用
%S秒(00~59)
%M分钟(00~59)
%H小时(00~23)
%I小时(00~12)
%m月份(1~12)
%p显示出AM或PM
%a缩写的工作日名称(例如:Sun)
%A完整的工作日名称(例如:Sunday)
%b缩写的月份名称(例如:Jan)
%B完整的月份名称(例如:January)
%q季度(1~4)
%y简写年份(例如:20)
%Y完整年份(例如:2020)
%d本月中的第几天
%j今年中的第几天
%n换行符(相当于按下回车键)
%t跳格(相当于按下Tab键)

示例:

date
# Sat Sep 5 09:13:45 CST 2020

date "+%Y-%m-%d %H:%M:%S"
# 2020-09-05 09:14:35

date -s "20201101 8:30:00"
# Sun Nov 1 08:30:00 CST 2020

date "+%j"
# 306

timedatectl

用于设置系统的时间,英文全称为“time date control”,语法格式:

timedatectl [参数]

timedatectl 命令中的参数以及作用

参数作用
status显示状态信息
list-timezones列出已知时区
set-time设置系统时间
set-timezone设置生效时区

示例:

timedatectl status
# 查看系统时区
# Local time: Sun 2020-09-06 19:51:22 CST
# Universal time: Sun 2020-09-06 11:51:22 UTC
# RTC time: Sun 2020-09-06 19:51:21
# Time zone: Asia/Shanghai (CST, +0800)
#System clock synchronized: no
# NTP service: inactive
# RTC in local TZ: no

# 手动设置时区上海
timedatectl set-timezone Asia/Shanghai

# 手动修改系统日期
timedatectl set-time 2021-05-18

# 修改时间
timedatectl set-time 9:30

reboot

重启系统

poweroff

关闭系统

wget

wget 命令用于在终端命令行中下载网络文件,英文全称为“web get”,语法格式:

wget [参数] 网址

wget命令中的参数以及作用

参数作用
-b后台下载模式
-P下载到指定目录
-t最大尝试次数
-c断点续传
-p下载页面内所有资源,包括图片、视频等
-r递归下载

示例:

wget www.7wate.com

# Resolving www.7wate.com (www.7wate.com)... 182.118.11.21
# Connecting to www.7wate.com (www.7wate.com)|182.118.11.21|:80... connected.
# HTTP request sent, awaiting response... 200 OK

ps

ps 命令用于查看系统中的进程状态,英文全称为“processes”,语法格式:

ps [参数]

ps 命令中的参数以及作用

参数作用
-a显示所有进程(包括其他用户的进程)
-u用户以及其他详细信息
-x显示没有控制终端的进程
  • R(运行):进程正在运行或在运行队列中等待。

  • S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。

  • D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。

  • Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4() 系统函数后将进程释放。

  • T(停止):进程收到停止信号后停止运行。

除了上面5种常见的进程状态,还有可能是高优先级(<)、低优先级(N)、被锁进内存(L)、包含子进程(s)以及多线程(l)这5种补充形式。

示例

USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
进程的所有者进程ID号运算器占用率内存占用率虚拟内存使用量(单位是KB)占用的固定内存量(单位是KB)所在终端进程状态被启动的时间实际使用CPU的时间命令名称与参数

pstree

pstree 命令用于以树状图的形式展示进程之间的关系,英文全称为“process tree”。

top

top 命令用于动态地监视进程活动及系统负载等信息。

nice

nice命令用于调整进程的优先级,语法格式:

nice 优先级数字 服务名称

示例:

nice -n -20 bash

pidof

pidof 命令用于查询某个指定服务进程的 PID 号码值,语法格式:

pidof [参数] 服务名称

每个进程的进程号码值(PID)是唯一的,可以用于区分不同的进程。

pidof sshd
# 2156

kill

kill 命令用于终止某个指定 PID 值的服务进程,语法格式:

kill [参数] 进程的PID

示例:

kill 2156
kill -9 2156
# 参数-9,表示最高级别地强制杀死进程

killall

killall 命令用于终止某个指定名称的服务所对应的全部进程,语法格式:

killall [参数] 服务名称

示例:

pidof httpd
# 13581 13580 13579 13578 13577 13576
killall httpd
pidof httpd

系统状态检测

ifconfig

ifconfig 命令用于获取网卡配置与网络状态等信息,英文全称为“interface config”,语法格式:

ifconfig [参数] [网络设备]

使用 ifconfig 命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet 参数后面的 IP 地址、ether 参数后面的网卡物理地址(又称为MAC地址),以及RX、TX的接收数据包与发送数据包的个数及累计流量。

uname

uname 命令用于查看系统内核版本与系统架构等信息,英文全称为“unix name”,语法格式:

uname [-a]

示例:

uname -a
# Linux linuxprobe.com 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

# 查看系统版本
cat /etc/redhat-release
# Red Hat Enterprise Linux release 8.0 (Ootpa)

uptime

uptime 命令用于查看系统的负载信息,它可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况,负载值越低越好。输入该命令后按回车键执行即可。

示例:

uptime
# 22:49:55 up 10 min, 1 users, load average: 0.01, 0.19, 0.18

free

free命令用于显示当前系统中内存的使用量信息,语法格式:

free [-h]

执行 free -h 命令后的输出信息

内存总量已用量空闲量进程共享的内存量磁盘缓存的内存量缓存的内存量可用量
totalusedfreesharedbuffersbuff/cacheavailable
Mem:1.9Gi1.4Gi99Mi20Mi450Mi348Mi
Swap:2.0Gi80Mi1.9Gi

who

who 命令用于查看当前登入主机的用户终端信息,执行who命令的结果:

登陆的用户名终端设备登陆到系统的时间
roottty22020-07-24 06:26 (tty2)

last

last 命令用于调取主机的被访记录。

last
# root pts/1 192.168.10.1 Tue May 18 10:30 - 11:03 (00:32)
# root tty2 tty2 Fri Jul 24 06:26 gone - no logout
# reboot system boot 4.18.0-80.el8.x8 Fri Jul 24 05:59 still running
# root tty2 tty2 Tue Jul 21 05:19 - down (00:00)
# reboot system boot 4.18.0-80.el8.x8 Tue Jul 21 05:16 - 05:19 (00:02)

# wtmp begins Tue Jul 21 05:16:47 2020

ping

ping 命令用于测试主机之间的网络连通性,语法格式:

ping [参数] 主机地址

ping 命令中的参数以及作用

参数作用
-c总共发送次数
-l指定网卡名称
-i每次间隔时间(秒)
-W最长等待时间(秒)

tracepath

tracepath 命令用于显示数据包到达目的主机时途中经过的所有路由信息,语法格式:

tracepath [参数] 域名

示例:

tracepath www.7wate.com

netstat

netstat命令用于显示如网络连接、路由表、接口状态等的网络相关信息,英文全称为“network status”,语法格式为:

netstat [参数]

netstat 命令中的参数以及作用

参数作用
-a显示所有连接中的Socket
-p显示正在使用的Socket信息
-t显示TCP协议的连接状态
-u显示UDP协议的连接状态
-n使用IP地址,不使用域名
-l仅列出正在监听的服务状态
-i显示网卡列表信息
-r显示路由表信息

示例:

# 显示详细的网络状况
netstat -a

# 显示网卡列表
netstat -i

history

history命令用于显示执行过的最近 1000 条命令记录,语法格式为:

history [-c]

示例:

history

# 1 ifconfig
# 2 uname -a
# 3 cat /etc/redhat-release
# 4 uptime
# 5 free -h
# 6 who
# 7 last

!7
# 执行第七条命令

history -c
# 清空当前用户在本机上执行的 Linux 命令历史记录信息

sosreport

sosreport 命令用于收集系统配置及架构信息并输出诊断文档,输入该命令后按回车键执行即可。

当Linux系统出现故障需要联系技术支持人员时,大多数时候都要先使用这个命令来简单收集系统的运行状态和服务配置信息,以便让技术支持人员能够远程解决一些小问题,抑或让他们能提前了解某些复杂问题。

文件查找定位

pwd

pwd命令用于显示用户当前所处的工作目录,英文全称为“print working directory”。

cd

cd命令用于切换当前的工作路径,英文全称为“change directory”,语法格式:

cd [参数] [目录]

示例:

# 退回上一步目录
cd -

# 退回上级目录
cd ..

# 进入当前用户目录
cd ~

ls

ls命令用于显示目录中的文件信息,英文全称为“list”,语法格式:

ls [参数] [文件名称]

tree

tree 命令用于以树状图的形式列出目录内容及结构。

tree

find

find命令用于按照指定条件来查找文件所对应的位置,语法格式:

find [查找范围] 寻找条件

find命令中的参数以及作用

参数作用
-name匹配名称
-perm匹配权限(mode为完全匹配,-mode为包含即可)
-user匹配所有者
-group匹配所有组
-mtime -n +n匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n匹配访问文件的时间(-n指n天以内,+n指n天以前)
-ctime -n +n匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
-nouser匹配无所有者的文件
-nogroup匹配无所有组的文件
-newer f1 !f2匹配比文件f1新但比f2旧的文件
-type b/d/c/p/l/f匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-prune忽略某个目录
-exec …… {}\;后面可跟用于进一步处理搜索结果的命令(下文会有演示)

示例:

find /etc -name "host*" -print
# /etc/host.conf
# /etc/hosts
# /etc/hosts.allow
# /etc/hosts.deny
# /etc/avahi/hosts
# /etc/hostname

locate

locate 命令用于按照名称快速搜索文件所对应的位置,第一次使用 locate 命令之前,记得先执行 updatedb 命令来生成索引数据库,然后再进行查找。

语法格式:

locate 文件名称

示例:

locate whereis
# /usr/bin/whereis
# /usr/share/bash-completion/completions/whereis
# /usr/share/man/man1/whereis.1.gz

whereis

whereis 命令用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的位置,语法格式:

whereis 命令名称

示例:

whereis ls
# ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
whereis pwd
# pwd: /usr/bin/pwd /usr/share/man/man1/pwd.1.gz /usr/share/man/man1p/pwd.1p.gz

which

which 命令用于按照指定名称快速搜索二进制程序(命令)所对应的位置,语法格式:

which 命令名称

示例:

which locate
# /usr/bin/locate
which whereis
# /usr/bin/whereis

文件文本编辑

cat

cat命令用于查看纯文本文件(内容较少的),英文全称为“concatenate”,语法格式:

cat [参数] 文件名称

常用参数:

-n显示行数(空行也编号)
-s显示行数(多个空行算一个编号)
-b显示行数(空行不编号)
-E每行结束处显示$符号
-T将TAB字符显示为 ^I符号
-v使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
-e等价于”-vE”组合
-t等价于”-vT”组合
-A等价于 -vET组合
--help显示帮助信息
--version显示版本信息

more

more 命令用于查看纯文本文件(内容较多的),语法格式:

more [参数] 文件名称

常用参数:

-num指定每屏显示的行数
-lmore在通常情况下把 ^L 当作特殊字符, 遇到这个字符就会暂停,-l选项可以阻止这种特性
-f计算实际的行数,而非自动换行的行数
-p先清除屏幕再显示文本文件的剩余内容
-c与-p相似,不滚屏,先显示内容再清除旧内容
-s多个空行压缩成一行显示
-u禁止下划线
+/pattern在每个文档显示前搜寻该字(pattern),然后从该字串之后开始显示
+num从第 num 行开始显示

head命令以行为单位,取文件的内容,后面不接参数时默认打印前10行。

head [参数] [文件]

常用参数:

-n后面接数字,代表显示几行的意思
-c指定显示头部内容的字符数
-v总是显示文件名的头信息
-q不显示文件名的头信息

tail

tail 命令用于查看纯文本文件的后N行或持续刷新文件的最新内容,语法格式:

tail [参数] 文件名称

tr

tr 命令用于替换文本内容中的字符,英文全称为“transform”,支持正则匹配。语法格式:

tr [原始字符] [目标字符]

wc

wc 命令用于统计指定文本文件的行数、字数或字节数,英文全称为“word counts”,语法格式:

wc [参数] 文件名称

wc 命令中的参数以及作用

参数作用
-l只显示行数
-w只显示单词数
-c只显示字节数

stat

stat命令用于查看文件的具体存储细节和时间等信息,英文全称为“status”,语法格式:

stat 文件名称

常用参数:

-L支持符号链接
-f显示文件系统的信息
-t以简洁的方式输出
--help显示命令帮助信息
--version显示命令版本信息

grep

grep命令用于按行提取文本内容,语法格式:

grep [参数] 文件名称

参数及其作用

参数作用
-b将可执行文件(binary)当作文本文件(text)来搜索
-c仅显示找到的行数
-i忽略大小写
-n显示行号
-v反向选择——仅列出没有“关键词”的行。

cut

cut 令用于按“列”提取文本内容,语法格式:

cut [参数] 文件名称

常用参数:

-b以字节为单位进行分割 ,仅显示行中指定直接范围的内容
-c以字符为单位进行分割 , 仅显示行中指定范围的字符
-d自定义分隔符,默认为制表符”TAB”
-f显示指定字段的内容 , 与-d一起使用
-n取消分割多字节字符
--complement补足被选择的字节、字符或字段
--out-delimiter指定输出内容是的字段分割符

diff

diff 命令用于比较多个文件之间内容的差异,英文全称为“different”,语法格式:

diff [参数] 文件名称A 文件名称B

常用参数:

-adiff预设只会逐行比较文本文件
-b不检查空格字符的不同
-W在使用-y参数时,指定栏宽
-x不比较选项中所指定的文件或目录
-X您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件
-y以并列的方式显示文件的异同之处
--help查看帮助信息
--left-column在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容
--suppress-common-lines在使用-y参数时,仅显示不同之处

uniq

uniq命令用于去除文本中连续的重复行,英文全称为“unique”,语法格式:

uniq [参数] 文件名称

常用参数:

-c打印每行在文本中重复出现的次数
-d只显示有重复的纪录,每个重复纪录只出现一次
-u只显示没有重复的纪录

sort

sort命令用于对文本内容进行再排序,语法格式:

sort [参数] 文件名称

常用参数:

-b忽略每行前面开始出的空格字符
-c检查文件是否已经按照顺序排序
-d排序时,处理英文字母、数字及空格字符外,忽略其他的字符
-f排序时,将小写字母视为大写字母
-i排序时,除了040至176之间的ASCII字符外,忽略其他的字符
-m将几个排序号的文件进行合并
-M将前面3个字母依照月份的缩写进行排序
-n依照数值的大小排序
-o <输出文件>将排序后的结果存入制定的文件
-r以相反的顺序来排序
-t <分隔字符>指定排序时所用的栏位分隔字符
-k指定需要排序的栏位

文件目录管理

touch

touch 命令用于创建空白文件或设置文件的时间,语法格式:

touch [参数] 文件名称

常用参数:

-a改变档案的读取时间记录
-m改变档案的修改时间记录
-r使用参考档的时间记录,与 --file 的效果一样
-c不创建新文件
-d设定时间与日期,可以使用各种不同的格式
-t设定档案的时间记录,格式与 date 命令相同
--no-create不创建新文件
--help显示帮助信息
--version列出版本讯息

mkdir

mkdir 命令用于创建空白的目录,英文全称为“make directory”,语法格式:

mkdir [参数] 目录名称

常用参数:

-p递归创建多级目录
-m建立目录的同时设置目录的权限
-z设置安全上下文
-v显示目录的创建过程

cp

cp 命令用于复制文件或目录,英文全称为“copy”,语法格式:

cp [参数] 源文件名称 目标文件名称

常用参数:

-f若目标文件已存在,则会直接覆盖原文件
-i若目标文件已存在,则会询问是否覆盖
-p保留源文件或目录的所有属性
-r递归复制文件和目录
-d当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-l对源文件建立硬连接,而非复制文件
-s对源文件建立符号连接,而非复制文件
-b覆盖已存在的文件目标前将目标文件备份
-v详细显示cp命令执行的操作过程
-a等价于“dpr”选项

mv

mv 命令用于剪切或重命名文件,英文全称为“move”,语法格式:

mv [参数] 源文件名称 目标文件名称

rm

rm 命令用于删除文件或目录,英文全称为“remove”,语法格式:

rm [参数] 文件  名称

参数及其作用

参数作用
-f强制执行
-i删除前询问
-r删除目录
-v显示过程

dd

dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,语法格式:

dd if=参数值of=参数值count=参数值bs=参数值

参数及其作用

参数作用
if输入的文件名称
of输出的文件名称
bs设置每个“块”的大小
count设置要复制“块”的个数

示例

dd if=/dev/zero of=560_file count=1 bs=560M
# 1+0 records in
# 1+0 records out
# 587202560 bytes (587 MB, 560 MiB) copied, 1.28667 s, 456 MB/s

file

file 命令用于查看文件的类型,语法格式:

file 文件名称

tar

tar命令用于对文件进行打包压缩或解压,语法格式:

tar 参数 文件名称

参数及其作用

参数作用
-c创建压缩文件
-x解开压缩文件
-t查看压缩包内有哪些文件
-z用Gzip压缩或解压
-j用bzip2压缩或解压
-v显示压缩或解压的过程
-f目标文件名
-p保留原始的权限与属性
-P使用绝对路径来压缩