Linux

虚拟机基础

虚拟机克隆

使用虚拟机克隆,可以直接使用VM自带的克隆功能,但是要注意得关闭你要克隆的Linux系统。

虚拟机快照

如果你在使用虚拟机系统的时候,你想回到原先的一个状态,也就是说你担心可能有些误操作造成系统异常,需要回到原先某个正常运行的状态,VM也提供了这样的功能,叫做快照管理

  1. 先做一个快照A
  2. 就进入系统创建一个文件夹后再保存一个快照B
  3. 然后回到快照A即可

在这里插入图片描述

点快照A初始状态后进入初始状态

在这里插入图片描述

虚拟机的迁徙和删除

虚拟机系统本质上是在文件夹当中的,因此进行虚拟机的迁移只需要将这个安装好后的虚拟机系统整个文件夹整体拷贝或者剪切到另外的位置使用就可以。删除也很简单,使用VM进行移除,点击菜单进行磁盘删除即可,或者直接手动删除他所在的文件夹即可。

Xshell 7 与 Xftp 7

下载后这两个软件之后,就可以连接到Linux虚拟机上,输入Linux虚拟机的ip地址,端口号22。

连接后,Xshell可以远程登录Linux,并进行操作

Xftp可以进行文件的传输,连接Linux后,可以将Windows系统的文件和Linux的文件进行快捷操作。

基本操作命令

正常模式

使用VIM打开一个档案,就进入了一般模式,可以使用上下左右按键来移动光标,可以删除字符,复制粘贴来处理文件数据

编辑插入模式

按下i,I,o,O,a,A,r,R等任何一个字符就会会进入编辑模式

命令行模式

在当前模式下,可以提供你相关指令,完成读取,存盘,替换,离开vim,显示行号当前达成。

在这里插入图片描述

:wq 保存退出

:q 退出

:q!强制退出不保存

复制删除指令

复制指令:yyp 若是想要复制多行,比如复制五行,就输入5yyp。

删除指令:dd,若是想删除向下的几行,就输入5dd……

查找字符指令

命令行输/,回车查找,输入n就是查找下一个

在这里插入图片描述

在这里插入图片描述

设置文件的行号,取消文件行号

命令行下输入:set nu 设置文件行号

输入 set nonu 取消文件分号

快速定位行号

在一般模式下,若是想要移动到第二十行,就输入20,再输入shift+g即可

关机&重启命令

shutdown -h now 立刻进行关机

shutdown -h 1 1分钟后关机

shutdown -r now 重新启动虚拟机

halt 关机

reboot 重启计算机

sync 把内存的数据同步到磁盘当中

用户登录和注销

在提示符喜爱输入logout就可以注销用户

在这里插入图片描述

su tom 就会切换到tom用户当中,要想进入root当中,输入密码即可。

用户管理

用户添加

基本用法

useradd 用户名

案例

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

设置密码

给刚刚创建的milan创建password

passwd milan,然后输入即可

删除用户

基本语法

userdel 用户名

若是删除用户后保留他的家目录以milan举例 userdel milan

若是和他的家目录一起删除掉 userdel -r milan

查询用户信息

基本语法

id 用户名

切换用户

基本语法

su 用户名

用户组

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

新增组

groupadd 组名

删除组

groupdel 组名

添加用户的时候直接加上组

useradd -g 用户组 用户名

用户组相关文件

etc/passwd

用户的配置文件,用于记录用户的各种信息。

etc/shadow

口令的配置文件。

etc/group

组的配置文件,记录Linux包含的组的信息。

实用指令

指定运行级别

0:关机

1:单用户(找回丢失密码)

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

init 数字来切换运行级别

帮助指令

man获得帮助信息

基本语法:man【命令或配置文件】(功能描述:获得帮助信息)

输入man ls可以看ls命令的帮助信息。

help指令

基本语法:help命令(获得shell内置命令的帮助信息)ls

文件目录类指令

pwd指令

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

在这里插入图片描述

ls指令

ls -a 【目录或是文件】:显示当前目录所有的文件和目录,包括隐藏的

ls -l 【目录或是文件】:以列表的方式显示信息

cd指令

cd 【参数】 切换到指定目录

cd ~ 是回到自己的家目录

cd … 是回到当前目录的上一级目录

mkdir指令

用于创建目录

基本语法:mkdir 【选项】要创建的目录

不写-p的话就是创建一级目录

-p 创建多级目录

在这里插入图片描述

rmdir指令

rmdir 【选项】 要删除的空目录

如果要删除非空目录,要使用 rm -f 【要删除的目录】,目录有内容的情况下使用rmdir是无法删除的

在这里插入图片描述

cp指令

cp指令拷贝文件到指定目录

cp 【选项】 source dest 从source 当中拷贝到 dest当中去

常用选项: -r 指递归的复制整个文件夹
在这里插入图片描述

在复制的时候会出现覆盖的情况,要想强制覆盖就输入 \cp 。。。。即可

rm指令

rm指令是移除指令或目录

rm【选项】 要删除的文件或目录

-r 递归删除整个文件夹

-f 强制删除不提示

mv指令

mv移动文件与目录或重命名

如果俩文件在一个目录当中,就是重命名

在这里插入图片描述

如果俩文件不在一个目录当中,就是移动文件

在这里插入图片描述

cat指令

cat查看文件内容

cat【选项】 要查看的文件

-n显示行号

more指令

more是以全屏幕按页来显示文本文件的内容

在这里插入图片描述

more 【要查看的文件】

less指令

less指令用于分屏查看文件的内容。对大型文件具有较高的效率

less 【要查看的文件】

在这里插入图片描述

echo指令

echo输出内容到控制台

echo 【选项】 【输出内容】

在这里插入图片描述

head指令

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

head 文件

head -n 5 文件 查看文件头五内容

tail指令

输出文件末尾的指令,基本操作与head指令一样

有一个不同点在选项上有一个-f ,他可以实时追踪文件的所有更新

> 指令和>>指令

>输出重定向

ls -l >文件 将列表的内容写入到文件当中(覆盖写)

cat 文件1 > 文件2 将文件1的内容覆盖到文件2当中

>>追加

ls -al >>文件 将列表的内容追加到文件的末尾

echo”内容” >> 文件 追加到文件当中

ln指令

软连接也叫做符号链接,类似于Windows里的快捷方式,主要存放了链接其他文件的路径

基本语法

ln -s 【原文件或目录】 【软连接名】 给原文件创建一个软连接

ln -s  /root/  /home/myroot

这就给root创建了一个软连接为myroot

我现在进入到myroot当中,就是进入到了root当中。相当于是一个快捷方式。

在这里插入图片描述

history

查看已经执行过的历史命令,也可以执行历史指令

要是!5就是执行曾经执行过的第五号指令。

时间日期类

date指令

date 显示当前时间

date +%Y 显示当前年份

date +%m 显示当前月份

date + %d显示当前日期

date “+%Y-%m-%d%H:%M:%S”显示年月日时分秒

date -s 是显示字符串时间

cal指令

查看日历指令

cal

搜索查找类

find指令

find指令将从指定的目录向下递归地遍历各个子目录,直到搜索到。

find 【搜索范围】 【选项】

在这里插入图片描述

比如说搜索范围是root开始,他就会搜索root下所有的目录。

locate指令

locate可以快速定位文件路径。locate指令是不用遍历文件系统的,他是创建自己的一个数据库,然后去数据库里面查,所以查询速度比较快。

在第一次使用locate质量的时候 必须使用updatedb,来创建locate数据库

然后使用 locate 【搜索文件】 来定位路径。

grep指令与管道符号

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

grep 【选项】 查找内容 源文件

在这里插入图片描述

下面是查找Hello的行号实例(使用管道符号)

在这里插入图片描述

下面是不使用管道符号的例子
在这里插入图片描述

grep + 选项 +源文件

压缩和解压类

gzip 和 gunzip

基本语法

gzip 文件 (压缩文件,将文件压缩为.gz文件)

gunzip 文件.gz (解压文件)

在这里插入图片描述

zip 和 unzip指令

zip用于压缩文件 unzip用于解压

基本语法

zip 【选项】 XXX.zip 将要压缩的内容

-r 递归压缩,即压缩目录

unzip 【选项】 XXX.zip 解压缩文件

-d<目录> 指定解压后文件的存放目录

tar指令

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

tar【选项】 XXX.tar.gz 打包的内容

在这里插入图片描述

Linux组

所有者

查看文件的所有者

ls -ahl

在这里插入图片描述

修改文件所有者

比如我现在要把root所有的Hello.java修改为jack所有

就写 chown jack Hello.java

在这里插入图片描述

可以看到文件所有者变成了jack

所在组

创建组

基本指令

groupadd 组名

例子

创建一个组monster ,然后创建一个用户fox ,并把他放进去

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

在这里插入图片描述

可以看到该文件在的位置是monster组

修改文件所在组

基本指令

chgrp 组名 文件名

例子

使用root创建文件orange.txt,然后看这个文件是哪个组的,然后将这个文件所在组移动到fruit组

在这里插入图片描述
在这里插入图片描述

其他组

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

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

基本指令

usermod -g 新组名 用户名

usermod -d 目录名 用户名 <—改变该用户登录的初始目录

权限

权限的基本介绍

ls -l 显示的内容如上图所示

前面的那串乱码是什么意思呢??

0-9位说明

  1. 第0位是确定文件类型(d,-,l,c,b)
    1. l是链接相当于Windows的快捷方式
    2. -是普通文件
    3. d是目录,相当于Windows的文件夹
    4. c是字符设备文件,键盘,鼠标
    5. b是块设置,比如硬盘。
  2. 第1-3位是确定该文件所有者拥有该文件的权限
  3. 4-6位是确定所属组也就是同文件组拥有该文件的权限
  4. 7-9是确定其他用户拥有该文件的权限

rwx

rwx作用在文件上代表 r:可以查看 w :可以修改 x: 可以执行

rwx作用到目录上代表 r:可以读取 ls 可以查看目录内容

​ w: 可以对该目录进行修改

​ x:可以进入该目录

修改权限

基本指令

chmod指令修改权限

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

u:所有者 o其他人 a 所有人 g所有组

  1. chmod u=rwx,g=rx,o=x 文件/目录名
  2. chmod o+w 文件/目录名
  3. chmod a-x 文件/目录名
通过数字变更

r=4 w=2 x=1 rwx= 4+2+1=7

chmod u=rwx,g=rx,o=x 文件/目录名 相当于 chmod 751 文件/目录名

修改文件所有者

基本介绍

chown newowner 文件/目录 改变所有者

chown newowner:newgroup 文件/目录 改变所有者和所在组

-R 选项,如果是目录,就使得其目录下所有的文件和目录所有者递归生效

修改文件/目录所在组

chgrp newgroup 文件/目录

定时任务调度

crontab 任务调度

概述

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

任务调度分类: 1. 系统工作:有些重要的工作必须周而复始的执行

						2. 个别用户工作:个别用户可能希望执行某些程序

语法

crontab [选项]

在这里插入图片描述

快速入门

设置任务调度文件

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

接着输入任务到调度文件

比如:*/1****ls-l /etc/ > /tmp/to.txt

*占位符说明

第一个是代表一小时当中的第几分钟 0-59

第二个是一天当中的第几个小时 0-23

第三个一个月当中的第几天 1-31

第四个是一年当中的第几个月 1-12

第五个是一周的星期几 0-7

特殊符号说明

* 代表任何时间

, 代表不连续的时间 比如0 8,12,16 ***就代表每天的8,12,16时执行

, 代表连续的时间范围

*/n 代表每隔n就执行一次

快速入门案例

每隔一分钟,就将当前日期和日历都追加到/home/mycal文件当中

  1. 创建脚本文件,后缀为.sh ,这里我称之为my.sh
  2. 第二步进入脚本文件进行写入,cal >> /home/mycal date >> /home/mycal
  3. 写完后我发现该文件的权限没有执行权限,就设置为了744
  4. 最后打开crond -e 任务调度,写上每分钟执行一次/home/my.sh即可

这样就会每分钟执行一次脚本。

相关指令

crontab - r 终止任务调度

crontab -l 列出当前有那些任务调度

service crond restart 重启任务调度

at定时任务

基本介绍

at命令是一次性定时计划任务 ,at的守护线程atd会以后台模式运行

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

at命令是一次性定时计划任务,执行完一个后就不再执行此任务了

在使用at命令的时候,要保证atd进程的启动

at命令格式

at 【选项】 【时间】

Ctrl+D 结束at命令输入

在这里插入图片描述

ps -ef | grep atd 可以看atd进程是否启动

Linux磁盘分区

原理

Linux使用了载入的处理方法,它的整个文件系统当中包括了一整套的文件和目录,并且将一个分区和一个目录联系起来,这个时候要载入的一个分区将使得它的存储空间在一个目录下获得。

在这里插入图片描述
在这里插入图片描述

可以看到不同的分区挂载到不同的目录下。

增加硬盘

增加一块sdb 然后将分区挂到一个新建的目录下

增加硬盘具体步骤

  1. 虚拟机添加硬盘
  2. 分区
  3. 格式化
  4. 挂载
  5. 设置可以自动挂载

在这里插入图片描述

添加新硬盘sdb

输入fdisk /dev/sdb进行分区

在这里插入图片描述

可以看到分区成功

接下来进行格式化 mkfs -t ext4 /dev/sdb1

其中的ext4是分区类型

在这里插入图片描述

可以看到UUID已经出现了,这代表着格式化成功。

然后进行挂载

在这里插入图片描述

挂载成功

但是在使用命令行挂载后,重启之后就会失效

这种情况下去更改文件/etc/fstab 即可。

磁盘情况查询

基本语法

df -h

在这里插入图片描述

进程管理

显示系统执行的进程

ps命令来查看

ps显示的信息选项:PID 进程识别号

​ TTY 终端机号

​ TIME 此进程所消耗的CPU时间

​ CMD 正在执行的命令或者进程名

ps -a 显示当前终端所有进程信息

ps -u以用户的格式显示进程信息

ps -x 显示后台进程运行的参数

在这里插入图片描述

输入 ps -aux得到以上的信息 其中的User 是进程执行用户 ,VSZ是占用虚拟内存的百分比。

RSS是物理内存的百分比,其他的上面介绍过。

ps详解

指令 ps -aux | grep xxx ,比如我看看有没有sshd服务

​ ps -aux|grep sshd

在这里插入图片描述

指令说明:System V 展示风格

​ USER 用户名称

​ PID 进程号

​ %CPU 进程占用CPU的百分比

​ %MEM 进程占用物理内存的百分比

​ %VSZ 进程占用虚拟内存大小

​ RSS 进程占用物理内存的大小

​ TT 终端名称,缩写

​ STAT 进程状态 S- 睡眠 s-表示该进程是会话的先到进程 N- 表示进程拥有比普通优先级更低的优先级,R- 正在运行 D-短期等待 Z-僵死进程 T- 被跟踪或者被停止

​ STARTED 进程的启动时间

​ TIME :CPU时间,即为进程使用CPU的总时间

​ COMMAND:启动进程所用的命令和参数,如果过长就会被截断显示。

查看父进程

ps -ef是以全格式显示当前所有进程的 -e是显示所有进程的, -f是全格式

PPID显示的是父进程的ID PID是自己进程的ID

终止进程kill和killall

若是某个进程执行到一半需要停止时,或者是已经消耗了很大的系统资源的时候,可以使用kill命令来完成该任务。

基本语法

kill 【选项】 进程号

killall 进程名称 通过进程名称来杀死进程,也支持通配符,这在系统因负载过大而变得很慢时有用

常用选项

-9 表示强迫进程立即停止

服务管理

介绍

服务(service)本质就是进程,但是是运行在后台的,通常都会监听两个端口,等待其他程序的请求,比如mysql sshd 防火墙等等,因此我们又称其为守护进程。

Service管理指令

service 服务名 【start|stop|restart|reload|status】

在CentOS7.0之后,很多服务不再使用service,而是使用systemctl

我们可以使用ls -l /etc/init.d/ 来查看

在这里插入图片描述

这些就可以使用service来进行管理

服务的运行级别

0 :系统停机状态

1 :单用户工作状态

2 :多用户状态(没有NFS),不支持网络

3 :完全的多用户状态(有NFS) 登录后进入控制台命令行模式

4 :系统未使用,保留

5 :X11控制台,登录后进入图形GUI模式

6 :系统正常关闭后重启,默认级别不能为6,否则不能正常启动

开机流程

开机,BIOS,/boot,systemd 进程1,运行级别,运行级对应的服务。

chkconfig指令

介绍

通过chkconfig指令可以给服务的各个运行级别设置 启动或者关闭

chkconfig指令管理的服务可以在/etc/init.d上查看

chkconfig基本语法

查看服务

chkconfig - -list 【|grep 服务】

在这里插入图片描述

chkconfig 服务名 - -list

在这里插入图片描述

chkconfig - - level 5 服务名 on/off 对服务器进行级别的设置,设置自启动或是什么。

systemctl管理指令

基本语法

systemctl 【start| stop| restart|status】服务名

systemctl指令管理的服务在/usr/systemd/system 查看

systemctl设置服务的自启动状态

systemctl list-unit-files【|grep 服务名】查看服务开机启动状态,grep可以进行过滤

systemctl enable 服务名(设置服务开机启动)

systemctl disable 服务名(关闭服务开机启动)

systemctl is-enable 服务名(查询某个服务是否为自启动的)

firewall指令

加入我现在打开了防火墙,要想让一个外部程序去连接一个端口,我们就需要去打开这个端口,就是下面这些指令来完成

打开端口 firewall-cmd- -permanent- -add-port=端口号/协议

 firewall-cmd- -add-port=111/tcp

tcp协议的111端口

关闭端口 firewall-cmd- -permanent- -remove-port=端口号/协议

重新载入,才能生效 firewall-cmd- -reload

不管你是打开还是关闭端口,你都需要操作后再重新载入防火墙才能生效。

查询端口是否开放 firewall-cmd- -query-port=端口/协议

动态监控进程

介绍

top与ps命令详细,都是用于显示正在执行的进程,top与ps不同之处在于top执行一旦时间可以更新正在运行的进程。

基本语法

top 【选项】

选项说明

-d 指定top命令每隔几秒更新,默认三秒

-i 使top不显示任何闲置或是僵死进程

-p 通过指定监控进程ID来仅仅监控某个进程的状态

交互操作说明

我们在进行监控的时候,需要一些指定操作的命令,我们就可以使用下面的选项

在这里插入图片描述
在这里插入图片描述

上图就是我在进入了top命令之后,输入了大写的P,让他以CPU进行排序,得出的结果。

要想根据内存排序,输入大写的M即可,要退出top指令就输入q即可。

应用实例

监控特定用户

进入top之后,输入u之后再输入要监控的用户即可,然后回车

在这里插入图片描述
在这里插入图片描述

监控网络状态

查看系统网络情况netstat

基本语法

netstat【选项】

-an 按一定顺序排列输出

-p 显示哪个进程在调用

在这里插入图片描述

进入后,首先左边是协议名称,然后就是本地端口和外部端口的信息,最后是连接状态。

案例

比如我现在想看一个服务名为sshd的信息

在这里插入图片描述

RPM与YUM

RPM

rpm用于互联网下载包的打包以及安装工具,它包含在某些Linux的分发版当中,他可以生成具有.RPM扩展名的文件。RPM是RedHat Package Manager的缩写也就是RedHat软件包管理工具,类似于Windows的setup.exe文件。

指令

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

rpm -qa | more

rpm -q 软件包名 ,查询软件包是否安装

rpm -qi 软件包名 查询软件包信息

rpm -ql 软件包名 查询软件包当中的文件

rmp -qf 文件全路径名 查询文件夹所属的软件包

rmp 的卸载

基本语法

rpm -e RPM软件包的名称

细节问题

如果其他软件包依赖于我要卸载的软件包,卸载的时候会产生错误信息。

我们就可以添加参数- -nodeps,就可以强制删除。比如 rpm -e - -nodeps foo 这里就是强制删除foo这个软件包

安装rmp包

基本语法

rpm -ivh RPM包全路径名称

参数说明: i =install 安装

​ v=verbose 提示

​ h=hash 进度条

YUM

Yum是一款Shell前端软件包管理器,基于RPM 包管理,可以从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包。

基本指令

查询yum服务器是否有需要安装的软件

yum list | grep xx软件列表

安装指定的yum包

yum install | xxx 下载安装

监控网络状态

查看系统网络情况netstat

基本语法

netstat【选项】

-an 按一定顺序排列输出

-p 显示哪个进程在调用

[外链图片转存中…(img-f9xUbV92-1728372608238)]

进入后,首先左边是协议名称,然后就是本地端口和外部端口的信息,最后是连接状态。

案例

比如我现在想看一个服务名为sshd的信息

[外链图片转存中…(img-qdGMvTW3-1728372608238)]

RPM与YUM

RPM

rpm用于互联网下载包的打包以及安装工具,它包含在某些Linux的分发版当中,他可以生成具有.RPM扩展名的文件。RPM是RedHat Package Manager的缩写也就是RedHat软件包管理工具,类似于Windows的setup.exe文件。

指令

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

rpm -qa | more

rpm -q 软件包名 ,查询软件包是否安装

rpm -qi 软件包名 查询软件包信息

rpm -ql 软件包名 查询软件包当中的文件

rmp -qf 文件全路径名 查询文件夹所属的软件包

rmp 的卸载

基本语法

rpm -e RPM软件包的名称

细节问题

如果其他软件包依赖于我要卸载的软件包,卸载的时候会产生错误信息。

我们就可以添加参数- -nodeps,就可以强制删除。比如 rpm -e - -nodeps foo 这里就是强制删除foo这个软件包

安装rmp包

基本语法

rpm -ivh RPM包全路径名称

参数说明: i =install 安装

​ v=verbose 提示

​ h=hash 进度条

YUM

Yum是一款Shell前端软件包管理器,基于RPM 包管理,可以从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包。

基本指令

查询yum服务器是否有需要安装的软件

yum list | grep xx软件列表

安装指定的yum包

yum install | xxx 下载安装

上一篇:上海AI Lab视频生成大模型书生.筑梦环境搭建&推理测试


下一篇:亳州自闭症寄宿制学校,关注孩子的学习和生活