1
0
wiki/ops/Linux/常用命令.md

30 KiB
Raw Blame History

id title sidebar_position data
常用命令 常用命令 1 2022年3月4日

简介

一台完整的计算机是由运算器、控制器、存储器、输入/输出等多种硬件设备共同组成的而能让各种硬件设备各司其职且又能协同运行的东西就是系统内核。Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务,对系统的正常运行起着十分重要的作用。 Shell就是终端程序的统称它充当了人与内核硬件之间的翻译官用户把一些命令“告诉”终端程序它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是 BashBourne-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 0059
%M 分钟0059
%H 小时0023
%I 小时0012
%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种补充形式。

示例

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
进程的所有者 进程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 命令后的输出信息

内存总量 已用量 空闲量 进程共享的内存量 磁盘缓存的内存量 缓存的内存量 可用量
total used free shared buffers buff/cache available
Mem: 1.9Gi 1.4Gi 99Mi 20Mi 450Mi 348Mi
Swap: 2.0Gi 80Mi 1.9Gi

who

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

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

head

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

常用参数:

-a diff预设只会逐行比较文本文件
-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 使用绝对路径来压缩