[阶段3 企业开发基础] 9. Linux

提示:推荐韩顺平老师学习视频

文章目录

推荐

Linux快速工具教程
鸟哥的Linux私房菜
Linux命令搜索

1. Linux目录结构

Linux文件

Linux系统中一切皆文件

在这里插入图片描述

目录含义
/binBinary的缩写,用来存二进制可执行文件,并且比较特殊的是/bin存放的是所有一般用户都能使用的可执行文件,如:cat、chmod、mv、mkdir、cd等常用指令
/sbinSuper User的意思,存放一些只有root用户才有权限执行的可执行文件,如init,ip,mount等命令
/boot主要存放开机时用到的引导文件,如linux内核文件和开机菜单与开机所有需要的配置文件
/devdevice,任何设备都以文件的形式存放再这个目录中。例如硬盘、键盘、鼠标、光驱等各种设备文件。只要通过访问该目录的某个文件就相当于访问了对应的设备
/etc配置文件、启动脚本等(etc)包含所有程序所需的配置文件以及系统的配置文件,如用户的账号密码文件,各个服务的起始文件等。也包含了用于启动/停止单个程序的启动和关闭shell脚本。一般来说,该目录下的文件属性是可以让用户查阅,但只有root管理员有权利修改
/home系统默认的用户的家目录,每当新建一个用户系统都会在这个目录下创建以该用户名为名称的目录作为该用户的家目录。
/liblibrary,存放着系统开机时所需的函数库以及/bin和/sbin目录下的命令会调用的函数库
/lib64存放相对于/lib中支持64位格式的函数库
/media存放可移除的媒体设备、如光盘,DVD等
/mntmount,临时挂载的设备文件,临时安装目录,系统管理员可以挂载文件系统。时系统管理员临时安装文件的系统安装点。
/optoptional,可选的软件包,即第三方文件软件。我们可以将除了系统自带软件之外的其他软件安装到这个目录。
/proc特殊的动态目录,用以 维护系统的信息和状态,包括当前运行中进程(processes)信息。包含系统进程的相关信息,是一个虚拟的文件系统,包含有关正在运行的进程的信息,系统资源以文本信息形式存在。
/root系统管理员root的主目录
/run最近一次开机后所产生的各项信息,如当前的用户和正在运行中的守护进程等。
/srvservice,存放一些服务启动后所需的数据
/syssystem,与/proc类似也是虚拟文件系统,存放系统核心与硬件相关信息管理设备文件。不占用硬件容量。
/tmptemporary, 存放系统运行过程中使用的一些临时文件,可以被所有就用户访问,系统重启时会清空该目录。
/usr包含绝大部分所有用户(users)都能访问的应用程序和文件包含二进制文件,库文件。文档和二级程序的源代码。
/var经常变化的(variable)文件,诸如日志或数据库等代表变量文件。在这个目录下可以找到内容可能增长的文件

2. VI/VIM 编辑器

VI是Unix操作系统和类Unix操作系统中最通用的文本编辑器

VIM编辑器是从V1从发展出来的一个性能更强大的文本编辑器。可以主动的以文字颜色辨别语法的正确性,方便程序设计。VIM与VI编辑器完全兼容。

2.1 常用的三种模式

vim的界面分为一般模式(快速编辑、光标跳转)、插入模式(编辑文本)、指令模式(搜索、替换)

2.1.1 一般模式

vim打开一个文件直接进入一般模式(默认模式),该模式中可以使用**[上下左右]按键移动光标,可以使用[删除字符][删除整行]来处理文档内容,可以使用[复制粘贴]**处理数据。

语法功能描述
yy复制光标当前一行
y数字y复制一段(从第几行到第几行)
y (shift + 4)复制当前光标到结尾的字符串
p箭头移动到目的行粘贴
u撤销上一步
dd删除光标当前行
d数字d删除光标(含)后多少行
x剪切一个字母,相当于del
X剪切一个字母,相当于Backspace
w切换到下一个词
e快速到下一个词尾
d跳转到上一个词
yw复制一个词
dw删除一个词
shift+6移动到行头
shift+4移动到行尾
gg移动到页头
G /L移动到页尾
数字+shift+g移动到目标行

显示行号 :set nu

不显示行号 :set nonu

2.1.2 插入模式

按下i,I,o,O,a,A,r,R等任何字母之后进入编辑模式,一般来说按i即可。

在一般模式中可以进行删除、复制、粘贴等的动作,但是却无法编辑文件内容的!要 等到你按下**[i, I, o, O, a, A]**等任何一个字母之后才会进入编辑模式。

注意了!通常在Linux中,按下这些按键时,在画面的左下方会出现INSERTREPLACE的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下**[Esc]**这个按键即可退出编辑模式。

1)进入编辑模式

按钮功能
i当前光标前
a当前光标后
o当前光标行的下一行
I光标所在行最前
A光标所在行租后
O当前光标行的上一行

2)退出编辑模式

​ 按 [ESC] 键退出编辑弄湿,之后所在的模式为一般模式

2.1.3 指令模式

在一般模式当中,输入: / ?3个中的任何一个按钮,就可以将光标移动到最底下的一行

在这个模式当中,可以提供相关指令,完成读取、存盘、替换、离开vim、显示行号等动作都是在此模式中达成的

基本语法

命令功能
:w保存
:q 退出
:wq保存并退出
:q! 不保存强制退出
/要查找的词n查找下一个,N往上查找
:noh取消高亮显示
:set nu显示行号
:set nonu关闭显示行号
:s /old/new替换当前行匹配到第一个old为new
:s /lod/new/g替换当前行匹配到所有old为new
:%s/old/new替换文档中每一行匹配到的第一个old为new
:%s/old/new/g替换文档中的所有的old为new 比较常用

在这里插入图片描述

模式之间转换

在这里插入图片描述

在命令行模式下,

  • :wq表示保存退出
  • :q表示退出
  • :q!表示强制退出,不保存

[需求] 使用vim编写Hello.java程序

在终端输入i进入插入模式,编写完程序,按Esc退出插入模式,输入: +wq,保存并退出命令行模式,最终在终端输入ls显示目录下的文件。

在这里插入图片描述

2.2 快捷键使用练习

1.拷贝当前行 yy,拷贝当前行向下的5行 5yy,并粘贴p

一般模式下选取当前行,输入yy,然后输入p

在这里插入图片描述

2.删除当前行 dd,删除当前行向下的5行 5dd

3.在文件中查找某个单词 [命令行下/关键字, 回车查找,输入n就是查找下一个]

4.设置文件的行号[命令行下:set nu],取消文件的行号[命令行下:set nonu]

5.编辑/etc/profile文件,使用快捷键到该文档的最末行[G]和最首行[gg]

6.在一个文件中输入/hello,然后在一般模式下又撤销这个动作 u

7.编辑/etc/profile文件,并将光标移动到20行 shift+g

3. 关机&重启&登录&注销

3.1 关机&重启命令

命令说明
shutdown -h now立刻关机
shutdown -h 11min后关机
shutdown -r now现在重新启动计算机
halt关机
reboot现在重新启动计算机
sync把内存的数据同步到磁盘

注意细节

  • 不管重启系统还是关闭系统,首先运行sync命令,把内存中的数据写到磁盘中
  • 目前的shutdown/reboot/halt等命令均已经在关机前进行了sync

3.2 用户登录和注销

  • 登录时尽量少用root账号(系统管理员,权限最大)登录,避免操作失误
  • 普通用户登录,登录后使用su - 用户名命令切换成管理员省份
  • 在提示符下输入logout即可注销登录(用户状态切到root下使用logout从root状态切回用户状态)

注意细节

  • logout注销指令在图形运行级别无效
  • 在运行级别3下有效

4. 用户管理

Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以该账号的身份进入系统

4.1 添加用户

基本语法

useradd 用户名
  • 当创建用户成功后,会自动的创建和用户同名的家目录
  • 也可以通过useradd -d指定目录新的用户名,给新创建的用户指定家目录

[需求]

添加一个用户milan,默认用户的家目录在/home/milan

在这里插入图片描述

# 在/home下创建test目录 创建用户king
useradd -d /home/test king

4.2 指定/修改密码

基本语法

passwd 用户名

# 补充 显示当前用户所在的目录 pwd

[需求]milan设置密码

在这里插入图片描述

4.3 删除用户

基本语法

userdel 用户名

[需求]

1.删除用户milan,但是保留家目录;

userdel milan

2.删除用户以及用户主目录**[慎重!!]**

userdel -r cyan

4.4 查询用户信息指令

基本语法

id 用户名

[需求] 查询root信息

id root

4.5 切换用户

操作Linux这个,如果当前用户的权限不够,通过su - 指令,切换高权限用户

基本语法

su - 切换用户名

[需求] 创建一个用户jack,指定密码,然后切换到jack

su - root
useradd jack
passwd jack
su - jack

说明

  • 从高权限的用户切换到低权限的用户,不需要输入密码,反之需要
  • 当需要返回到原来用户时,使用exit/logout指令

4.6 查看当前用户/登录用户

基本语法

whomi/who am I

在这里插入图片描述

4.7 用户组

类似于角色,系统可以对有共性/权限的多个用户进行统一的管理

4.7.1 操作

新增组

groupadd 组名

删除组

groupdel 组名

增加用户时直接加上组

useradd -g 用户组 用户名

[需求] 增加一个用户yan,直接将他指定到wudang

groupadd wudang 
useradd -g wudang yan

修改用户的组

usermod -g 用户组 用户名

4.7.2 用户组相关文件

/etc/password 文件

用户(user)的配置文件,记录用户的各种信息

每行的含义:用户名:口令:用户识别号:组标识号:注释性描述:主目录:登录Shell

/etc/shadow文件

口令的配置文件

每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/group文件

组(group)的配置文件,记录Linux包含的组的信息

每行的含义:组名:口令:组标识号:组内用户列表

5. 常用基本命令

5.0 指定系统运行级别

1. linux运行级别

image-20220515153151877

Linux系统有7种运行级别(runlevel) 常用的级别3和5

  • 0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  • 1:单用户工作状态,root权限,用于系统维护,禁止远程登录
  • 2:多用户状态(没有NFS),不支持网络
  • 3:安全的多用户状态(有NFS),登录后进入控制台命令行模式
  • 4:系统未使用,保留
  • 5:X11控制台,登陆后进入图形GUI模式
  • 6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

2. CentOS7的运行级别简化为:

/etc/inittab文件中,进行了简化

multi-user.target 等价于原运行级别3(多用户有网,无图形界面)

graphical.target 等价于原运行级别5(多用户有网,有图形界面)

3. 查看当前运行级别:

systemctl get-default

vim /etc/inittab

4. 修改当前运行级别:

system set-default TARGET.target (这里的TARGET取 multi-user 或者graphical)

如何找回root密码

面试题:如何找回root密码

1.首先,启动系统,进入开机界面,在界面中按e进入编辑界面

在这里插入图片描述

2.进入编辑界面,使用键盘上的上下键把光标往下移动,找到以Linux16开头内容所在的行数,在行的最后面输入:init=/bin/sh

在这里插入图片描述

3.接着,输入完成后,直接按快捷键:Ctrl+X进入单用户模式

4.接着,在光标闪烁的位置中输入mount -o remount,rw /(注意:各单词间有空格),完成后按回车键(Enter)

在这里插入图片描述

5.在新的一行最后面输入:passwd,完成后按键盘的回车键(Enter),输入密码,然后再次确认密码即可,密码修改成功后,会显示passwd…的样式,说明密码修改成功

在这里插入图片描述

6.接着,在鼠标闪烁的位置中(最后一行)输入:touch / autorelabel*(注意:touch/后面有一个空格),完成后按键盘的回车键(Enter)

7.继续在光标闪烁的位置中,输入exec /sbin/init(注意:exec/后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码,完成后,系统自动重启,新的密码即可生效。

在这里插入图片描述

5.1 帮助指令

5.1.1 man 获取帮助信息

  1. 基本语法

    man [命令或配置文件] 获取帮助信息

    man -f cd
    cd (1)               - bash built-in commands, see bash(1)
    cd (n)               - Change working directory
    [root@lys ~]# man 1 cd # 1为上面的括号显示
    

    [在Linux下隐藏文件是以.开头]

  2. 显示说明

信息功能
NAME命令的名称和单行描述
SYNOPSIS怎样使用命令
DESCRIPTION命令功能的深入讨论
EXAMPLES怎样使用命令的例子
SEE ALSO相关主题(通常是手册页)

5.1.2 help 获取shell内置命令的帮助信息

​ 一部门基础功能的系统命令是直接内嵌在shell中,系统加载启动之后会随着shell一起加载,常驻系统内存中。这部门命令被称为“内置(built-in)命令”;相应的其他命令被称为“外部命令”

判断是否内置命令

type cd
cd is a shell builtin
  1. 基本语法

    help 命令 获得shell内置命令的帮助信息

  2. 案例实操

    • 查看cd命令的帮助信息 help cd

5.1.3 常用快捷键

常用快捷键功能
ctrl + c停止进程
ctrl + l清屏,等同于clear;彻底清屏是: reset
tab提示(更重要的是可以防止敲错)
上下键查找执行过的命令

5.2 文件目录类

5.2.1 pwd指令

基本语法

pwd

作用

显示当前工作目录的绝对路径

5.2.2 ls 指令

基本语法

ls [选项] [文件或目录]

作用

列出目录内容

选项功能
-a全部的文件,连同隐藏文档(开头为.的文件) 一起
-l长数据串列出,包含文件的属性与权限等等数据(常用)等价于“ll”
-lh文件大小比较好看

显示说明

每行列出的信息依次是:文件类型与权限 链接户 文件属性 文件大小用byte来标识 建立或最近修改的时间 名字

5.2.3 cd 指令

基本语法

cd [参数]

作用

切换到指定目录

参数功能
cd 绝对路径切换路径
cd 相对路径切换路径
cd ~ 或 cd回到自己的家目录
cd -回到上一次所在目录
cd …回到当前目录的上一级目录
cd -P跳转到实际物理路径,而非快捷方式路径

5.2.4 mkdir 指令

基本语法

mkdir [选项] 要创建的目录 # 默认创建一级目录

作用

创建目录

常用选项

-p 创建多级目录

# 创建目录
mkdir a 
mkdir /home/dog
# 一次创建多级
mkdir a a/b a/b/c
mkdir -p a/b/c

5.2.5 rmdir 指令

基本语法

rmdir [选项] 要删除的空目录

作用

指定删除空目录

  • rmdir删除的是空目录,如果目录下有内容是无法删除的
  • 如果需要删除非空目录,使用rm -rf 要删除的目录[谨慎!]
# 删除目录
rmdir a

# 删除多级目录
rmdir a/b/c

5.2.6 touch 指令

基本语法

touch 文件名称

作用

创建空文件

5.2.7 cp 指令

基本语法

cp [选项] source dest

作用

拷贝文件到指定目录

常用选项

-r 递归复制整个文件夹

细节

强制覆盖不提示的方法: \cp

\cp -r/home/bbb /opt

[需求]

1.将/home/hello.txt拷贝到 /home/bbb目录下

mkdir bbb
ls
cp hello.txt bbb/
cd bbb/
ls

2.递归复制整个文件夹,如将/home/bbb整个目录,拷贝到/opt

cp -r /home/bbb /opt

5.2.8 rm 指令

基本语法

rm [选项] 要删除的文件或目录

作用

移除文件或目录

选项功能
-r递归删除目录中所有内容
-f强制执行删除操作,而不提示,用于进行确认
-v显示指令的详细执行过程
# 删除文件
rm test.txt
# 递归删除
rm -r dir
# 强制删除
rm -f dir

5.2.9 mv 指令

基本语法

mv oldNameFile newNameFile 		# 重命名

mv /tmp/moveFile /targerFolder # 移动文件

作用

移动文件或目录或重命名

[需求]

1.将/home/cat.txt文件重命名为pig.txt

mv cat.txt pig.txt
ls

2.将/home/pig.txt 文件移动到/root目录下

mv pig.txt /root/
cd /root/
ls

3.移动整个目录,将/opt/bbb 移动搭到/home下

cd /home/
ls
cd /opt/
ls
mv bbb/ /home/

5.2.10 cat 指令

基本语法

cat [选项] 要查看的文件

cat -n 文件名 显示所有行的行号,包括空行

作用

查看文件内容

细节

  • cat只能浏览文件,不能修改文件,为了浏览方便,一般带上 管道命令 |more
  • cat -n/etc/profile | more进行交互

5.2.11 more 指令

文件内容分屏查看器

more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容,more指令中内置若干快捷键

基本语法

more 要查看的文件

作用

查看文件内容

操作功能说
空白键(space)代表向下翻一页
Enter代表向下翻一行
q立刻离开 more
ctrl + F向下滚动一屏
ctrl + B返回上一屏
=输出当前行的行号
:f输出文件名和当前行行号

5.2.12 less 指令

less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

基本语法

less 文件名

作用

分屏显示文件内容 (查看大文件)

操作功能说明
空白键向下翻动一页
pagedown向下翻动一页
pageup向上翻动一页
/字符串向下搜寻【字符串】的功能:n:向下查找 N:向上查找
?字符串向上搜寻【字符串】的功能:n 向上查找 N 向下查找
q离开less这个程序

5.2.13 echo 指令

基本语法

echo [选项] [输出内容]

作用

echo 输出内容到控制台

选项

-e: 支持反斜线控制的字符转换

控制字符作业
\输出\本身
\n换行符
\t制表符,也就是Tab键

5.2.14 head 指令

head用于显示文件的开头部门内容,默认情况下 head指令显示文件的前10行内容。

基本语法

head  文件名 			# 查看文件头10行内容

head -n 5 文件          # 查看文件头5行内容

作用

显示文件头部内容

5.2.15 tail 指令

用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容

基本语法

tail 文件 # 查看文件尾10行内容

tail -n 5 文件 # 查看文件尾5行内容,5可以是任意行数

tail -f 文件 # 实时追踪文档的所有更新

tail -f 文件

  • 按Ctrl + S 可以暂停监听
  • 按Ctrl + Q 可以继续监听

作用

输出文件尾部

[需求]

1.查看/etc/profile最后5行代码

tail -n /etc/profile

2.实时监控mydate.txt,看到文件有变化时,是否看到,实时的追加的hello world

touch mydate.txt
tail -f mydate.txt
echo 'hello world' > /home/mydate.txt

5.2.16 >输出重定向和 >> 追加

>输出重定向,>>追加

基本语法

  • ls -l > a.txt (功能描述:列表的内容写入文件 a.txt 中(覆盖写))
  • ls -al >> aa.txt (功能描述:列表的内容追加到文件 aa.txt 的末尾)
  • cat 文件 1 > 文件 2 (功能描述:将文件 1 的内容覆盖到文件 2)
  • echo “内容” >> 文件

[需求]

1.将/home目录下的文件列表写入到/home/info.txt中,覆盖写入

ls -l /home > /home/info.txt # [若info.txt不存在,则会创建文件]

2.将当前日历信息追加/home/mycal文件中

cal
cal >> /home/mycal
ls
cat mycal

5.2.17 ln 指令

软链接(link)也称为符号链接,类似于windows里的快捷方式,有自己的数据块,主要存放了连接其他文件的路径

基本语法

ln -s[原文件或目录][软链接名] # 给原文件创建一个软链接

[需求]

1.在/home目录下创建一个软链接myroot,链接到/root目录

ln -s /root /home/myroot

2.删除软链接myroot

rm /home/myroot

细节

当使用pwd指令查看目录,看到的是软链接所在目录

创建软连接

[root@lys logs]# ln -s web.log web
[root@lys logs]# ll
total 7988
-rw-r--r-- 1 root root  115498 May 13 11:04 gateway.log
lrwxrwxrwx 1 root root       7 May 16 00:36 web -> web.log # 软连接的前缀为l
-rw-r--r-- 1 root root 8048944 May 16 00:36 web.log

直接进入软连接对应的地址

cd -P 软连接 

删除软连接: rm -rf 软连接名,而不是rm -rf 软连接名/

!!! 如果使用rm -rf 软连接/ 删除,会把软连接对应的真实目录下内容删掉

硬连接 (相当于)

ln 文件名 链接名

5.2.18 history 指令

基本语法

# 查看历史命令
history
# 情况历史命令
history -c

作用

查看已经执行过历史命令

[需求]

1.显示所有的历史命令

history

2.显示最近使用过的10个命令

history 10

3.执行历史编号为5的指令

!5

5.3 时间日期类

基本语法

date [option] + [format]

date -s 日期时间 # 设置日期时间

date + "日期时间格式" # 指定显示时使用的日期

5.3.1 date显示当前时间

date # 显示当前时间
date + %Y # 显示当前年份
date + %m # 显示当前月份
date + %d # 显示当前哪天
date "+%Y-%m-%d %H:%m:%S" # 显示年月日时分秒
date +%s # 查看时间戳
date -d "-1 hours ago" # 一个小时后的时间

ntpdate -u ntp1.aliyun.com # 同步时间

5.3.2 date设置日期

基本语法

date -s 字符串时间

[需求]

设置系统当前时间

date -s "2022-06-19 20:52:22" # 设置系统当前时间

8.3.3 cal 指令

基本语法

cal [选项]  # 不加选项,显示本月日历

作用

查看日历

[需求]

1.查看3个月的时间

cal -3 

2.查看2022年日历

cal 2022 

3.查看本年度日历

cal 

5.4 搜索查找类

5.4.1 find 指令

find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端

基本语法

find [搜索范围] [选项]

作用

查找文件或目录

选项功能
-name 查询方式按照指定文件名查找模式查找文件
-user 用户名查找属于指定用户名所有文件
-size 文件大小按照指定文件大小查找文件,单位为 b-块 (512字节) c- 字节 w-字 2字节 k - 千字节 M -兆字节 G-吉字节
# 按名称查找
find -name nginx.conf

# 按路径加名称查找
find /root -name nginx.conf

# 按照后缀查找
find -name ".cfg"

# 按用户查找
find -user lys

# 按大小查找 +大于 -小于
find -size +1M
find -size +1M

[需求]

1.按文件名:根据名称查找/home目录下的hello.txt文件

find /home -name hello.txt

2.按拥有者:查找/opt目录下,用户名称为nobody的文件

find /opt -user nobody

3.查找整个Linux系统下大于200M的文件(+n大于 -n小于 n等于,单位有k,M,G)

find / -size +200M

5.4.2 locate

locate指令利用事先建立的系统中所有文件名称及路径的locate数据库事先快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。

基本语法

locate 搜索文件

作用

快速定位文件路径

细节

由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库

[需求]

使用locate指令快速定位hello.txt文件所在目录

uodatedb
locate hello.txt
# 查看指令所在位置
which ls
whereis locate

5.4.3 grep 指令

grep过滤查找,管道符,|,表示将前一个命令的处理结果输出传递给后面的命令处理

基本语法

grep 选项 查找内容 源文件
选项功能
-n显示匹配行及行号
-i忽略字母大小写

[需求]

hello.txt文件中,查找"yes"所在行并显示行号

cat /home/hello.txt | grep -n "yes" # 写法1
grep -n "yes" /home/hello.txt # 写法2

5.5 压缩和解压类

5.5.1 gzip/gunip 指令

基本语法

gzip 文件

gunzip 文件.gz (解压缩文件命令)

  • 只能压缩文件不能压缩目录
  • 不保留原来的文件
  • 同时多个文件会产生多个压缩包

作用

gzip用于压缩文件,gunzip用于解压文件

[需求]

1.gzip压缩,将/home下的hello.txt文件进行压缩

gzip /home/hello.txt

2.gunzip压缩,将/home下的hello.txt.gz文件进行解压缩

gunzip /home/hello.txt.gz

5.5.2 zip/unzip 指令

zip用于压缩文件,unzip用于解压,zip压缩命令在window/linux都通用,可以压缩目录且保留源文件

基本语法

zip  [选项] XXX.zip  # 压缩文件和目录命令

unzip [选项] XXX.zip # 解压缩文件
选项说明
zip -r递归压缩,即压缩目录
unzip -d指定解压后文件的存放目录

[需求]

1.将/home下的所有文件进行压缩成myhome.zip

zip -r myhome.zip /home/ # [将home目录及其包含的文件和子文件夹都压缩]  

2.将myhome.zip解压到/opt/tmp目录下

mkdir /opt/tmp
unzip -d /opt/tmp myhome.zip

5.5.3 tar 指令

tar指令是打包指令,最后打包后的文件是tar.gz文件

基本语法

tar [选项] XXX.tar.gz 打包的内容 # 打包目录,压缩后的文件格式 .tar.gz
选项功能
-c产生.tar打包文件
-v显示详细信息
-f执行压缩后的文件名
-z打包同时压缩
-x解压.tar文件
-C解压到指定目录

[需求]

1.压缩多个文件,将/home/pig.txt/home/cat.txt压缩成pc.tar.gz

touch pig.txt
touch cat.txt
ls
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt

2.将/home的文件夹压缩成myhome.tar.gz

tar -zcvf myhome.tar.gz /home/

3.将pc.tar.gz解压到当前目录。切换/opt/

tar -zxvf pc.tar.gz 

4.将myhome.tar.gz解压到/opt/tmp2目录下

mkdir /opt/tmp2
tar -zxvf /home/myhome.tar.gz -C /opt/tmp2

5.6 组管理和权限管理

Linux中每个用户必须属于一个组,不能独立于组外。在Linux中每个文件中有所有组、所在组、其他组的概念。

5.6.1 文件/目录所有者

一般为文件的创建者,谁创建了文件,自然称为该文件的所有者

查看文件的所有者

ls -ahl

修改文件所有者

chown 用户名 文件名

5.6.2 文件/目录所在组

当用户创建一个文件后,该文件所在的组就是用户所在的组

查看文件/目录所在组

ls -ahl

修改文件所在的组

chgrp 组名 文件名

[需求] 使用root用户创建文件orange.txt,看看当前文件属于哪个组,然后将这个文件所在组,修改到fruit

groupadd fruit
touch orange.txt
看看当前文件属于哪个组 root组
chgrp fruit orange.txt

5.6.3 其他组

除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组

5.6.4 改变用户所在组

在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组

改变用户所在组

usermod -g 新组名 用户名
# 用户需要有进入新目录的权限
usermod -d 目录名 用户名 改变该用户登录的初始目录

5.6.5 权限基本介绍

​ Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls -l显示一个文件的属性以及文件所属的用户和组

  1. 从左到有的10个字符标识

在这里插入图片描述

如果没有权限,就会出现减号[-]而已,从左至右用0-9这些数字赖标师

(1)0首位表示类型

​ 在Linux中第一个字符代表这个文件是目录、文件或链接文件

- 代表文件
d 代表目录
l 代表链接
c 代码字符设备文件,鼠标,键盘
b 代表块设备,硬盘

(2) 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。User

(3)第4-6位确定所属组(所有者的同组用户)拥有该文件的权限。Group

(4) 第7-9位确定其他用户拥有该文件的权限 Other

  1. rwx作用文件和目录的不同解释

    作用到文件

    r】: 代表可读(read) 可以读取,查看

    w】:代表可写(write) 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件

    x】:代表可执行(execute) 可以被系统执行

    作用到目录:

    r】: 代表可读(read) 可以读取,ls查看目录内容

    w】:代表可写(write) 可以修改,目录内创建+删除+重命名目录

    x】:代表可执行(execute) 可以进入该目录

文件基本属性介绍

image-20220517232953855

(1)如果查看到是文件:链接数指的是硬链接个数。

(2)如果查看的是文件夹:链接数指的是子文件夹个数。

5.6.6 chmod 指令

通过chmod指令,可以修改文件或者目录的权限

在这里插入图片描述

第一种方式 +、-、=变更权限

u:所有者 q:所有组 o:其他人 a:所有人
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+w 文件/目录名
chmod a-x 文件/目录名

[需求]

1.给abc文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限

chmod u=rwx,g=rx,o=rx abc

2.给abc文件的所有者去除执行的权限,增加组写的权限

chmod u-x,g+w abc

3.给abc文件的所有用户添加读的权限

chmod a+r abc

第二种方式 通过数字变更权限

r=4 w=2 x=1 rwx=4+2+1=1
chmod u=rwx,g=rx,o=x 文件目录名
# 等于
chmod 751 文件目录名 

[需求]

/home/abc.txt文件的权限修改成rwxr-xr-x,使用数字方式实现

chmod 755 /home/abc.txt

5.6.7 chown 指令

修改文件所有者

chown newowener 文件/目录  # 改变所有者
chown newowener:newgroup 文件/目录 # 改变所有者和所在组
选项说明
-R如果是目录,则使其下所有子文件或者目录递归生效

[需求]

1.请将/home/abc.txt文件的所有者修改成tom

chown tom /home/abc.txt

2.请将/home/test目录下所有的文件和目录的所有者都修改成tom

chown -R tom /home/test

5.6.8 chgrp 指令

修改文件/目录所在组

chgrp newgroup 文件/目录 # 改变所在组

[需求]

1.请将/home/abc.txt文件的所在组修改成shaolin

groupadd shaolin
chgrp shaolin /home/abc.txt 

2.请将/home/test目录下的所有的文件和目录的所在组修改成shaolin

chgrp -R shaolin /home/test

5.7 定时任务调度

5.7.1 crond 定时任务

crontab 进行定时任务的设置

概述

任务调度:系统在某个时间执行的特定命令或程序

任务调度分类:

1.系统工作 2.个别用户工作

基本语法

crontab [选项]
选项说明
-e编辑crontab定时任务
-l查询crontab定时任务
-r删除当前用户所有的crontab任务

快速入门

设置任务调度文件:/etc/crontab

设置个人任务调度。执行crontab -e命令

接着输入任务到调度文件

crontab -e
# 每一小时的每分钟执行 ls -l /etc/ > /tmp/to.txt
*/1 * * * * ls -l /etc/ > /tmp/to.txt
项目含义范围
第一个 “*”一小时当中的第几分钟0-59
第二个 “*”一天当中的第几小时0-23
第三个 “*”一个月当中的第几天1-31
第四个 “*”一年当中的地几个月1-12
第五个 “*”一周当中的星期几0-7(0和7代表周日)

特殊符号说明

特殊符号含义
*代表任何时间,比如第一个“*”就代表一小时中每分钟都执行一次的意思
代表不连续的时间。比如“0 8,12,16 * * *” 就代表在每天的8点0分,,12点0分,16点0分都执行一次命令
-代表连续的时间访问。比如“0 5 * * 1-6" 代表在周一到周六的凌晨5点0分执行命令
*/n代表每隔多久执行一次,比如”*/10 * * * *" 命令,代表每隔10分钟就执行一边命令

特定时间执行任务案例

时间含义
45 22 * * *每天22点45分执行命令
0 17 * * 1每周1的17点0分执行命令
0 5 1,15 * *每月1号 15号的凌晨5点0分执行命令
40 4 * * 1-5 命令每周一到周五 4点40分执行命令
*/10 4 * * *每天的凌晨4点,每隔10分钟执行一次命令
0 0 1,15 * 1 命令每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同事出现,因为他们定义的都是天。非常容易让管理员混乱

crond相关指令

conrtab -r # 终止任务调度
conrtab -l # 列出当前的任务调度
service crond restart # 重启任务调度

5.7.2 at 定时任务

基本介绍

1.at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行

2.默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业

3.at命令是一次性定时计划认为有,执行完一个任务后不再执行此任务

4.在使用at命令时,一定要保证atd进程的启动,可以使用相关指令来查看

ps -ef # 检测当前运行的进程
# 加上过滤操作
ps -ef | grep atd # 检测atd是否在运行
  • at命令格式
at [选项] [时间]
# Ctrl+D 结束at命令的输入

原理图

在这里插入图片描述

at命令选项

选项说明
-m当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-Iatq的别名
-datrm的别名
-v显示任务将被执行的时间
-c打印任务的内容到标准输出
-V显示版本信息
-q <队列>使用指定的队列
-f <文件>从指定文件读入任务而不是从标准输入读入
-t <时间参数>以时间参数的形式提交运行的任务

5.8 磁盘分区和挂载

原理介绍

  1. Linux无论有几个分区,给哪个目录使用,归根结底只有一个根目录,一个独立且唯一的文件结构,Linux每个分区都是用来组成整个文件系统的一部分。
  2. Linux采用“载入”的处理方法,它的整个文件系统中包含一整套的文件和目录,且将一个分区和一个目录联系起来

5.8.1 查看设备挂载情况

lsblk
# 查看详细的设备故障情况,显示文件系统信息
lsblk -f 

5.8.2 查看磁盘空间使用情况

基本语法

# 查询系统整体磁盘使用情况
df -h

5.8.3 查看目录占用的磁盘空间

基本语法

du -h /目录
选项功能
-h以人们较易预读的G,M、k等格式自行显示
-a不进查看子目录大小,还要包括文件
-c显示所有的文件和子目录大小后,显示总和
-s只显示总和
-max-depth=n指定统计子目录的深度为第n层

查看当前用户主目录占用的磁盘空间大小

du -sh # 查看当前路径文件大小
# 子查看一级子目录
du --max-depth=1 -ah

5.8.4 mount/umount 挂载/卸载

基本语法

mount [-t vfstype] [-o options] device dir (功能描述:挂载设备) 

umount 设备文件名或挂载点  (功能描述:卸载设备)
参数功能
-t vfstype指定文件系统的类型,通常不必指定。mount会自动选择类型。常用类型有:光盘或光盘镜像 DOS Windows9x fat32文件系统:vfat Windows NT ntfs 文件系统: ntfs Mount Windows 文件网络共享:smbfs UNIX(LINUX)文件共享:nfs
-o options主要用来描述设备或档案的挂接方式。常用的参数有: loop 用来把一个文件当成硬盘分区挂接上系统 ro:采用只读方式挂接设备 rw:采用读写方式挂接设备 iocharset: 指定访问系统所用字符集
device要挂接的设备
dir设备在系统上的挂载点

5.8.5 fdisk分区

fdisk -l 查看磁盘分区详情

fdisk 硬盘设备名 (显示所有硬盘的分区列表)

6. 网络配置和系统管理操作

6.1 查看网络IP和网关

1)查看虚拟网络编辑

windows查看ip

ipconfig

2)虚拟机网卡配置

桥接模式

​ 虚拟机直接连接外部物理网络的模式,主机起到了网桥的作用。这个模式下直接访问外部网络,并且对外部网络是可见的。(同一个路由器内都可见,占用局域网的ip)

NAT模式(Network Address Translation)

​ 虚拟机和主机构建一个专用网络,并通过虚拟网络地址转换(NAT)设备对IP进行转换。虚拟机通过该共享IP可以访问外部网络,但外部网络无法访问虚拟机。

仅主机模式

​ 虚拟机只与主机共享一个专用网络,与外部网络无法通信。

3)查看网关

ifconfig

6.2 配置网络ip

修改为静态IP

 vim /etc/sysconfig/network-scripts/ifcfg-“ifconfig看到的前缀”
BOOTPROTO="dhcp"
修改为 
BOOTPROTO="static"
#IP地址
IPADDR=192.162.202.100
# 网关
GATEWAY=192.168.202.2
# 域名解析器
DBS1=192.168.202.2

重启网络服务

server network restart

6.3 配置主机名和hosts映射

6.3.1 修改主机名称

# 查看主机名
hostname
# 修改文件在/ect/hostname指定  
vim /ect/hostname  
# 修改后,重启生效

6.3.2 设置hosts映射

如何通过主机名找到某个Linux系统

  • 对于winodws:在C:Windows\System32\drivers\etc\hosts文件指定即可
  • 对于Linux:在/etc/hosts文件指定

6.3.2 修改hosts映射文件

1)修改linux的主机映射文件(hosts文件)

​ 说明:后续在虚拟机多的情况时,配置时通畅会采用主机名的方式配置

vim /etc/hosts

windows

C:\Windows\System32\drivers\etc\hosts

主机名解析机制分析(Hosts、DNS)

1.浏览器先检查浏览器缓存中有没有该域名解析IP地址,有就先调用这个IP完成解析;如果没有,就检查DNS解析器缓存,如果有直接返回IP完成解析。这两个缓存,可以理解为本地解析器缓存

2.—般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的IP地址(DNS解析记录).如在cmd窗口中输入

ipconfig /displaydns # DNS域名解析缓存
ipconfig /flushdns # 手动清理dns缓存

3.如果本地解析器缓存没有找到对应映射,检查系统中hosts文件中有没有配置对应的域名IP映射,如果有,则完成解析并返回。

4.如果本地DNS解析器缓存和hosts文件中均没有找到对应的IP则到域名服务DNS进行解析域

7 进程管理

基本介绍

在Linux中,每个执行的程序称之为进程,每一个进程都分配一个ID号(pid,进程号)

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用着一定的系统资源

7.1 显示系统执行的进程

基本介绍

ps命令用来查看目前系统中,哪些正在执行,他们执行的状况,可以不加任何参数

选项

选项功能
a列出带有终端的所有用户的进程
x列出当前用户的所有今后进程,包括没有终端的进程
u面向用户友好的显示风格
-e列出所有进程
-u列出某个用户关联的所有进程
-f显示完整格式的进程列表

ps命令显示的信息选项

字段说明
PID进程识别号
TTY终端机号
TIME此进程所消CPU时间
CMD正在执行的命令或进程名
1. ps aux显示信息说明
USER:该进程是由哪个用户产生的

PID: 进程的ID号

%CPU: 该进程占用CPU资源的百分比,占用越高,进程越耗费资源;

%MEM: 该进程占用物理内存的百分比,占用越高,进程越耗费资源;

VSZ: 该进程占用虚拟内存的大小,单位KB;

RSS: 该进程占用实际物理内存的大小,单位KB;

TTY: 该进程是哪个终端中运行的。对于CentOS来说,tty1是图形化终端,tty2-tty5是本地的字符界面终端。pts/0-255代表虚拟终端。

STAT: 进程状态。常见的状态有:

​	R:运行状态	S:睡眠状态 	T: 暂停状态	Z:僵尸状态 s:包含子进程 l: 多线程 +:前台显示 <:高优先级 N:低优先级

START: 该进程的启动时间

TIME:该进程占用CPU的运算时间,注意不是系统时间

COMMAND:产生此进程的命令名
2. ps -ef 显示信息说明
UID: 用户ID

PID: 进程ID

PPID: 父进程ID

C: CPU用于计算执行优先级的因子。数字越大,表明进程是CPU密集型运算,执行优先级会降低;数字越小,表明进程是I/O密级型运算,执行优先级会提高

STIME:进程启动的时间

TIY:完成的终端名称

TIME: CPU时间

CMD: 启动进程所用的命令和参数

如果是想查看进程CPU占用率和内存占用率,可以使用aux

如果想查看进程的父进程ID可以使用ef;

7.2 进程终止

kill [选项] 进程号 	通过进程号杀死进程

killall 进程名称 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
选项功能
-9表示强迫进程立即停止

kill -l 查看各个号码代表的意思

7.3 查看进程树

基本介绍

pstree [选项] # 直观查看进程信息

常用选项

选项功能
-p显示进程PID
-u显示进程的所属用户
  • pstree
  • pstree -p
  • pstree -u

7.4 实施监控系统进程状态

基本语法

top [选项]

常用选项

选项功能
-d 秒数指定top命令每隔几秒更新。默认是3秒在top命令的交互模式当中可以执行
-i使top不显示任何闲置或者僵死进程。
-p通过指定进程ID来仅仅监控某个进程的状态

常用操作

操作功能
P以CPU使用率排序,默认就是此项
M以内存的使用率排序
N以PID排序
q退出top
u根据指定用户进行过滤
k直接杀死

7.5 显示网络状态和端口占用信息

基本介绍

netstat -anp | grep 进程号 # 查看该进程网络信息
netstat -nlp | grep 端口号 # 查看网络端口号占用情况
netstat -atnp # 查看连接

常用选项

选项功能
-a显示所有正在监听(listen)和未监听的套接字(socket)
-n拒绝显示别名,能显示数字的全部转化为数字
-l仅列出在监听的服务状态
-p表示显示哪个进程在调用

8 系统管理

进程和服务区别

计算机中,一个正在执行的程序或命令,被叫做"进程"(process)

启动之后一直存在、常驻内存的进程,一般被称做“服务”(service)

8.1 service 服务管理

ls /usr/sbin/ | grep service

基本语法

service 服务名 start | stop | restart | statu

案例实操

# 查看网络服务的状态 
service network status

# 停止网络服务
service network stop

# 启动网络服务
service network start

# 重启网络服务
service network restart

8.2 chkconfig 设置后台服务的自启配置

基本语法

chkconfig #(功能描述:查看所有服务器自启配置) 

chkconfig 服务名 off #(功能描述:关掉指定服务的自动启动) 

chkconfig 服务名 on #(功能描述:开启指定服务的自动启动) 

chkconfig 服务名 --list # (功能描述:查看服务开机启动状态)

案例实操

# 开启/关闭 network(网络)服务的自动启动
chkconfig network on
chkconfig network off
# 开启/关闭 network 服务指定级别的自动启动
chkconfig --level 指定级别 network on
chkconfig --level 指定级别 network off

8.3 systemctl

基本语法

systemctl start | stop | restart | status  服务名

查看服务的方法:ls - al /usr/lib/systemd/system

案例实操

# 查看防火墙服务的状态 
systemctl status firewalld

# 停止防火墙服务
systemctl stop firewalld

# 开启防火墙服务
systemctl start firewalld

# 重启防火墙服务
systemctl restart firewalld

设置后台服务的自启配置

systemctl list-unit-files	(功能描述:查看服务开机启动状态)

systemctl disable service_name (功能描述:关掉指定服务的自动启动)

systemctl enable service_name (功能描述:开启指定服务的自动启动)

案例实操

# 开启/关闭iptables(防火墙)服务的自动启动
systemctl enable firewalld.service
systemctl disable firewalld.service

9 软件包管理

9.1 RPM

9.1.1 RPM概述

RPM(RedHat Package Manager),RedHat软件包管理工具,类似于windows里面的setup.exe,是Linux这系列操作系统的打包安装工具,它虽然是RedHat的标志,但理念是通用的。

​ RPM包的名称格式

​ Apache-1.3.23-11.i386.rpm

​ “apache” 软件名称

​ “1.3.23-11”软件的版本号,主版本和此版本

​ “i386”是软件所运行的硬件平台,Intel 32位处理器的统称

​ “rpm”文件扩展名,代表RPM包

9.1.2 RPM查询命令 (rpm -qa)

rpm -qa 查询所安装的所有rpm软件包

由于软件包比较多,一般都会才去过滤 rpm -qa | grep 名称

查询具体信息

rpm -qi unzip-6.0-24.el7_9.x86_64

9.1.3 RPM 卸载命令 (rpm -e)

rpm -e 名称 卸载软件包

rpm -e --nodeps 名称 卸载软件时,不检查依赖。这样的话,那些使用该软件包的软件在此之后可能就不能正常工作

卸载firefox

rpm -e firefox

9.1.4 安装命令 (rpm -ivh)

rpm -ivh 包全名

选项功能
-iinstall 安装
-v–verbose 显示详细信息
-h–hase,进度条
–nodeps安装前不检查依赖

安装firefox

rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm

9.2 仓库配置

9.2.1 YUM概述

YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次 安装所有依赖的软件包,无须繁琐地一次一次下载,安装。

9.2.2 YUM的常用命令

yum [选项] [参数]

选项功能
-y对所有提问都回答“yes"
参数功能
install安装rpm 软件包
update更新rpm软件包
check-update检查是否有可用的更新rpm软件包
remove删除指定的rpm软件包
list显示软件包信息
clean清楚yum过期的缓存
deplist显示yum软件包的所有依赖关系

yum方式安装firefox

yum list | grep firefox
# 卸载老版本
yum remove firefox
yum -y install firefox

9.2.3 修改网络YUM源 (默认会自己搜索最近的)

​ 默认的系统 YUM 源,需要连接国外 apache 网站,网速比较慢,可以修改关联的网络 YUM 源为国内镜像的网站,比如网易 163,aliyun 等

(1)安装 wget, wget 用来从指定的 URL 下载文件

yum install wget

(2)在/etc/yum.repos.d/目录下,备份默认的 repos 文件

cp CentOS-Base.repo CentOS-Base .repo.backup

(3)下载网易 163 或者是 aliyun 的 repos 文件,任选其一

wget http://mirrors.aliyun.com/repo/Centos-7.repo # 阿里云
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo # 网易

(4)使用下载好的 repos 文件替换默认的 repos 文件 例如:用 CentOS7-Base-163.repo 替换 CentOS-Base.repo

mv CentOS7-Base-163.repo CentOS-Base.repo

(5)清理旧缓存数据,缓存新数据

yum clean all
yum makecache

yum makecache 就是把服务器的包信息下载到本地电脑缓存起来

(6)测试

yum list | grep firefox
yum -y install firefox

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cyan Chau

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值