在新建虚拟机的时候选 Red Hat Enterprise Linux 7 64位 这个版本

网络连接的三种模式:

桥接模式

虚拟系统可以和外部系统通讯,但是容易造成IP冲突

NAT模式

网络地址转换模式,虚拟系统可以和外部系统通讯,不造成IP冲突(使用的是代理)

主机模式

独立的系统

桥接模式、NAT模式和主机模式是虚拟机网络连接方式的三种常见模式。

  1. 桥接模式(Bridge Mode):虚拟机的网络接口直接连接到物理网络接口上,虚拟机就像连接在物理网络的一台计算机一样。这种模式下,虚拟机可以与物理网络中的其他计算机进行通信,也可以通过路由器或交换机连接到互联网。桥接模式需要分配一个独立的IP地址给虚拟机。

  2. NAT模式(Network Address Translation Mode):虚拟机的网络接口通过主机的网络接口进行通信,主机作为虚拟机和外部网络之间的中间人,对虚拟机发送的请求进行地址转换。这种模式下,虚拟机可以访问互联网,但是外部网络不能直接访问虚拟机。NAT模式下,虚拟机共享主机的IP地址,因此虚拟机之间不能直接通信。

  3. 主机模式(Host-Only Mode):虚拟机的网络接口只能与主机的网络接口进行通信,虚拟机无法访问外部网络。这种模式下,虚拟机之间可以互相通信,但是无法与外部网络进行通信。主机模式下,虚拟机和主机共享一个子网,并分配给虚拟机一个独立的IP地址。

这三种网络连接模式各有优缺点,应根据实际需求选择合适的模式。例如,如果需要让虚拟机与外部网络进行通信,可以选择桥接模式或NAT模式;如果需要在虚拟机之间建立专用网络,可以选择主机模式。

image-20230710154920347

安装设置

安装vmtools

1.进入centos

2.点击vm菜单的->install vmware tools

3.centos会出现一个vm的安装包,xx.tar.g

4.拷贝到/opt

5.使用解压命令tar,得到一个安装文件 ,进入目录:cd/opt[进入到opt目录] 解压命令:tar-zxvf xx.tar.gz

6.进入该vm解压的目录,/opt目录下 cd vmware...

7.安装:使用命令 ./vmware-install.pl 来安装

8.全部使用默认设置即可,就可以安装成功

9.注意:安装vmtools需要有gcc. 使用命令gcc -v 来查看gcc的版本

设置共享文件夹

image-20230710193652694

具体步骤

1.菜单 -> vm-> setting,如图设置即可注意:设置选项为always enable, 这样可以读写了

2.windows和centos可共享d:/myshare目录可以读写文件了

3.共享文件夹在 centos 的 /mnt/hgfs/ 下

注意事项和细节说明

1.windows和contos就可以共享文件了,但是在实际开发中,文件的 上传下载是需要使用 远程方式完成的

2.远程方式登录

Linux目录结构

基本介绍

  1. linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是 根目录 “/” ,然后在此目录下再创建其他的目录。
  2. 在Linux世界里,一切皆文件

image-20230711093640677

具体的目录结构

  • /bin :**[常用]** (/usr/bin、 /usr/local/bin)

    是Binary的缩写,这个目录存放着最经常使用的命令

  • /sbin : (/usr/sbin、/usr/local/sbin)

    s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

  • home :**[常用]**

    存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名

  • /root :**[常用]**

    该目录为系统管理员,也称作超级权限者的用户主目录

  • /lib

    系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所 有的应用程序都需要用到这些共享库

  • /lost+found

    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件

  • /etc :**[常用]**

    所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库

  • my.conf /usr[常用]

    这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下 的program files目录。

  • /boot :**[常用]**

    存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件

  • /proc :**[不能动]**

    这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信 息

  • /srv :**[不能动]**

    service缩写,该目录存放一些服务启动之后需要提取的数据

  • /sys:**[不能动]**

    这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs

  • /tmp

    这个目录是用来存放一些临时文件的

  • /dev

    类似于windows的设备管理器,把所有的硬件用文件的形式存储

  • /media :**[常用]**

    linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识 别的设备挂载到这个目录下

  • /mnt :**[常用]**

    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上, 然后进入该目录就可以查看里的内容了。d:/myshare

  • /opt

    这是给主机额外安装软件所存放的目录。如安装ORACLE数据库就可放到该目录下。默认为空

  • /usr/local :**[常用]**

    这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序

  • /var :**[常用]**

    这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件

  • /selinux : [security-enhanced linux]

    SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置.

远程登录到Linux

XShell:连接Linux,远程登录Linux

XFTP:进行文件的上传和下载

Xshell:

image-20230711101039256

XFTP:

image-20230711102406612

vi和vim

vi和vim的基本介绍

Linux 系统会内置 vi 文本编辑器

Vim 具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性, 方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

vi 和 vim 常用的三种模式

正常模式

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

插入模式

按下 i,I,0,O,a,A,r,R 等任何一个字母之后才会进入编辑模式,通常按 i

命令行模式

按 Esc再输入冒号(:),在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作则是在此模式中达成的。

vi 和 vim 基本使用

使用 vim 开发一个 Hello.java 程序,保存,步骤…

  1. 输入命令 vim Hello.java 进入 vim 界面

  2. 在 vim 界面中写 java程序

    image-20230711141940222

vim三种模式的切换

image-20230711142033081

vi 和 vim 快捷键

  • yy :拷贝当前行

    拷贝当前行向下的5行 -> 5yy,并 粘贴(输入p)。

  • dd:删除当前行

    删除当前行向下的5行 -> 5dd

  • 命令行下 /关键字,回车查找

    输入n就是查找下一个:在文件中查找某个单词

  • setnu:设置文件的行号

  • set nonu:取消文件的行号

  • 编辑/etc/profile文件,在一般模式下,使用快捷键到该文档的最末行[G]和最首行[gg]

  • 在一个文件中命令行下输入”hello”,在一般模式下,撤销这个动作 -> u

  • 编辑/etc/profile文件,在一般模式下,并将光标移动到,输入20,再输入shift+g

vi / vim 键盘图

image-20230711142910602

Linux实操

关机 和 重启

命令:

基本介绍
shutdown -h now 现在立刻关机
shutdown -h 1 一分钟后关机
shutdown -r now 现在重启计算机
halt 关机,作用和上面一样
reboot 现在重新启动计算机
sync 把内存的数据同步到磁盘

在关机和重启之前必须要 sync 把内存的数据同步到磁盘中。

用户登录注销

基本介绍

  • 登录时尽量少用root帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可以向用 普通用户登录,登录后再用 su-用户名 命令来切换成系统管理员身份.

  • 在提示符下输入 logout 即可注销用户 ,logout 注销指令在图形运行级别无效,在运行级别3下有效.

用户管理

基本介绍

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

添加用户

  • 基本语法

    useradd 用户名

  • 应用案例 案例1:添加一个用户 milan,默认该用户的家目录在 /home/milan —-> useradd milan

  • 细节说明

    • 当创建用户成功后,会自动的创建和用户同名的家目录

    • 也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录

      例如: useradd -d /home/test jack :jack的家目录在 test 下

指定/修改密码

  • 使用 passwd 用户名 来给用户设置密码,例如 :passwd jack
  • 如果不设置用户名,只有 passwd ,则修改的是当前登录用户的密码

删除用户

基本语法

userdel 用户名

  • 删除用户 milan,但是要保留家目录:userdel milan
  • 删除用户以及用户主目录:userdel -r tom

注意:一般情况下,保留家目录

查询用户信息

id 用户名

例如:查询root的用户信息

image-20230711154708594

注意:当用户不存在时,返回 无此用户

image-20230711154754161

切换用户

su - 用户名

在操作 Linux 中,如果当前用户的权限不够,可以通过 su - 用户名 来切换到高权限用户

切换到 root :su - root

注意:

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

查看当前用户/登录用户

whoami 或者 who am i

image-20230711155216519

用户组

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

新增组

groupadd 组名

例如:新增 byxl 组:groupadd byxl

删除组

groupdel 组名

例如:删除 byxl 组:groupdel byxl

创建用户时直接加上组

useradd -g 用户组 用户名

例如:创建 8112用户 到 byxl组 :useradd -g byxl 8112

修改已经创建的用户到另一个组

usermod -g 用户组 用户名

例如:修改 8112用户 到 jack组 :usermod -g jack 8112

用户和组相关文件

/etc/passwd 文件

  • 使用 vim /etc/passwd 进入这个文件

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

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

/etc/shadow 文件

  • 使用 vim /etc/shadow 进入这个文件
  • 口令的配置文件
  • 每行的含义 -> 登录名 : 加密口令 : 最后一次修改时间 : 最小时间间隔 : 最大时间间隔 : 警告时间 : 不活动时间 : 失效时间 : 标志

/etc/group 文件

  • 使用 vim /etc/group 进入这个文件
  • 组(group)的配置文件,记录Linux包含的组的信息
  • 每行含义 -> 组名 : 口令 : 组标识号 : 组内用户列表

Linux实用指令

指定运行级别

基本介绍

运行级别说明:

0:关机

1:单用户【找回丢失密码】

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

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

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

5:图形界面

6:系统重启

常用运行级别是 3 和 5 ,也可以指定默认运行级别,命令:init [级别]

CentOS7以前,在 /etc/initab/中可以指定,CentOS7后对指令进行了简化:

multi-user.target 指的是第三个级别 analogous to runlevel 3

graphical.target 指的是第五个级别 analogous to runlevel 5

指令

  • 查看当前默认级别:systemctl get-default
  • 设置默认级别:systemctl set-default multi-user.target :设置默认级别为第三个级别

帮助指令

man 获得帮助信息

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

案例:查看 1s 命令的帮助信息 man ls

image-20230712094548572

help指令

基本语法:help 命令

功能描述:获得 shell 内置命令的帮助信息

image-20230712094656088

文件目录类指令

pwd 指令

基本语法:pwd

功能描述:显示当前工作目录的绝对路径

image-20230712094911591

ls指令

基本语法:ls [选项] [目录或是文件]

常用选项:

  • -a :显示当前目录所有的文件和目录,包括隐藏的
  • -l :以列表的方式显示信息
  • -la 或 -al :以列表的形式显示所有文件和目录

cd指令

基本语法:cd [参数]

功能描述:切换到指定目录(相对路径/绝对路径)

image-20230712095632908

mkdir指令

基本语法:mkdir [选项] 要创建的目录

功能描述:创建目录

常用选项:-p ,创建多级目录 mkdir -p /home/plant/tree

image-20230712100046766

rmdir指令

基本语法:rmdir [选项] 要删除的空目录

功能描述:删除空目录

使用细节:

  • rmdir删除的是空目录,如果目录下有内容时无法删除的。
  • 如果需要删除非空目录,需要使用rm -rf要删除的目录 比如:rm -rf /home/animal

touch指令

基本语法:touch 文件名称

功能描述:touch 指令创建空文件

image-20230712100725327

cp指令

基本语法: cp [选项] [指定目录]

功能描述:拷贝文件到指定目录

  • 将 /home/animal/dog/hello.txt 文件拷贝到 /home/下,先切换到dog目录下,再进行拷贝

    cp hello.txt /home/test

    image-20230712103505256

  • 递归复制整个文件夹,将 /home/animal整个目录拷贝到 /home/test 下

    cp -r /home/animal /home/test

    image-20230712103849909

使用细节:

强制覆盖不提示:\cp -r /home/animal /home/test

rm指令

基本语法:rm [选项] 要删除的文件或目录

常用选项:

  • -r :递归删除整个文件夹
  • -f :强制删除不提示 rm -rf 文件夹/目录

mv指令

基本语法:

  • 重命名:mv 现在文件名 重命名的文件名
  • 移动文件:mv 文件名 要移动的目录 例如:mv file1 /opt

功能描述:重命名 或 移动文件与目录

cat指令

基本语法:cat 文件名

功能描述:查看文件内容

more指令

基本语法:more 要查看的文件

功能描述:可以分页查看

操作 功能说明
空格键(space) 代表向下翻一页
Enter 代表向下翻一行
q 代表立刻离开 more,不再显示该文件内容
Ctrl + F 向下滚动一屏
Ctrl + B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号

less指令

基本语法:less 要查看的文件

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

操作 功能说明
空格键(space) 向下翻一页
[pagedown] 向下翻一页
[pageup] 向上翻一页
/字串 向下搜寻 [子串]:n -> 向下查找,N:向上查找
?子串 向上搜寻 [子串]:n -> 向上查找,N:向下查找
q 离开 less 这个程序

echo指令

基本语法:echo [选项] [输出内容]

功能描述:输出内容到控制台

  • 使用 echo 指令输出环境变量,比如输出 echo $PATH echo $HOSTNAME

  • 使用 echo 指令输出 hello,world! echo hello,world!

    image-20230712110155366

head指令

基本语法:

  • head 文件 :默认显示文件前10行内容
  • head -n 5 文件 :显示文件前5行内容,例如:head -n 5 /etc/profile

功能描述:用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容

tail指令

基本语法:

  • tail 文件 :默认查看文件最后10行内容
  • tail -n 5 文件 :查看文件最后5行内容
  • tail -f 文件 :实时追踪该文档的所有更新

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

> 指令 和 >> 指令

基本语法:

  • ls -l > 文件 :列表的内容写入 文件 中(覆盖写)
  • ls -al >> 文件 :列表的内容追加到 文件 的末尾
  • cat 文件1 > 文件2 :将 文件1 的内容覆盖到 文件2
  • echo "内容" >> 文件 :追加

功能描述:> 输出重定向,>> 追加

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

    ls -l /home > /home/info.txt 如果没有 info.txt ,则会创建

ln指令

(是L不是i)

基本语法:ln -s [原文件或目录] [软连接名]

功能描述:为某一个文件在另外一个位置建立一个同步的链接(与快捷方式类似)

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

    ln -s /root /home/myroot

  • 删除软链接

    rm /home/myroot 或 强制删除 rm -rf /home/myroot

history指令

基本语法:history

功能描述:显示历史指令记录内容, 下达历史纪录中的指令

注意:

单独运行 history 命令,无需其他选项就可以查阅先前运行的命令。如果有大量的历史记录,则无法正确地看到这些记录。在这些情况下,必须使用诸如 less , more 等的文件视图命令。history | less

image-20230712141649946

清除历史

有时想要删除一些或全部的历史记录

  • history -d <行号> :删除特定命令
  • <history -c> :删除全部历史记录

所有的历史命令记录都存储在每个用户的宿主目录下.bash_history文件里,并且这个文件还可以编辑。

时间日期类

date指令

基本语法:

  • date :显示当前时间
  • date +%Y :显示当前年份
  • date +%m :显示当前月份
  • date +%d:显示当前是哪一天
  • date "+%Y-%m-%d %H:%M:%S" :显示当前的年月日时分秒

image-20230712142225104

功能描述:显示当前日期

实例:

  • 显示当前时间

    • date :Tue May 24 09:29:43 CST 2022

    • date '+%c' :Tue 24 May 2022 09:30:03 AM CST

    • date '+%D' :显示完整的时间 -> 05/24/22

    • date '+%x' 显示数字日期 -> 05/24/2022

    • date '+%T' :显示日期,年份用四位数表示 -> 14:09:31

    • date '+%X' :显示24小时的格式 -> 09:31:31 AM

  • 格式化输出:

    • date +"%Y-%m-%d":2000-12-07
  • apache 格式转换:

    • date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S": 2009-12-05 00:00.37
  • 格式转换后时间游走:

    • date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S" :2007-12-05 00:00.37
  • 按自己的格式输出:

    • date '+usr_time: $1:%M %P -hey' :usr_time: $1:16 下午 -hey
  • 显示时间后跳行,再显示目前日期

    • date '+%T%n%D'
  • 时间加减操作:

    date +%Y%m%d                   # 显示年月日
    date -d "+1 day" +%Y%m%d       # 显示后一天的日期
    date -d "-1 day" +%Y%m%d       # 显示前一天的日期
    date -d "-1 month" +%Y%m%d     # 显示上一月的日期
    date -d "+1 month" +%Y%m%d     # 显示下一月的日期
    date -d "-1 year" +%Y%m%d      # 显示前一年的日期
    date -d "+1 year" +%Y%m%d      # 显示下一年的日期

设定时间

date -s                         # 设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523                # 设置成20120523,这样会把具体时间设置成00:00:00
date -s 01:01:01                # 设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23"   # 这样可以设置全部时间
date -s "01:01:01 20120523"     # 这样可以设置全部时间
date -s "2012-05-23 01:01:01"   # 这样可以设置全部时间
date -s "20120523 01:01:01"     # 这样可以设置全部时间

搜索查找类

find指令

基本语法:find [搜索范围] [选项]

选项 功能
-name<查询方式> 按照指定的文件名查找模式查找文件
-user<用户名> 查找属于指定用户名所有文件
-size<文件大小> 按照指定的文件大小查找文件

功能描述:从指定目录向下递归地便利其各个子目录,将满足条件的文件或者目录显示在终端。

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

    find /home/animal/dog -name hello.txt

    image-20230712144248779

  • 按拥有者:查找 /home 目录下,用户名为 zwj的文件

    find /home -user zwj

    image-20230712144538385

  • 查找 整个 Linux 系统下大于 200M 的文件 (+n 大于 -n 小于 n 等于)

    find / -size +200M

locate指令

基本语法: locate 文件

功能描述:

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

注意:

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

image-20230712145008113

grep 和管道符号 |

基本语法:grep [选项] 查找内容 源文件

功能描述:grep 过滤查找 ;| 表示将前一个命令的处理结果输出传递给后面的命令处理

常用选项:

选项 功能
-n 显示匹配行及行号
-i 忽略字母大小写
  • 在 hello.txt 文件中,查找 “yes” 所在行,并显示 行号

    cat /home/hello.txt | grep "yes"

    grep -n "yes" /home/hello.txt

压缩和解压类

gzip 和 gunzip

基本语法:

  • gzip 文件 :压缩文件,只能将文件压缩为 *.gz 文件
  • gunzip 文件.gz: 解压 文件.gz 这个文件

功能描述:

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

应用案例:

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

    gzip /home/hello.txt

  • 使用 gunzip 解压,将 /home 下的 hello.txt.gz 解压

    gunzip /home/hello.txt.gz

zip 和 unzip

基本语法:

  • zip [选项] xxx.zip 要压缩的内容 :压缩文件和目录
  • unzip [选项] xxx.zip :解压文件

功能描述:

  • zip :压缩文件
  • unzip :解压文件

常用选项:

  • zip 常用选项 -> -r :递归压缩,及压缩目录
  • unzip 常用选项 -> -d<目录> :指定解压后文件的存放目录

应用实例:

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

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

  • 将 myhome.zip 解压到 /opt/tep 目录下

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

tar

基本语法:

tar [选项] xxx.tar.gz 打包的内容 :打包目录,压缩后的文件格式 .tar.gz

功能描述: tar 指令 是 打包指令,最后打包后的文件是 .tar.gz 文件

选项说明:

选项 功能
-c 产生 .tar 打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包 .tar 文件

应用案例:

  • 压缩多个文件,将 /home/animal/dog/hello.txt/home/cat.txt 压缩成 hc.tar.gz

    tar -zcvf hc.tar.gz /home/animal/dog/hello.txt /home/cat.txt

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

    tar -zcvf myhome.tar.gz /home/

  • 将 hc.tar.gz 解压到当前目录

    tar -zxvf hc.tar.gz

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

    mkdir /opt/tmp2

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

    注意: 此时的 -C 指的是建立新的存档

    符号 功能
    -c 建立新的存档
    -v 详细显示处理的文件
    -f 指定存档或设备
    -z 用 gzip 对存档压缩或解压
    -x -x 从存档展开文件

组管理和权限管理

Linux组基本介绍

在linux中的每个用户必须属于一个组,不能独立于组外。

在linux中每个文件有 所有者所在组其它组 的概念。

文件/目录 所有者

一般为文件的创建者,谁创建了该文件,就是该文件的所有者

  • 查看文件的所有者

    • 指令:ls -ahl

      image-20230713103948366

  • 修改文件所有者

    • 指令:chown 用户名 文件名

案例:使用root创建一个文件apple.txt,然后将其所有者修改成zwj

image-20230713104223211

组的创建

指令:groupadd 组名

案例:

创建一个组,monster -> groupadd monster

创建一个用户fox,并放入到 monster组中 -> useradd -g monster fox

image-20230713104627894

文件/目录 所在组

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

  • 查看文件/目录所在组

    指令:ls -ahl

    image-20230713103948366

  • 修改文件所在组

    指令:chgrp 组名 文件名

案例: 使用root用户创建文件 orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改 fruit组。

groupadd fruit
touch orange.txt
chgrp fruit orange.txt

其他组

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

改变用户所在组

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

  • 改变用户所在组
    • usermod -g 新组名 用户名
    • usermod -d 目录名 用户名 改变用户登录的初始目录

注意: 用户需要有进入到新目录的权限。

案例: 将zwj这个用户从原来所在组,修改到 wudang 组。

指令: usermod -g wudang zwj

权限

基本介绍

ls -l 中显示的内容如下:

image-20230713110033265

说明:

  • 第0位:确定文件类型(d,-,I,c,b)
    • |是链接,相当于windows的快捷方式
    • d是目录,相当于windows的文件夹
    • c是字符设备文件,鼠标,键盘
    • b是块设备,比如硬盘
  • 第1-3位:确定所有者(该文件的所有者)拥有该文件的权限。 —User
  • 第4-6位:确定所属组(同用户组的)拥有该文件的权限。 —Group
  • 第7-9位:确定其他用户拥有该文件的权限 —Other

权限的详解

  • rwx作用到文件

    • [r] 代表可读(read):可以读取,查看
    • [w] 代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所 在的目录有写权限,才能删除该文件.
    • 代表可执行(execute):可以被执行
  • rwx作用到目录**

    • [r] 代表可读(read):可以读取,Is查看目录内容
    • [w] 代表可写(write):可以修改,对目录内创建+删除+重命名目录
    • 代表可执行(execute):可以进入该目录
  • Is-|中显示的内容如下: -rwxrw-r--1 root root 1213 Feb 2 09:39 abc

    • 第一个字符代表文件类型:-Idcb
    • 其余字符每3个一组 —>(rwx)读(r)写(w)执行(x)
    • 第一组rwx :文件拥有者的权限是读、写和执行
    • 第二组rw- :与文件拥有者同一组的用户的权限是读、写但不能执行
    • 第三组r– :不与文件拥有者同组的其他用户的权限是读不能写和执行

可以用数字表示: r = 4 , w = 2 , x = 1 因此 rwx = 4+2+1 = 7

其他说明:

内容 说明
1 文件:硬链接数 或 目录:子目录数
root 用户
root
1213 文件大小(字节),如果是文件夹,显示4096字节
abc 文件名

文件及目录权限

修改权限-chmod

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

方式一 :+ - = 变更权限

u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)

指令:

  • chmod u=rwx,g=rx,o=x 文件/目录名
  • chmod o+w 文件/目录名
  • chmod a-x 文件/目录名

案例:

  • 给abc文件的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权

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

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

    chmod u-x,g+w abc

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

    chmod a+r abc

方式二:通过数字变更权限

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

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

案例:

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

    chmod 755 /home/abc.txt

修改文件所有者 - chown

指令:

  • chown 新所有者 文件/目录 -> 改变所有者

image-20230713142244087

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

案例:

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

    chown tom/home/abc.txt

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

    chown -R tom/home/test

修改文件/目录所在组 - chgrp

指令:chgrp newgroup 文件/目录 -> 改变所在组

案例:

  • 将 /home/abc.txt 文件的所在组修改为 shaolin

    groupadd shaolin    # 创建shaolin这个组
    chgrp shaolin /home/abc.txt  #将abc.txt文件所在组修改为shaolin

定时任务调度

crond任务调度

概述

  • 任务调度:是指系统在某个时间执行的特定的命令或程序。
  • 任务调度分类:系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
  • 个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。

命令: crontab [选项]

常用选项:

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

示意图:

image-20230713151428746

快速入门

步骤:

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

  2. 设置个人任务调度:执行 crontab -e 命令

  3. 接着输入任务到调度文件:

    *1 * * * * ls -l /etc/ > /tmp/to.txt -> 每隔1分钟,将查询 /etc/ 重定向到 to.txt 中

五个占位符的说明:

项目 含义 范围
第一个 * 一个小时当中的第几分钟 0-59
第二个 * 一天当中的第几小时 0-23
第三个 * 一个月当中的第几天 1-31
第四个 * 一年当中的第几月 1-12
第五个 * 一周当中的星期几 0-7(0和7都代表星期日)

特殊符号说明:

特殊符号 含义
* 代表任何时间。比如第一个*就代表一小时中每分钟都执行一次的意思。
代表不连续的时间。比如08,12,16* * * 命令,就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如05 * * 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分都会执行命令

注意:星期几和几号最好不要同时出现,因为他们定义的都是天,非常容易让管理员混乱。

案例

  • 每隔1分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中

    */1 * * * * date >> /tmp/mydate

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

    vim /home/my.sh 写入内容: date >> /home/mycal 和 cal >> /home/mycal
    给 my.sh 增加执行权限: chmod u+x /home/my.sh
    crontab -e  写入内容: */1 * * * * /home/my.sh
  • 案例3:每天凌晨2:00将mysql数据库 testdb 备份到文件中。提示:指令为 mysql dump -u root -p 密码数据库&gt;/home/db.bak

    crontab -e
    写入: 0 2 * * * mysqldump -u root -proot testdb > /home/db.bak

crond相关指令

指令 说明
conrtab -r 终止任务调度
conrtab -l 列出当前有哪些任务调度
service crond restart 重启任务调度

at定时任务

基本介绍

  • at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
  • 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
  • at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
  • 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看 ps-ef |grep atd,可以检测atd是否在运行
image-20230713154209297

命令格式:

  • at [选项] [时间]
  • Ctrl + D 结束at命令的输入(输入两次)

at命令选项:

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

at定时任务

at时间定义

at指定时间的方法:

  • 接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。例如: 04:00
  • 使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指 定时间。
  • 采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如:12pm
  • 指定命令执行的具体日期,指定格式为month day(月日)或mm/dd/yy(月/日/年)或dd.mm.yy (日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2021-03-1
  • 使用相对计时法。指定格式为:now+count time-units,now就是当前时间,time-units是时间单位 这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量, 几天,几小时。例如:now+5 minutes
  • 直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

实例:

  • 2天后的下午5点执行 /bin/ls /home

    image-20230713155027698

  • atq命令来查看系统中没有执行的工作任务

    image-20230713155200667

  • 明天17点,输出时间到指定文件内,比如:/root/date100.log

    image-20230713155419035

  • 2分钟后,输出时间到指定文件内,比如:/root/date200.log

    image-20230713155530609

  • 删除已经设置的任务,atrm 编号

    image-20230713155633164

磁盘分区、挂载

Linux分区

原理介绍

  • Lnux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的 文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
  • Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一 个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
image-20230713163837326

硬盘说明

  • Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘

  • 对于IDE硬盘,驱动器标识符为hdx~,其中hd表明分区所在设备的类型,这里是指IDE硬盘 7。x为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),~代表分区, 前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。

    例,hda3表示为 第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。

  • 对于SCSI硬盘则标识为sdx~,SCSI硬盘是用sd来表示分区所在设备的类型的,其余则和 IDE硬盘的表示方法一样。

image-20230713164229272

查看所有设备挂载情况

命令:lsblk 或者 lsblk -f

lsblk

image-20230713164229272

lsblk-f

image-20230713164419128

挂载

如何增加一块硬盘

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

    在【虚拟机】菜单中,选择【设置】,然后设备 列表里添加硬盘,然后一路【下一步】,中间只 有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别)

    image-20230713164658876
  • 步骤2:

    分区命令:fdisk /dev/sdb

    开始对 /sdb分区:

    命令 说明
    m 显示命令列表
    p 显示磁盘分区 同 fdisk -l
    n 新增分区
    d 删除分区
    w 写入并退出

    说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。

image-20230713165148732
  • 步骤3:格式化磁盘

    命令:mkfs -t ext4 /dev/sdb1 其中 ext4是分区类型

  • 步骤4:

    挂载:将一个分区与一个目录联系起来

    命令:mount 设备名称 挂载目录

    例如:mount /dev/sdb1 /newdisk

    命令:umount 设备名称 或 挂载目录

    例如:umount /dev/sdb1 或者 umount /newdisk

注意:用命令行挂载,重启后会失效

  • 步骤5

    永久挂载:通过修改 /etc/fstab 实现挂载

    添加完成后 执行 mount -a 即刻生效

    img

磁盘情况查询

  • 查询系统整体磁盘使用情况

    命令:df -h

image-20230713165825925

  • 查询指定目录的磁盘占用情况

    命令:du -h

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

    选项 说明
    -s 指定目录占用大小汇总
    -h 带计量单位
    -a 含文件
    –max-depth=1 子目录深度
    -c 列出明细的同时,增加汇总值

    实例: 查询 /opt 目录的磁盘占用情况,深度为1

    du -hac --max-depth=1 /opt

    image-20230713170233886

磁盘情况-工作实用指令

  • 统计 /opt 文件夹下文件的个数

    ls -l /opt | grep "^-" | wc -l

    image-20230713170620153

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

    ls -l /opt | grep "^d" | wc -l

    image-20230713170714501

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

    ls -lR /opt | grep "^-" | wc -l

    image-20230713170828798

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

    ls -lR /opt | grep "^d" | wc -l

    image-20230713170915042

  • 以树状显示目录结构 tree 目录。注意:如果没有tree,则使用 yum install tree 安装

    tree /home/

网络配置

基础内容

网络配置

网络配置原理:

image-20230714091426499

查看

查看网络IP和网关:

image-20230714091729517

查看windows环境中的VMnet8网络配置:(ipconfig 指令)

image-20230714091912347

查看Linux的网络配置: (ifconfig 指令)

image-20230714092010373

ping测试主机之间网络连通性

基本语法:

ping 目的主机

功能描述:

测试当前服务器是否可以连接目的主机

实例:

测试当前服务器是否可以连接百度 :ping www.baidu.com

Linux网络环境配置

方法1-自动获取

说明:

登陆后,通过界面的来设置自动获取ip,特点:linux启动后会自动获取IP,缺点是每次自动获取的 ip地址可能不一样。

image-20230714092602757

方法2-指定ip

说明:

直接修改配置文件来指定IP,并可以连接到外网(程序员推荐) 编辑 vim /etc/sysconfig/network-scripts/ifcfg-ens33 要求:将ip地址配置的静态的,比如:ip地址为 192.168.200.128

ifcfg-ens33 文件说明:

DEVICE=eth0    #接口名(设备、网卡)
HWADDR=00:0C:2x:6x:0x:xx     #MAC地址
TYPE=Ethernet     #网络类型
UUID="61240804-a177-4f86-b8ff-881d5ba9d231"    #随机id
ONBOOT=yes     #系统启动的时候网络接口是否有效 (yes/no)
#IP的配置方法 [none|static|bootp|dhcp] (引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)
BOOTPROTO=static
#IP地址
IPADDR=192.168.200.130
#网关
GATEWAY=192.168.200.2
#域名解析器
DNS1=192.168.200.2

image-20230714092807776

注意:配置完成后需要重启网络服务或者重启系统生效

service network restart 或者 reboot

设置主机名和hosts映射

设置主机名

  1. 为了方便记忆,可以给linux系统设置主机名,也可以根据需要修改主机名
  2. 指令 hostname:查看主机名
  3. 修改文件在 /etc/hostname指定 ,使用指令 vim /etc/hostname 中设置主机名
  4. 修改后,重启生效

设置hosts映射

  • Windows中:

    C:\Windows\System32\drivers\etc\hosts 文件中写入即可

    案例:写入 192.168.200.130 hspedu100

  • Linux中:

    /etc/hosts 文件中写入即可

    案例:打开hosts文件 -> vim /etc/hosts ,写入 -> 192.168.200.1 ThinkPad-PC

分析Host、DNS

  • Host

    一个文本文件,用来记录 IP 和 Hostname(主机名) 的映射关系

  • DNS

    • DNS,Domain Name System 的缩写,即域名系统
    • 是互联网上作为域名和IP地址相互映射的一个分布式数据库

案例: 用户在浏览器输入了 www.baidu.com

  1. 浏览器先检查浏览器缓存中有没有该域名解析IP地址,有就先调用 这个IP完成解析;如果没有,就检查DNS解析器缓存,如果有直接 返回IP完成解析。这两个缓存,可以理解为本地解析器缓存
  2. 一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏 览器或操作系统会缓存他的IP地址(DNS解析记录).
    如在cmd窗口中输入
    ifconfig /displaydns :DNS域名解析缓存
    ipconfig /flushdns :手动清理dns缓存
  3. 如果本地解析器缓存没有找到对应映射,检查系统中hosts文件中 有没有配置对应的域名IP映射,如果有,则完成解析并返回。
  4. 如果本地DNS解析器缓存 和 hosts文件 中均没有找到对应的IP, 则到域名服务DNS进行解析域
image-20230714094634359

进程管理

基本介绍

  1. 在LINUX中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)。=>windows=>linux
  2. 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程 则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  3. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

显示系统执行的进程

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

ps详解: ps -aux | grep xxx ,查看系统执行的进程

指令说明:

名称 含义
System V 展示风格
USER 用户名称
PID 进程号
%CPU 进程占用CPU的百分比
%MEM 进程占用物理内存的百分比
VSZ 进程占用的虚拟内存大小(单位:KB)
RSS 进程占用的物理内存大小(单位:KB)
TT 终端名称,缩写
STAT 进程状态, S -> 睡眠,s -> 该进程是会话的先导进程,N -> 进程拥有比普通优先级更低的优先级
R -> 正在运行,D -> 短期等待,Z -> 僵尸进程 ,T -> 被跟踪或者被停止 等等
STARTED 进程的启动时间
TIME CPU时间,即进程使用 CPU 的总时间
COMMAND 启动进程所用的命令和参数,如果过长会被截断显示

案例: 以全格式显示当前所有的进程,查看进程的父进程。查看sshd的父进程信息:ps -ef | grep sshd

ps -ef :以全格式显示当前所有的进程

-e :显示所有进程。

-f :全格式

image-20230714140612124

解析:

BSD风格

UID :用户ID

PID : 进程ID

PPID :父进程ID,

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

STLME:进程启动的时间

TTY:完整的终端名称

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

终止进程 kill 和 killall

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

基本语法:

kill [选项] 进程号 :通过进程号杀死/终止进程

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

常用选项:

-9 :表示强迫进程立即停止:kill -9 105996 ,表示强制终止105996这个进程。

案例:

  • 踢掉某个非法登录用户

    kill 进程号,比如:kill 105996

  • 终止远程登录服务 sshd,在适当时候再次重启 sshd 服务

    kill sshd对应的进程号/bin/systemctl start sshd.service

  • 终止多个gedit编辑器

    killall gedit

  • 强制终止一个终端

    kill -9 bash对应的进程号

查看进程树 patree

基本语法:

pstree [选项] :可以更加直观的来看进程信息

常用选项:

选项 说明
-p 显示进程的 PID
-u 显示进程的所属用户

案例:

  • 以树状的形式显示进程的 pid

    pstree -p

  • 以树状的形式显示进程的所属用户

    pstree -u

服务service管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld,sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。【原理图】

service管理指令

  • service 服务名 [start/stop/restart/reload/status]

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

  • service 指令管理的服务在 /etc/init.d 查看

    image-20230714142242642

案例:

使用 service 指令,查看,关闭,启动 network

注意:在虚拟系统演示,因为网络连接会关闭

指令:

service network status

service network stop

service network start

查看服务名

方式1: setup -> 系统服务,就可以看到全部

setup

image-20230714143247072

方式2: /etc/init.d 看到 service 指令管理的服务

ls -l /etc/init.d

服务的运行级别 runlevel

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

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

开机的流程说明:

image-20230714143638857

CentOS7后运行级别说明

在 /etc/initab 进行了简化,如下:

multi-user.target: analogous to runlevel 3

graphical.target: anlogous to runlevel 5

init 0 :关机

查看默认的运行级别:

systemctl get-default

设置默认的运行级别:

systemctl set-default 运行级别英文.target

chkconfig指令

通过chkconfig 命令可以给服务的各个运行级别设置自启动/关闭

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

注意:Centos7.0后,很多服务使用systemct1管理

基本语法:

  • 查看服务: chkconfg --list | grep xxx
  • chkconfig 服务名 --list
  • chkconfig --level 5 服务名 on/off

案例:

对 network 服务,进行各种操作,把 network 在 3 运行级别关闭,关闭自启动

chkconfig --level 3 network off

chkconfig --level 3 network on

使用细节:

chkconfig 重新设置服务后自启动 或 关闭,需要重启机器 reboot 生效

systemctl管理指令

基本语法:

systemctl [start/stop/restart/status] 服务名 :开启/停止/重新启动/查看 这个服务

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

systemctl 设置服务的自启动状态

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

sytemctl enable 服务名 :设置服务开机启动

systemctl desable 服务名 :关闭服务开机启动

systemctl is-enabled 服务名:查询某个服务是否是自启动的

案例:

查看当前防火墙的状况,关闭防火墙和重启防火墙 => firewalld.service

systemctl status firewalld :查看防火墙的状况

systemctl stop firewalld :关闭防火墙

systemctl start firewalld :重启防火墙

细节:

  • 关闭或者启用防火墙后,立即生效。 [ telnet测试某个端口即可 ]
  • 这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
  • 如果希望设置某个服务自启动或关闭永久生效,要使用systemctl [enable/disable]服务名

打开或关闭指定端口

在真正的生产环境,往往需要将防火墙打开,如果我们把防火墙打开,那么外部请求数据包就不能跟 服务器监听端口通讯。这时,需要打开指定的端口。比如80、22、8080等。

image-20230714150030996

firewall指令

  • 打开端口:firewall -cmd --permanent --add -port=端口号/协议
  • 关闭端口:firewall -cmd --permanent --remove -port=端口号/协议
  • 重新载入,才能生效:firewall -cmd --reload
  • 查询端口是否开放:firewall -cmd --query -port=端口/协议

案例:

  1. 启用防火墙,测试 111 端口是否能 telnet,–> 不能

  2. 开放 111 端口

    firewall -cmd --permanent --add -port=111/tcp ,需要 firewall -cmd --reload

  3. 再次关闭 111 端口

    firewall -cmd --permanent --remove -port=111/tcp ,需要 firewall -cmd --reload

动态监控进程

基本内容

top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以 更新正在运行的的进程。

基本语法:

top [选项]

image-20230714151409794

选项说明:

选项 功能
-d 秒数 指定top命令每隔几秒更新。默认是3秒
-i 使top不显示任何限制或僵死进程
-p 通过指定监控进程ID来仅仅监控某个进程的状态

交互操作说明

操作 功能
P 以CPU使用率排序,默认就是此项
M 以内存的使用率排序
N 以PID排序
q 退出top

案例:

  • 监视特定用户,例如:监视 tom 用户

    top :输入次命令,按回车键,查看执行的进程

    u :然后输入 u 按回车,再输入用户名,即可

监控网络状态

查看系统网络情况 netstat

基本语法

netstat [选项]

选项说明

选项 说明
-an 按一定顺序排列输出
-p 显示哪个进程在调用

案例:

查看服务名为 sshd 的服务的信息

netstat -anp | grep sshd

image-20230714152453567

image-20230714152504040

检测主机连接命令 ping

是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的网线或网卡故障 如:ping 对方ip地址

RPM与YUM

rpm包的管理

rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM 是 RedHat Package Manager(RedHat软件包管理工具)的缩写,类似 windows 的 setup.exe,这一文件格式名称虽然打上 了RedHat的标志,但理念是通用的。

Linux的分发版本都有采用(suse,redhat,centos等等),可以算是公认的行业标准了。

rpm包的简单查询指令

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

案例:看看当前系统,是否安装了firefox

指令: rpm-qa|grep firefox

rpm包名基本格式

一个 rpm 包名:firefox-60.2.2-1.el7.centos.x86_64

名称:firefox

版本号:60.2.2-1

适用操作系统:el7.centos.x86 64

表示:centos7.x 的 64 位 系统

如果是 i686、i386 表示 32 位系统,noarch 表示通用

rpm 包的其他查询指令

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

rpm -qa | more

rpm -qa | grep X [ rpm -qa | grep firefox ]

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

案例: rpm -q firefox

rpm -qf 文件全路径名 :查询文件所属的软件包

rpm -qf /etc/passwd

rpm -qf /root/install.log

卸载 rpm 包

基本语法:

rpm -e RPM包的名称

案例:

删除 firefox 软件包:rpm -e firefox

细节:

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

    如:rpm -e foo

    removing these packages would break dependencies:foo is needed by bar-1.0-1

  • 可以强制删除 foo 这个 rpm 包,可以增加参数 --nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行

    如:rpm -e --nodeps foo

安装rpm包

基本语法:

rpm -ivh RPM包全路径名称

参数说明:

参数 说明
i 即 install 安装
v 即 verbost 提示
h 即 hash 进度条

案例:

卸载和安装 firefox 浏览器

rpm -e firefox

rpm -ivh firefox

yum

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

基本指令:

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

yum list | grep xx :软件列表

安装指定的 yum 包:

yum install xxx :下载安装

案例:

使用 yum 的方式来安装 firefox

rpm -e firefox

yum list | grep firefox

yum install firefox