如何用共享文件

ximage-20230516172648393

点击虚拟机, 然后选择点击设置, 选项共享文件夹找到D:\myshare,然后就可以了

  • 在虚拟机中cd /mnt/hgfs/share
  • 注意如果你没有开启共享文件功能,那么你在虚拟机中找不到这个hgfs文件

shell 突然连接上不上虚拟机的问题和解决方法

  1. 重启ssh服务

systemctl restart sshd

  1. 查看你当前虚拟机的ip地址

image-20230513110728202

昨天inet这里的ip地址是 192.168.202.134 现在变成了192.168.202.135,所以需要更换xshell中的服务连接

  1. 断开NAT模式连接(还未尝试,但是说不定有用)

image-20230513110944014

右下第三个图标,右击

vim 的学习

image-20230329131040899

a 代表append

image-20230329131442903

记住esc 就可以退回到 normal状态

image-20230329131638704

普通模式变到 visual 模式摁下 v, 退回到 normal 模式摁下 esc 即可

image-20230329131813629

光标移动

一下均在 normal 模式下进行

image-20230329131928890

image-20230329132139214

image-20230329132620000

image-20230329132752671

image-20230329133610027

image-20230329133902616

  • 操作符

    image-20230329133932137

    u 撤销, p粘贴 ,c修改,y是复制的意思

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    yyp向下复制一行
    y + 2 + yp 代表向下复制两行
    cc 删除一行 ()


    d + i + < 删除<>括号里面的元素
    c + i + < 删除<>括号里面的元素 并进入写入模式
    c + a + < 删除包括<>在内的所有元素
    u 代表撤回



    dd 删除一行
    2dd 删除两行
    (使用cc可以删除后进入写入模式)



    y + f + s 复制到第一个s的内容,然后 摁下p就是复制
    d + f + s 找到第一个s的内容 ,然后删除从当前文本到s的所有内容
    c + f + s 同上,但是删除之后,进入写入模式

    d + i + t 代表删除标签内的所有元素
    <html>
    <div>
    fadfa
    </div>
    <p>
    dfa
    </p>
    <html>
    在normal模式下输入d + i + t就可以实现把html中所有的元素删除

    我们还可以配合尖角号来进行删除
    d + ^ 删除开头的所有元素
    d + $ 删除从光标开始往后的所有元素

    v + i + w 快速选中当前光标所在的单词

大小写转换

image-20230401192720576

可以结合上上面的操作, 如 v + i + w 选中一个单词然后把所有的元素都换成大写或者小写字母

tips

gd 可以跳转到定义 (ctrl + i 可以调回来)

切换标签页 g + t (往前) g + T(往后)

4 g t 跳转第二个标签页

easymotion

<leader><leader> s leader 代表键盘

image-20230401194215189

vim_surround

image-20230401194513127

当你使用 cs “ [ 则去掉”,然后 [ 之间没有空格,] 之间有空格

替换标签可以使用 cs”t p> 就可以得到 一个标签

  • 退回到命令行模式,然后输入:wq可以强制退出

linux

centos和vm虚拟机软件的安装看韩顺平

1.网络连接的三种方式

如果两个网络都在一个 192.168为开头的,那么他们都在同一个网段 在一个网段下的用户,可以相互链接

  • 桥接模式,虚拟系统可以和外界系统通讯,但是容易造成ip冲突
  • NAT模式:网络地址转换模式,虚拟系统可以和外部系统通讯,不造成ip冲突(首先这个
  • 主机模式:独立模式

2.虚拟机的基本知识

2.1虚拟机的克隆

image-20221124160826896

  • 注意克隆的时候,需要关闭linux系统

克隆的方式

  1. 引用拷贝
  2. 深度拷贝(完全复制一个过去)

2.2虚拟机的快照(我的理解是就像备份)

想要回到原先的某一个状态,就可以使用快照的机制

image-20221124161923011

image-20221124162020657

如果你现在在C,记录了A和B的快照,那么我们就可以通过快照机制回到A,在回到A之后,我们也可以回到B

2. 3删除(直接手动删除就好了)

2.4安装vmtools

image-20221124163106274

image-20221124205734386

3.目录结构:grin:

image-20221124205900134

在linux的世界中,一切皆文件

  • /bin 存放着最常用的指令
  • /sbin 存放普通用户的主目录,在linux中每一个用户
  • /lib 系统开机所需要最基本的动态连接的
  • /etc 所有系统管理所需要的配置文件和子目录
  • /usr 这是一个非常重要的,用户的所有应用程序和文件都放在这个目录
  • /proc(不要动)
  • /srv(不要动)
  • /sys(不要动)
  • /dev类似于windows的设备管理器
  • /media
  • /mnt 共享

image-20221124211147986

/opt 主机额外安装软件所存放的目录//如安装oracle数据库

4.远程登录linux

  • xftp : 传输文件
  • xshell :传输命令

5.vim基本介绍

  • 三种模式

image-20221124212648626

wq: 写入并退出

image-20221125200740850

image-20221125201537680

快捷键

  1. yy: 拷贝当前行 4yy复制4行
  2. dd: 删除当前行 4dd删除当前行
  3. /关键字 ,回车查找,输入n就是查找下一个,输入N就是查找下一个
  4. :set nu :显示行号,:set nonu:不显示行号
  5. gg:快捷键到文档的最开始一行 G:快捷键到文档的最后一行
  6. u撤销,如windows的ctrl+z
  7. 数字+shift+g定位到数字对应的行

6.关机重启

image-20221125201705119

-h 的h就是halt -r的r就是reboot

  • shutdown -h 代表1分钟后关机

  • shutdown -h 2 代表2分钟之后关机

  • shutdown -h now 代表现在关机

  • shutdown -r now 现在重启电脑

  • sync 把数据内存同步到磁盘之中。(建议在关机的时候, 执行一次, 免得出现问题

7.用户登录和注销

image-20221125202148529

su - root

root的时候使用logout的时候就会变成tom,在使用一次就会退出系统

  • 上面的这些操作得在shell中使用。

  • su - 用户名可以切换,你的用户级别

8.用户管理

tip:pwd显示当前用户所在的目录

8.1 添加用户

1
2
3
4
5
# 创建用户
useradd 用户名
useradd -d 地址 用户名 指定家目录的地址创建一个用户(默认的用户是被放置到\home之中
# 设置用户密码
passwd milan xxxx

8.2删除用户

1
2
3
4
5
6
7
# 删除用户milan,但是保留家目录,但是用户会消失(必须时root权限才能删除)
userdel milan

# 删除用户milan,不保留家目录(要慎重)
userdel -r milan

# 如果你先用第一种方式删除了milan,那么你就不可以通过-r将milan从home中删除掉
  • 如果你忘记加上-r操作,想要进一步的删除考虑一下做法

image-20230514161922494

8.x其他的一些操作

  • 高层级的退出到底层级的用户,不需要输入密码

  • 当你想从高级的到低级别的时候, 我们就可以使用logout

  • who am i:查看当前用户的信息(用户取决于你第一次登录的信息)

    image-20221126091528924

  • 查询用户名

1
2
id king 
id 用户名 返回一个用户的信息

image-20230507163705500

8.3用户组

tips:clear 清屏

8.3.1增加用户组

1
2
3
4
groupadd 组名

# 将用户直接直接放到用户组中
useradd -g wudang zwj

8.3.2删除用户组

1
groupdel 组名
  • 如果没有创建用户没有指定组,会自动生成一个对应用户名称的组

8.3.3修改用户组

1
usermod -g mojiao zwj 把zwj移动到mojiao组

image-20230507164612748

  • 从魔教变成了武当教

8.3.4用户和组相关文件

解释器:国内一般用bashshell

image-20221126093152036

  • 第一个指令为 vim etc/passwd
  • 后面的指令也是 vim + 后面的一坨东西

9.linux使用指令

  • 运行级别的介绍

image-20221127084923967

  • 输入init n跳入对应的状态
  • systemctl set-default graphical.target,回到默认的状态
  • systemctl set-default TARGET.target设置回到的状态

image-20230509090244160

修改初始init的方法

1
2
3
4
5
6
7
8
9
systemctl get-default 
查看当前系统的默认级别

systemctl set-default multi-user.target
切换成多用户网络级别

systemctl set-default graphical.target
切换成图形界面级别级别

如何找回root密码

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

    image-20221127090532246

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

image-20221127090821988

  1. 接着,输入完成后,直接按快捷键:Ctrl+x进入单用户模式
  2. 接着,在光标闪烁的位置输入 :mount -o remount,rw /
  3. 输入passwd回车后,输入密码

image-20221127091100984

  1. 在鼠标闪烁位置中(最后一行)输入touch /.autorelabel(注意touch和/之间有以一个空格)

  2. 继续在光标闪烁位置,输入exec /sbin/init然后摁下回车键,等待系统自动修改密码

帮助指令

image-20230509133624219

  • man获得帮助信息

    • man ls
    • 选项可以组合使用 ls -al, ls -al/root
    • 从man的提示中退出只要输入q就好了
  • help 获得shell内置命令的帮助信息

  • 在linux里面,隐藏文件是以.开头的。

文件指令

  • pwd : 显示当前的绝对路径

ls

  • ls - l单列输出所有的文件
  • ls - a输出所有的文件
  • 选项还可以组合使用 ls - al, ls -al /home代表输出root目录下的所有文件

cd

cd ~回到自己的家目录

cd .. 回到当前目录的上一级

mkdir

  • 指令用于创建目录

创建dog目录

mkdir /home/dog

创建多级目录

mkdir -p /home/dog/animal

image-20230509140515432

在当前/home之中创建一个dog,在dog之中创建一个animal

rmdir

rmdir 删除一个空目录

  • 只有空目录才可以使用

所以你不能删除掉有animal的cat的dir文件

  • 想要删除需要用rm -rf dir

比如我想要删除掉cat和animal,那么我们就可以使用这个递归删除.(r代表recursion)

rm -rf ./cat

通过上诉指令,将cat的所有文件,包括cat全部删除

image-20230509141219006

touch

  • 创建一个空文件

image-20230509141248356

cp

  • 指定的文件拷贝到指定的地址之中

-r选项递归复制整个文件夹

将bbb内的所有文件拷贝到opt文件夹之中

cp -r /home/bbb/ /opt/

image-20230509142004563

\cp -r /home/bbb/opt 强制覆盖所有文件,不需要一个一个的提示

rm

  • 不同于上面的删除目录, 这个是删除文件

  • 常用选项

    • -r 递归删除整个文件夹
    • -f 强制删除不提示
    • 这些选项可以组合
    • -rf强制删除所有文件夹不提示
  • 比如将/home/hello.txt文件删除

    rm /home/hello.txt

    rm -f /home/hello.txt

image-20230509142656169

两种方法得到的结果为上图

  • tips

删除整个系统为-rm -rf /但是这样会有系统提示

,为了绕开它的提示我们可以使用-rm -rf /*

mv指令

  • 移动文件与目录或者重命名

image-20230509143508413

  • 在同一个目录下面, 就是重命名

    image-20230509143631469

  • 否则就是移动文件.

  • 移动整个目录

    将bbb目录移动到home/下面

    mv bbb /home/

cat指令(更安全)

  • 他只能浏览方便, 但是不可以修改文件.

  • 查看文件的内容

image-20230509144025149

cat -n /etc/profile

拓展 : 管道命令

image-20230509144422055

将前面命令的结果交给下一个命令进行处理

``cat -n /etc/profile | more`

more可以进行翻页等功能

image-20230509144450191

more /etc/profile

less

功能:

image-20230509144722631

它比more指令更加好用, 它的查看文件的效率更加.

image-20230509145126682

echo

  • 输出内容到控制台

image-20230509145229416

  • 环境变量带有美元符号

echo $HOSTNAME显示当前服务器名字

echo "hello,world" (注意这里必须要加上引号)

echo >代表的是覆盖

echo >>代表的是追加

head指令

  • 用来显示文件的开头文件内容, 默认查看10行的内容.
  • head -n 5 显示前五行.

tail指令

  • 显示文件的末尾内容, 默认显示末尾10行.

  • 同head指令

  • 选项 -f实时显示文件内容.(非常重要)

    输入ctrl+c代表退出

拓展 : 重定向,将输出的内容写入到其他地方.

image-20230509150147565

image-20230509150154370

在linux系统中向文件中写入这个指令, 然后再tail的监控下得到了helloworld

> 和 >> 指令

image-20230509150523092

  • 因为以上指令的输出地方都是再控制台里面, 我们可以利用重定向将他转换到其他地方

  • cal : 显示当前的日历

cal > /home/cc.txt将日历覆盖到cc.txt文件之中

ln指令(这里是l不是i)

软链接, 类似于window之中的快捷键

image-20230509151433783

ln -s /root/ /home/myroot

image-20230509151609372

history

查看已经执行过的历史指令.

  • 查看所有的指令history

  • 查看最近的十条指令history 10

  • 执行历史编号为!5

时间日期类指令

date

date +%Y

date +%m

date +%d

date "+%Y- %m- %d %H:%M:%S"

image-20230512102419810

date -s 设计系统当前时间

image-20230512102701478

cal 查看日历指令

搜索查找类指令

find指令

image-20230512102954151

  1. find /home -name hello.txt

查找 home 名称下面的hello的记事本

image-20230512103312599

  1. find /opt -user nobody

    可以换成将nobody替换成root

    因为跳转的太快我们看不清里面的文件, 我们还可以使用 |more 来减缓速度

    例如find / -user root | more

  2. image-20230512103813288

    find / -size +200M 找到从根目录下大于200M的文件

    ls -lh将数据换成比较适合人看的单位

    image-20230512105002992

locate 指令

快速定位文件的路径

它的查询速度非常快速,他是建立自己的数据库进行查找

  • 在第一次运行之前, 需要使用updatedb指令创建locate数据库, 否则会检索不到

which 指令

可以查看某一个指令在哪个目录存放 。

which ls

image-20230512104657145

grep 指令和管道符号

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

image-20230512104805852

image-20230512105721349

grep -n "查找内容" 地址

  • 常用选项

-i : 忽略大小写

压缩和解压指令

gzip / gunzip 指令

image-20230512105927399

  • gzip 地址/

    压缩后会保存源文件

  • gunzip压缩

  • 选项 -r 递归压缩, 也就是压缩目录

image-20230512110256282

  • zip -r myhome.zip /home/将home目录及其包
  • unzip -d /opt/tmp/ home/myhome.zip 解压myhome.zip刀tmp目录下

tar指令

  • zxvf 解包文件
  • zcvf 压缩打包文件

image-20230512110956001

  • 将上诉两个文件, 打包到一个tar.gz文件中

tar -zcvf pc.tar.gz helo.txt sss.txt

  • pc.tar.gz解压到当前目录

tar -zxvf pc.tar.gz

  • pc.tar.gz解压刀指定目录

(1).mkdir /opt/tmp2

(2).tar -zxvf /home/myhome.tar.gz -C /opt/tmp2

用户组

  • 任何一个用户都必须有一个组

image-20230513102646026

文件/目录 所有者

  • ls -ahl 查看所有文件,以及它的创建者

  • chown 用户名 文件名 将该文件 转换为对应的用户名

组的创建

  • groupadd 组名 groupadd monster
  • 创建一个用户fox useradd -g monster
  • 给用户设置密码 passwd fox

image-20230513103703454

第一个root代表用户名, 第二个代表组名

  • 修改文件所在的组

chgrp 组名 文件名

touch orange.txt

chgrp fox orange.txt

创建一个orange的文本, 然后把这个文本的组名换成fox组

其他组

usermod -g 新组名 用户名

usermod -d 目录名 用户名 : 用户需要有进入到目录的权限

权限的基本介绍

image-20230513105300579

这行数据的含义如下

image-20230513105326509

第一位

l代表链接

d代表目录,相当于windows的目录

-代表是普通文件

c代表是字符设备 比如鼠标键盘 cd /dev 就可以看到, 下面的也可以通过这个方式看到

b是块设备, 比如硬盘

第1-3位确定所有者拥有对该文件的权限 –user

第4-6位确定所属组拥有的对该文件的权限 –group

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

如果对应权限没有,利用-来表示缺省

- rwx rw- r--

上面分隔开就可以表示权限

rwx (r代表可读 w代表可写 x代表可以执行)

作用到文件和目录下面的区别

image-20230513110428616

image-20230513105300579

  • 两个root之后的数字代表文件的字节大小, 后面是最后修改的日期 , 最后一个代表的是文件名

修改权限 - chmod

  • 要先切换到对应的用户名那边先。

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

image-20230513111852339

  • -运算符, 代表 除去用户对应输入字母的权限

  • +运算符, 代表 增加用户对应输入字母的权限

  • 当前abc的权限

image-20230513112435746

  • 输入该指令之后chmod u=rwx,g=rwx,o=rx abc
  • 权限变更位如下

image-20230513112455168

输入chmod u-x,g+w abc

image-20230513112703869

所有者权限x消失了,用户组增加了w权限

  • 当然我们也可以通过数字来变更权限

r = 4 w = 2 x = 1,所以 rwx 对应的数字为 = 4 + 2 + 1 = 7

image-20230513112858870

chown - 修改文件所有者

chown tom /home/abc.txt

修改abc.txt的所有者为tom

修改前

image-20230513113132399

修改后

image-20230513113122116

  • -R如果是目录,则使其所有子文件或者目录递归生效

chown -R tom /home/test 将test文件夹里面的所有文本全部变成tom用户的所属

chgrp - 修改文件所属组

类似于上面的chown

  • 将abc.txt的组换成shaolin组

chgrp shaolin /home/abc.txt

  • 将/home/test目录下的所有文件和目录的所有组全部变成shaolin组

chgrp -R shaolin /home/test

组的总结

  • 如果想要对目录的文件进行修改, 我们必须先获得对应文件夹的执行权限
  • 如果我们有x权限,但是没有r权限,那么这个文件夹不能用ls操作, 但是可以cd到这个文件(而且我们也可以用vim
  • 对于一个目录, 如果你没有w权限, 那么你就不能就目录里的文件进行删除,和创建文件

image-20230514160753450

crond任务调度

  • 指定系统在某一个时间调度。
  • 指定系统定时调度

image-20230514162502238

  • 占位符

image-20230514162711101

1
*/1 * * * * ls -l /etc/ > /tmp/to.txt(*/1 代表每1min都执行一次)

image-20230514163107233

image-20230514163052523

cd/tmp/里面,发现生成了一个to.txt , 如果暂时还没有生成, 我们可以等一伙

  • 最后一个* 代表星期几

特殊符号的说明

image-20230514163727308

  • 星期和日期尽量不要同时选

一个小的案例

  • 我们先创建一个文本my.sh(还要把my。sh的权限修改为有x, chmod u+x)
  • vim my.sh 输入date >> /home/mycal cal >> /home/mycal
  • crontab -e */1 * * * * my.sh
  • 最后效果为

image-20230514170338156

案例二(我还没做,到时候装了数据库再说)

image-20230514171039076

其他crontab指令

  • crontab -r : 终止任务调度
  • crontab -l:列出当前有那些任务调度

image-20230514170957165

image-20230514170948449

at指令

  • 基本介绍

  • image-20230514171200073

  • 拓展 :ps -ef 检测当前的进程

    • 结合过滤语句可以查看是否存在atdps -ef | grep atd

at命令选项

image-20230514171801752

  • at的时间定义

image-20230514172118480

  • 先输入时间指令
  • 然后再输入命令指令

image-20230514173315561

  • 要退出的话,连续敲击ctrl + D

atq可以查看当前系统执行工作任务

再输入命令的时候,打错了要输入ctrl + backspace

删除一个at进程, atrm 5(5 是他对应的编号)

linux 磁盘分区

image-20230515153704104

image-20230515153925596

  • 挂载 (mount):

    lsblk 查看挂载内容
    lsblk -f 查看挂载

  • 分区(IDE硬盘 和SCSI硬盘)目前基本上都是SCSI硬盘

image-20230515154509526

  • uuid 分区的唯一标识符

image-20230515155025026

增加硬盘示例

image-20230515155108654

新增一个newdisk, 然后把他挂载到分区1

  • 增加一个快硬盘(右击对应虚拟机, 然后点击硬盘添加。)

  • 分区指令 fdisk /dev/?

image-20230515155747169

  • 之后还需要再进行格式化 , 具体操作为

image-20230515160027830

image-20230515160431126

挂载

image-20230515160535402

卸载

image-20230515160719390

  • 如果利用命令行挂载,重启之后,之前挂载的内容会失效

    想要永久挂载

    image-20230515160917755

​ 将你要挂载的内容加入到里面

​ 第一个数字:0/1 = 备份/不备份,第二个数字:2/1/0 = 根目录/其他目录文件检查/不检 查

image-20230515161206690

  • 对于第一个位置 ,你可以填写uuid, 也可以写它的地址 ,第二个位置为挂载到的地点, 后面几个就先照抄我们还没有学

磁盘情况查询

df -h 查看磁盘的情况

  • 如果使用率超过了80%,那么需要清理硬盘,或者增加硬盘

  • 查看指定目录的磁盘占用情况,默认为当前目录

  • 使用du -h --max-depth=1来查看磁盘的文件个数

image-20230515162009026

image-20230515162456559

磁盘情况-实用命令

  • 统计opt目录下文件个数

image-20230515162722318

grep过滤, 可以使用正则表达式, “^-“ 代表匹配前面为”-“的字符串

  • 统计opt文件夹下目录的个数

grep过滤 , 可以使用正则表达式,”^.”代表匹配前面任意一个字符串

image-20230515162943471

  • 统计/opt文件夹下文件的个数,包括子文件夹里的

    ls -lR /opt 目录下全部文件, wc -l可以统计个数

    ls -lR /opt | grep “^.” | wc -l

  • image-20230515163443478

  • tree可以显示文件内的所有内容, 但是要下载sudo yum install tree

image-20230515163726702

NAT网络原理图

image-20230515165045620

vmnet8可以跟linux虚拟机通讯

但是虚拟机不能ping vmnet8 ,是因为windows里面会有防火墙

image-20230515165525475

能上网, 是因为无线网卡做了代理

查看网络ip和代理

自行看65集就好

linux网络环境配置

  • 自动获取, 登录之后ip地址就会发生改变

image-20230515170707217

image-20230515170918777

从自动分配变成static

image-20230516151017037

  • 这一节就是教你怎么修改成静态ip的

  • 网络服务生效 service network restart 或者选择 reboot

设置主机名 和hosts映射

  • hostname - 查看当前主机名

  • 修改主机的名字vim /etc/hostname

image-20230516142523551

  • 那么如何通过主机名来查找主机

  • image-20230516143434265

  • 你只要在etc/hosts里面写入ip地址空格主机名,这样就可以通过主机名来访问了

它的原理为如下

image-20230516143942597

  • 先找网络域名服务器, 在按照该图来进行修改

image-20230516144200859

  • 如果某个人把你的etc/hosts修改为如下信息, 那么就会出现dns域名劫持

image-20230516144340815

  • 查看一个网站的ip地址可以使用ping 网站名称

想要修改hosts文件,可以用记事本管理员模式打开, 然后打开到C:\Windows\System32\drivers\etc\hosts

Linux进程

pid: 进程号(每一个程序分配一个ID号)

image-20230516151848444

显示系统的执行进程

ps指令

image-20230516151949132

User 代表进程用户名

CPU 程序占用CPU百分比

MEM 占用实际物理内存的百分比

YSZ 占用虚拟内存的大小(KB)单位, 下面那个也是

VSZ 占用物理内存的大小(KB)单位,

STAT 当前运行的状态 s代表休眠r正在运行 Z 僵尸进程 T 被跟踪或者停止 D短期等待

start 进程的开始时间

TIME 占用的cpu时间

command 启动这个进程的名字(也就是进程)

TTY 终端的名称 , 缩写

image-20230516152346986

实例

  • 要求以全格式查看所有进程, 已经进程的父进程

ps -ef

-e显示所有进程 -f全格式

ppid 代表父进程, 父进程为0 代表没有父进程

sshd 父进程信息

ps -ef | more sshd

终止进程

image-20230516153714487

killall会把子进程也给干掉

四个实践

image-20230516153837280

  • 踢掉某一个用户 (注意不能用root的时候用su -alan,要直接新开一个shell来登录
    • ps -aux | grep sshd
  • 终止远程登录服务
    • image-20230516155231085
    • 这个进程号代表xshell的进程
    • 重新启动指令 /bin/systemctl start sshd.service
  • 终止多个gedit killall gedit
  • 强制删除一个进程(因为有一些进程杀不掉) kill -9 xxxx

查看进程树pstree

pstree 显示进程

  • 选项

    • -p 显示进程号

      image-20230516155543174

    • -u 显示进程的用户信息

      image-20230516155607212

服务进程

image-20230516155900357

  • 指令

image-20230516155848640

  • etc/init.d还可以通过该指令查看

image-20230516160002842

停止掉网络服务之后, 就不能够在连接xshell

service network stop: 可以让xshell连接不到服务器

service network restart: xshell连接上

打开和关闭自启动

setup打开这个管理界面

image-20230516160327392

  • 带上*号的会自启动

  • 取消星号 摁下空格

  • tab移动光标来退出

运行级别

image-20230516170223204

  • 多数选择3

chkconfig指令

image-20230516170629907

image-20230516171056890

  • 输入chkconfig –level 3 network off 来关闭某个级别的网络服务

image-20230516171101595

敲击chkconfig –level 3 network on之后

image-20230516171233340

systemctl指令(明天学)/ 后天(昨天游泳了):swimmer:

  • 基本指令

image-20230518154330934

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

  • firewalld.service 防火墙的名称

image-20230518154259349

image-20230518154312007

image-20230518154424204

  • systemctl [start | stop | restart | status] 服务名

systemctl status firewalld 查看防火墙的状态

  • 如果想要将某个东西可以关闭或者开启自启动,要用enable或者disable

防火墙的原理

防火墙可以理解为筛子,通过预先设置的大小,来过滤掉不符合尺寸的服务

  • 没有防火墙的时候, 外面的东西就可以随便进入

防火墙

image-20230724122724783

image-20230724122807869

  • 打开或者关闭端口但是同时不关闭防火墙

image-20230518160030406

查看协议 netstat -anp | more ,最左侧的数据就是协议

在修改端口状态之后,还有重新载入

image-20230518160249899

firewall-cmd --permanent --add-port=111/tcp 注意这里的firewall结尾是没有d的

firewall-cmd --reload

image-20230518160752435

  • 查看防火墙是否存在

    firewall-cmd –query-port=111/tcp

  • 关闭之后

image-20230518160902340

防火墙是 yes 才能够被访问到

image-20230625112314948


image-20230625112324723

image-20230625112425647

image-20230625112438681

动态监控进程

top指令 , 不同于ps ,他是动态的监控

选项

-d 秒数 指定top命令每隔几秒钟更新,默认是3秒

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

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

image-20230518161751226

通过指定监控进程id

image-20230518161610873

第一个数字代表系统时间

第二个数字代表运行时间

第三个代表使用的用户

第四个代表负载均衡(三个负载加起来,除以3 》 0.7说明电脑配置要升级一下了)

  • 交互操作说明

image-20230518162103794

  • 监控xxx用户, 方法 : 先输入top 回车, 然后再输入u 在输入用户名,回车即可

    之前没有alan进程,但是我们又登录了alan就新增了一个进程

image-20230518163032902

  • 终止指定进程 方法 : 输入top回车, 然后再输入k回车, 再输入要结束的id进程号

  • image-20230518163231249

  • 再按下9, 强制删除(型号量)

image-20230518163244507

image-20230518163323100

netstat指令

输入 netstat -an

image-20230518163519203

proto : 协议

netstat -anp 会更加详细(会显示哪个进程再调用)

local address and foreign address之间的关系

local是linux的地址, foreign是windos的地址(这里要看本机的情况而定)

image-20230518164139574

  • 如果关闭连接之后
  • 状态是先变成time-Wait 后面才会没有(因为tcp协议会暂时以为是只是网络不好)
  • 查看sshd服务的信息 netstat -anp | grep ssh

rpm管理

  • 介绍

image-20230518164911922

rpm -qa | grep xx 查询已安装的rpm列表

image-20230518165010229

image-20230518165023300

image-20230518165152222

rpm -q firefox

image-20230518165228534

rpm -qi firefox

image-20230518165319466

rpm -al firefox

image-20230518165424630

  • 查询文件所属的包

    rpm -qf /etc/passwd

image-20230518165710126

  • 删除rpm包

image-20230518165807424

强制删除 $rpm -e –nodeps foo 因为存在其他软件,需要依赖于这个安装包

  • 安装rpm包

    rpm -ivh RPM包全路径名称

    image-20230518170005403

yum指令

image-20230518170511733

yum list | grep xx查看yum服务器是否又需要安装的软件

yum install xxx下载安装

配置

  • tomcat 安装

    步骤如下:

image-20230519150409019

[Apache Tomcat/8.5.88](http://192.168.202.138:8080/)

然后就可以访问了

image-20230519152248621

  • 在apa // 的webapps 的root中输入文件

192.168.202.138:8080/wjh.html

/opt/tomcat/apache-tomcat-8.5.88/bin,它的路径为

  • 注意使用之前要先开启./startup.sh

mysql安装

下载文件:

[wget](https://so.csdn.net/so/search?q=wget&spm=1001.2101.3001.7020) http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

(65条消息) 韩顺平——linux下的mysql安装过程(完全按照视频流程来的)成功版_快乐本乐的博客-CSDN博客

可以参考以上链接安装

shell编程快速入门

1
2
#!/bin/bash
echo "hello,world~"
  • 直接写脚本名称。运行 但是得加上执行权限

  • 使用sh + 脚本名称 就可以不需要加上权限x

    image-20230518171847762

系统变量

image-20230518171951253

image-20230518172413937

image-20230518172427077

  • vim : set nu 可以查看行号

image-20230518172611279

设置环境变量

image-20230519150025794

定义环境变量要在/etc/profile文件中。

export之后, 要source /etc/profile文件,才可以显示出来文件

  • shell的补充

    shell脚本的多行注释(字符串要独立写为一行)

    1
    2
    3
    开头打这个:<<!

    结尾打这个!

位置参数变量

image-20230519153407645

在shcode文件夹中建立一个sh文件

image-20230519153720474

  • 输入部分指令之后,得到一下的结果

image-20230519153803222

预定义变量

image-20230519154100220

$! 后台最后一个运行的进程的进程号结果为

shell - 运算符

image-20230519154542299

  • 案例一(还有没有开始弄)

案例二

image-20230519160135767

image-20230519160124338

shell 判断

image-20230519160827175

  • 过程

    中括号和语句之间要有空格

image-20230519161029957

image-20230519180822403

  • 如果要写一个为空的判断, 中括号之间必要要有空格(空判断为false)
  • 如果只在中括号中输入字符, 那么条件为真, 因为非空返回true

条件判断

image-20230519181941468

image-20230519182000153

流程控制

image-20230519182236352

  • 需要注意的是,这里的其他输入的是*, 而不是“*”.
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
case $1 in
"1")
echo "1"
;;
"2")
echo "2"
;;
*)
echo "5"
;;
esac

for

image-20230519184205657

while

image-20230519184121248

read

image-20230520142137748

image-20230520142443008

  • 通过这种方式就可ui理解read函数

函数

image-20230520142603619

image-20230520142731563

  • dirname

自定义函数

image-20230520142840366

image-20230520143032557

综合实战

image-20230520144832152

image-20230520145411988

  • 备份数据库

image-20230520145718349

  • 删除源文件, 然后打包

image-20230520150317285

-exec继续执行 命令 {}前面指令得到的内容 \;结尾符号

image-20230520150506395

自己的实战复习

  • 时间
1
2
3
4
#!/bin/bash
BACKUP=/root/shcode
DATETIME=$(date +%Y-%m-%d_%H%M%S)
touch ${BACKUP}/${DATETIME}.sh
  • date代表当前的日期, 后面的代表时间分钟秒数,还有小时分钟和秒数。

image-20230520151707190

日志管理

image-20230520153222128

  • 重要的任务

image-20230520153338241

lastlog 不要用cat查看, 直接打入lastlog就好了

ulmp 不要用cat 用who就好了

原理图

  • /etc/rsyslog.conf文件里面有一个后台程序,会自动的生成这些日志

image-20230520154102859

  • 查看rsyslog是否存在

    ps -aux | grep rsyslog

    ps -aux | grep -v rsyslog 反向匹配(选择不含有rsyslog的)

    image-20230521142403019

  • 查看所有进程状态

    systemctl list-unit-files | grep "rsyslog"

  • 日志类型

image-20230520155917438

  • 日志级别

image-20230520155326718

一个日志的格式为*.*,第一个*代表日志的类型(具体参考第一张图片),第二个*代表日志级别

image-20230520155710048

  • 对于一个日志它可以这么查看, 第一个代表时间, 第二个代表用户,第三个代表程序或者服务,第四个发生的事件

日志管理服务(自定义)

  • 第一步 vim /etc/rsyslog.conf

  • 第二步 然后找到一个最后的一个日志类型信息,打入*.*,然后输入/etc/log/wjh.log

  • 然后reboot

    image-20230521143904131

  • 当我输错秘密的时候, 就会产生一下的文件

image-20230521144119246

日志轮替(把旧的日志文件改名等操作,换成新的)

image-20230521144413309

这个文件规定了轮替的规则

但是也可以单独的给某个日志指定策略

image-20230521144541993

image-20230521144818686

logrotate。log文件的规则如上。

自定义的方法

image-20230521145049833

image-20230521145234326

image-20230521145502254

我们再自定义日志文件的时候,可以把它写到/etc/logrotate.d的目录下。没必要一股儿脑的全部写到/etc/logrotate.conf配置文件中

我自己写了一个文件为wjh.log

1
2
3
4
5
6
7
8
9
/var/log/wjh.log
{
missingok
daily
copytruncate
rotate 7
notifempty
}

日志轮换机制

image-20230521150100024

image-20230521150212116

它会又一个crond 的后台程序, 然后回用logrotate 然后对/etc/logrotate.d

或者是/etc/logrotate.conf来处理

内存日志

  • 查看内存日志, 他是写入内存的,而不是文件

image-20230521150410432

linux定制(先过)

总的思路

image-20230521152307561

备份 - 实体机做快照

image-20230521153142100

image-20230521153837239

restore 回复

image-20230521154545118

image-20230521155219024

Nginx 命令

以下指令都是再sbin目录下运行

/usr/local/nginx/sbin

  • ./nginx -v ,显示nginx的版本

  • ./nginx -t 检查语法

  • ./nginx 启动nginx

image-20230723163209633

  • ./nginx stop 停止服务

image-20230723163722696

lrzsz 指令

这是可以用来传输文件的指令

image-20230724114528812

  • 他会传输到当前的文件夹里面

image-20230724115418717