linux操作学习(一)

常用linux命令

man man 查看man的帮助信息

image-20220319095025568

man命令中常用按键以及作用

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

man命令中帮助信息的结构以及意义

结构名称 代表意义
NAME 命令的名称
SYNOPSIS 参数的大致使用方法
DESCRIPTION 介绍说明
EXAMPLES 演示(附带简单说明)
OVERVIEW 概述
DEFAULTS 默认的功能
OPTIONS 具体的可用选项(带介绍)
ENVIRONMENT 环境变量
FILES 用到的文件
SEE ALSO 相关的资料
HISTORY 维护历史与联系方式

Tab键

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

re<Tab键><Tab键>
read readlink realpath

ctrl+c

当同时按下键盘上的Ctrl和字母c的时候,意味着终止当前进程的运行。假如执行了一个错误命令,或者是执行某个命令后迟迟无法结束,这时就可以冷静地按下Ctrl+c组合键,命令行终端的控制权会立刻回到我们手中。

Ctrl+d

当同时按下键盘上的Ctrl和字母d的时候,表示键盘输入结束。

Ctrl+l

当同时按下键盘上的Ctrl和字母l的时候,会清空当前终端中已有的内容(相当于清屏操作)

常用系统工作命令

echo命令

echo命令用于在终端设备上输出字符串或变量提取后的值,语法格式为

echo [字符串] [$变量]

image-20220319100544685

date命令

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键)

image-20220319100831310

将系统时间设置为2022年3月19日10点09分的date命令如下

image-20220319101018971

date命令中的参数%j可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的早晚,即数字越大,越靠近当前时间。该参数的使用方式以及显示结果如下所示

image-20220319101116145

timedatectl命令

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

timedatectl [参数]

timedatectl命令中的参数以及作用

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

查看系统时间与时区的方法如下

image-20220319101351367

手动设置为上海时区

image-20220319101553616

reboot命令

reboot命令用于重启系统,输入改命令回车之后就可执行,需要使用root身份来操作

image-20220319101717518

poweroff命令

poweroff命令用于关闭系统,输入该命令之后按回车即可执行

image-20220319101822622

wget

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

wget [参数] 网址

借助于wget命令,可以无须打开浏览器,直接在命令行界面中就能下载文件

wget命令中的参数以及作用

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

ps命令

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

ps [参数]

ps命令中的参数以及作用

参数 作用
-a 显示所有进程(包括其他用户的进程)
-u 用户以及其他详细信息
-x 显示没有控制终端的进程

Linux系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在Linux系统中有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示

R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。
D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
T(停止):进程收到停止信号后停止运行。

进程状态

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
进程的所有者 进程ID号 运算器占用率 内存占用率 虚拟内存使用量(单位是KB) 占用的固定内存量(单位是KB) 所在终端 进程状态 被启动的时间 实际使用CPU的时间 命令名称与参数
root 1 0.0 0.5 244740 10636 ? Ss 07:54 0:02 /usr/lib/systemd/ systemd –switched-root –system –deserialize 18
root 2 0.0 0.0 0 0 ? S 07:54 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 07:54 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 07:54 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< 07:54 0:00 [kworker/0:0H-kbl
root 6 0.0 0.0 0 0 ? I< 07:54 0:00 [mm_percpu_wq]
root 7 0.0 0.0 0 0 ? S 07:54 0:00 [ksoftirqd/0]
root 8 0.0 0.0 0 0 ? I 07:54 0:00 [rcu_sched]
root 9 0.0 0.0 0 0 ? S 07:54 0:00 [migration/0]

pstree命令

pstree命令用于以树状图的形式展示进程之间的关系,英文全称为process tree 输入改命令之后按回车执行即可

top命令

top命令用于动态监控进程活动以及系统负载等信息

image-20220319102745696

第1行:系统时间、运行时间、登录终端数、系统负载(3个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“99.9 id”意味着有99.9%的CPU处理器资源处于空闲。
第4行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量。

nice命令

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

nice 优先级数字 服务名称

在top命令输出的结果中,PR和NI值代表的是进程的优先级,数字越低(取值范围是-20~19),优先级越高。在日常的生产工作中,可以将一些不重要进程的优先级调低,让紧迫的服务更多地利用CPU和内存资源,以达到合理分配系统资源的目的。例如将bash服务的优先级调整到最高

image-20220319103034935

pidof命令

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

pidof [参数] 服务名称

每个进程的进程号码值(PID)是唯一的,可以用于区分不同的进程。例如,执行如下命令来查询本机上sshd服务程序的PID:

image-20220319103204966

killall命令

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

killall [参数] 服务名称

通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果用kill命令逐个去结束这些进程会比较麻烦,此时可以使用killall命令来批量结束某个服务程序带有的全部进程。下面以httpd服务程序为例,来结束其全部进程

image-20220319103653129

如果在系统终端中执行一个命令后想立即停止它,可以同时按下Ctrl + C组合键(生产环境中比较常用的一个组合键),这样将立即终止该命令的进程。或者,如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加一个&符号,这样命令将进入系统后台来执行

系统状态检测命令

ifconfig命令

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

ifconfig [参数][网络设备]

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

image-20220319104134733

uname命令

uname命令用于查看西永内核版本与系统架构等信息,英文全称为 Unix name 语法

uname [-a]	

在使用uname命令时,一般要固定搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、压制时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息

image-20220319104339578

uptime命令

uptime命令用于查看系统的负载信息

image-20220319104551428

free命令

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

free [-h]

image-20220319104854896

who命令

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

这3个简单的字母可以快速显示出所有正在登录本机的用户名称以及他们正在开启的终端信息;如果有远程用户,还会显示出来访者的IP地址

image-20220319105010293

last命令

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

image-20220319105112298

ping命令

ping命令用于测试主机之间的网络连通性

ping [参数] 主机地址

ping命令中的参数以及作用

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

image-20220319105305254

tracepath命令

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

tracepath [参数] 域名

netstat命令

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

netstat [参数]

netstat命令中的参数以及作用

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

image-20220319114434756

显示网卡列表

image-20220319114526984

history命令

history命令用于显示执行过的命令的历史

history [-c]

image-20220319114648703

历史命令会被保存到用户家目录中的.bash_history文件中。Linux系统中以点(.)开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用cat命令查看其文件内容:

image-20220319114733402

要清空当前在主机上执行的linux命令的历史记录

image-20220319114846042

sosreport命令

sosreport命令用于收集系统配置及架构信息并输出诊断文档

当Linux系统出现故障需要联系技术支持人员时,大多数时候都要先使用这个命令来简单收集系统的运行状态和服务配置信息,以便让技术支持人员能够远程解决一些小问题,抑或让他们能提前了解某些复杂问题。在下面的输出信息中,加粗的部分是收集好的资料压缩文件以及校验码

查找定位文件的命令

pwd命令

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

image-20220319115426221

cd命令

cd命令用于切换当前的工作路径,英文为 change directoey 语法格式为

cd [参数] [目录]

这个命令应该是最常用的一个命令了,可以使用 cd - 命令返回上一次所处的目录,使用cd .. 命令进入上级目录,以及使用 cd ~命令切换到当前用户的家目录亦或使用 cd ~username 命令切换到其他用户的家目录

image-20220319115836982

ls命令

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

ls [参数] [文件名称]

使用ls -a 参数能够看到全部的文件,使用 ls -l参数可以查看文件的属性,大小等详细信息.将这两个参数进行整合之后再次执行ls命令即可查看当前目录中的所有文件并输出这些文件的属性信息

image-20220319120140552

如果想要查看目录属性信息,需要额外添加一个-d参数

image-20220319120242976

tree命令

tree命令用于以树状图的形式列出目录内容以及结构,输入该命令之后按回车可以执行

虽然ls命令可以很便捷的查看目录内有哪些文件,但是无法直观的获取到目录内文件的层次结构

find命令

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 …… {}; 后面可跟用于进一步处理搜索结果的命令(下文会有演示)

这里说明一下 -exec 参数的作用,这个参数用于把find命令搜索到的结果交由紧随其后的命令做进一步处理.他类似于管道符

linux系统中的配置文件都会保存到/etc目录 如果想要获取改目录中所有以host开头的文件列表

image-20220319120912380

如果要在整个系统中搜索权限中包括suid权限的所有文件,只需要使用-4000

image-20220319121024441

locate命令

locate命令用于按照命令快速搜索文件所对应的位置,语法格式为 locate文件名称

使用find命令进行全麻搜索虽然更准确,但是效率有点低.如果是仅仅想找一些常见的而且又知道大概名称的文件,不如试试locate命令.在使用locate命令时,先使用updatedb命令生成一个索引库文件,这个库文件的名称是/var/lib/mlocate/mlocate.db,后续在使用locate命令搜索文件时就是在该库中进行查找操作,速度会快很多

第一次使用locate命令之前,记得先执行updatedb命令来生成索引数据库在进行查找

whereis命令

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

whereis 命令名称

image-20220319121816516

文本文件编辑命令

cat命令

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

cat [参数] 文件名称

linux系统中有多个用于查看文本内容的命令,每个命令都有自己的特点

如果想要在查看内容的同时显示行号的话,在cat命令后面加一个-n参数

more命令

more命令用于查看纯文本文件

more [参数] 文件名称

head命令

head命令用于查看纯文本文件的前n行,语法

head [参数] 文件名称

tail命令

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

tail [参数] 文件名称

我们还可能遇到另一种情况,比如要查看文本内容的最后十行,这个时候就需要用到tail命令的操作方法与head命令相似

tail命令还能够持续刷新一个文件的内容,当想要实时查看最新的日志文件的时候,这特别有用,此时的命令格式为

tail -f 文件名称

tr命令

tr命令用于替换文本内容中的字符,英文全称为 transform 语法

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

在很多时候,我们想要快速地替换文本中的一些词汇,又或者想把整个文本内容都进行替换。如果进行手工替换,难免工作量太大,尤其是需要处理大批量的内容时,进行手工替换更是不现实。这时,就可以先使用cat命令读取待处理的文本,然后通过管道符把这些文本内容传递给tr命令进行替换操作即可。例如,把某个文本内容中的英文全部替换为大写

cat anaconda-ks.cfg | tr [a-z] [A-Z]

wc命令

wc命令用于统计指定文本文件的行数 字数或字节数 word counts 语法

wc [参数] 文件名称

image-20220321121628917

stat命令

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

stat [文件名称]

文件有一个修改时间,Access Time 内容最后一次被访问的时间,Modigy Time 内容最后一次被修改的时间,简称为Mtime,以及Change Time 文件属性最后一次被修改时间

image-20220321122012402

grep命令

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

grep [参数] 文件名称

grep命令时用途最广泛的文本搜索匹配工具,grep最常用的两个参数

-n 	用来显示搜索到的信息的行号
-v 参数用于反选信息

grep命令中的参数及其作用

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

image-20220321122415687

cut命令

cut命令用于按列提取文本内容,语法格式为

cut [参数] 文件名称

image-20220321122550279

diff命令

diff命令用于比较多个文件之间的内容的差异,英文是 different 语法

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

使用diff命令时,不经可以使用 –brief 参数来确定两个文件是否相同,还可以使用 -c 参数来详细比较出多个文件的差异之处

image-20220321122852823

uniq命令

uniq命令用于去除文本中连续的重复行,英文 unique 语法

uniq [参数] 文件名称

image-20220321123022170

sort命令

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

sort [参数] 文件名称

sort命令中的参数及其作用

参数 作用
-f 忽略大小写
-b 忽略缩进与空格
-n 以数值型排序
-r 反向排序
-u 去除重复行
-t 指定间隔符
-k 设置字段范围

文件目录管理命令

touch命令

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

touch [参数] 文件名称

在创建空白的文本文件方面,这个touch命令相当简洁

touch命令中的参数及其作用

参数 作用
-a 仅修改“读取时间”(atime)
-m 仅修改“修改时间”(mtime)
-d 同时修改atime与mtime

image-20220321123429462

mkdir 命令

mkdir命令用于创建空白的目录, 英文 make directory 语法

mkdir [参数] 目录名称

除了能创建单个空白目录,mkdir命令还可以结合-p参数来递归创建出具有嵌套层叠关系的文件目录

image-20220321123549266

cp命令

cp命令用于复制文件或目录,英文copy,语法

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

复制的操作有三种情况

  • 如果目标文件是目录,则会把源文件复制到该目录中
  • 如果目标文件也是普通文件,则会询问是否要覆盖他
  • 如果目标文件不存在,则执行正常的复制操作

要记住复制目录时要加上-r参数

cp命令中的参数及其作用

参数 作用
-p 保留原始文件的属性
-d 若对象为“链接文件”,则保留该“链接文件”的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p、d、r为上述参数)

image-20220321124038914

mv命令

mv命令用于剪切或者重命名文件,英文全称为 move 语法

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

剪切操作不同于复制操作,因为它默认会把源文件删除,只保留剪切后的文件.如果在同一个目录中将某个文件剪切后还粘贴到当前的目录下面,其实就是对该文件的重命名操作

image-20220321124355135

rm命令

rm命令用于删除文件或者目录,英文全称为 remove 语法

rm [参数] 文件 名称

linux系统中删除文件是,系统会默认向您询问是否要执行删除操作,如果不想总是看见这种反复的确认信息,可以在rm命令后跟上 -f 参数来强制删除,另外想要删除一个目录,需要在rm命令后面加上一个-r参数才可以,否则删除不掉

rm命令中的参数及其作用

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

image-20220321124800674

dd命令

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

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

dd命令中的参数及其作用

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

file命令

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

file 文件名称

在linux中,由于文本,目录,设备等所有这些一切都有统称为文件,但是他们不像win系统哪有带有后缀,因此难以通过文件名一眼看出具体的文件类型.这个时候就需要file命令来查看文件类型了

image-20220321125355500

在win系统中打开文件时,一般都是通过用户双击鼠标来完成的,系统会自动判断用户双击的文件是什么类型,因此需要有后缀进行区别,而linux系统则是根据用户执行的命令来调用文件,例如执行cat命令查看文本,执行bash命令执行脚本等,所以也就不需要强制让用户给文件设置后缀了

tar命令

tar命令用于对文件进行打包压缩或者解压语法

tar 参数 文件名称

在网络上,人们越来越倾向于传输压缩格式的文件,原因是压缩文件的体积小,在网速相同的情况下,体积越小则传输的时间越短.在linux系统只不过,主要使用.tar .tar.gz 或者 .tar.bz2格式,这些格式大部分都是用tar命令生成的

tar命令中的参数及其作用

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

首先 -c 参数用于创建压缩文件, -x 参数用于解压文件 因此这两个参数不能同时使用, 其次, -z 参数指定使用 gzip 的格式来压缩或者解压文件 -j 参数指定使用bzip2格式来压缩或者解压问价.用户使用时则是根据文件的后缀来决定使用那种格式的参数来进行解压.在执行某些压缩或者解压缩操作时,可能需要花费数个小时,如果屏幕一直没有输出,您不好判断打包的进度情况,因此可以使用 -v 参数向用户不断显示压缩或者解压缩的过程 -C 参数用于指定要解压到那个指定的目录 -f 参数很重要,他必须放在参数的最后一位,代表要压缩或者解压缩的软件包的名称

压缩	tar -czvf 压缩包名称.tar.gz 要打包的目录
解压 tar -xzvf 压缩包名称.tar.gz

image-20220321130716412

image-20220321131538289