WD
Classnote Docs课程课件
16

Linux 操作系统基础

学习目标:

  • 理解 Linux 的发展背景、系统组成和典型使用场景。
  • 掌握 Linux 文件系统、目录结构与常用命令的基本用法。
  • 学会使用 Vim、用户管理、权限管理、进程管理和网络管理等基础能力。
  • 能够完成 Linux 开发环境的基础搭建与远程连接配置。
  • 能够结合课堂案例完成常见服务器操作与排查任务。

本章重点:

  • Linux 的基本概念、发行版差异与系统组成。
  • Linux 文件系统结构与高频命令的使用。
  • 用户、用户组与文件权限的配置思路。
  • 进程、服务、网络端口的查看与管理方法。
  • 开发环境搭建与远程连接的常见流程。
01 / Section

1. Linux 介绍

  • Linux操作系统,被称之为类Unix操作系统,因此,要了解Linux的诞生就得先了解Unix操作系统
text
1. 1965 年开始的 Multics 工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电⽓公司联合发起,目标是开发⼀种交互 式的、具有多道程序处理能⼒的分时操作系统,以取代当时⼴泛使用的批处理操作系统。
2. 在此期间,贝尔实验室的肯•汤普森,在Multics操作系统上开发了一款名为太空遨游的游戏,回到贝尔实验室之后,他也想在自己的计算机上玩这款游戏,于是就自己开发出了一个简化的分时操作系统,这就是Unix操作系统的雏形。
3. 为了提高操作系统的可移植性,肯•汤普森和丹尼斯•里奇共同发明了C语言
  • Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的
  • Linux 是⼀套免费使用和自由传播的类 Unix 操作系统,是一个支持多用户、多任务、支持多线程和多 CPU 的操作系统
  • Linux 继承了 Unix 以网络为核心的设计思想,Linux 的初衷就是要替代UNIX,并在功能和用户体验上进行优化,所以 Linux 模仿了 UNIX(但并没有抄袭UNIX 的源码),使得Linux在外观和交互上与UNIX非常类似。

1.1 Linux 的前世今生

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS、Deepin 等。

MIUI和colorOS有什么不同?

  • UI不一样
  • 预装的软件不一样
  • 应用市场(包管理器)不一样

1.2 Linux 的发行版本

UNIX或者Linux系统大致可以分为以下几个部分

  • 硬件交互的操作系统内核
  • 中间层是shell层
  • 最外层是应用层

内核层: 内核层是 UNIX/Linux 系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源 (硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。

Shell层: Shell 层是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell 解释执行并输出相应结果或者有关信息,所以我们也把 Shell 称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。

1.3 Linux 操作系统的组成

1.4 Linux 的文件系统

在linux中,⼀切皆为文件。文件分为下面的⼀些类型

  • 普通文件(-)
  • 目录文件(d)
  • 链接文件(l)
  • 设备文件(b/c)
  • 管道文件(p)

1.4.1 Linux 操作系统中的文件类型

Linux文件系统目录结构和熟知的windows系统有较大区别,没有各种盘符的概念。根目录只有⼀个/,采用层级式的树状目录结构。

  • /:根目录,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。
  • /bin:bin 就是⼆进制(binary)英文缩写。在⼀般的系统当中,都可以在这个目录下找到linux常用的命令。系统所需要的那些命令位于此目录。
  • /boot:Linux的内核及引导系统程序所需要的文件目录。
  • /dev:dev 是设备(device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。这⼀点和常用的windows,dos操作系统不⼀样。它实际上是⼀个访问这些外部设备的端⼝。可以非常方便地去访问这些外部设备,和访问⼀个文件,⼀个目录没有任何区别。
  • /etc:管理所有的配置文件的目录,比如安装mysql的配置文件my.conf
  • /home:如果建立⼀个用户,用户名是"xx",那么在/home目录下就有⼀个对应的/home/xx路径,用来存放用户的主目录。
  • /lib:lib是库(library)英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此,千万不要轻易对这个目录进行什么操作,⼀旦发生问题,系统就不能工作了。
  • /mnt:可供系统管理员使用,手动挂载⼀些临时设备媒体设备的目录。
  • /root:Linux超级权限用户root的家目录。
  • /sbin:这个目录是用来存放系统管理员的系统管理程序。大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户⽆权限执行这个目录下的命令,sbin中包含的都是root权限才能执行的。
  • /usr:这是linux系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下。 Unix software resource usr。类似windows系统的program files
  • /usr/local:这⾥主要存放那些手动安装的软件,即不是通过或apt-get安装的软件。它和/usr目录具有相类似的目录结构。
  • /usr/share :系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,/usr/share/doc和/usr/share/man帮助文件。
  • /var: “var”是“variable”的缩写,意味着这个目录下的内容是经常变化的,通常用于存储经常变化的文件,比如日志文件、临时文件、缓存文件等。
  • /media:是自动挂载的目录。当把U盘插入到系统中,会自动挂载到该目录下。比如插入⼀个U盘,会自动到/media目录中挂载。
  • /opt:额外安装软件存放的目录。比如mysql的安装包就可以放在该目录。
  • /proc:存储的是当前内核运行状态的⼀系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚⾄可以通过更改其中某些文件来改变内核的运行状态。此外还有/srv /sys三个目录,内核相关目录,不要动。

1.4.2 Linux 操作系统的组织结构

1.5 Linux 与 Windows 对比

目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows,主要区别如下

------

02 / Section

2. Linux 环境搭建

2.1 云服务器

自⼰安装服务器还是麻烦了些,现在⼀般都推荐大家使用云服务器,比较⽅便,价格也不贵。目前国内三家主流云服务器⼚商,阿⾥云、腾讯云、华为云

大家在选择操作系统镜像的时候,最好选择Ubuntu 18.04这个版本,内存选择4G或以上的版本

2.2 虚拟机

硬件要求:

  1. 磁盘空间 50G
  2. 内存 16G +

2.2.1 软硬件准备

  • 软件: 推荐使用VMware,服务器上有相关安装包,安装
  • 镜像: 推荐使用ubuntu 18.04
  • 因为是在宿主机上运行虚拟化软件安装ubuntu,所以对宿主机的配置有⼀定的要求。最起码I5CPU 双核,内存16G及以上。

2.2.2 安装步骤

  • 安装VMWare
  • 打开VMWare,创建新的虚拟机
  • 可以设置虚拟机的配置,内存,CPU,网络以及操作系统镜像等,其中我们将网络连接模式,我们使用NAT模式(默认就是这种模式)

有几点需要注意:

  1. 磁盘空间-50G
  2. 内存:4G(windows有16G的时候)或以上
  1. 网络模式:NAT
  • 启动虚拟机(启动安装过程可能需要等待)

2.3 设置静态 IP

说明,NAT模式默认情况下是DHCP模式,是自动获取IP的,导致每次虚拟机开启之后获取的IP可能会变化,假如项目中后续连接的是虚拟机上面的MySQL,那么MySQL的HOST地址可能会经常改变,这就需要我们经常去改项目中的MySQL的连接地址,比较麻烦。所以需要改为静态IP,也就是每次开机之后IP不会变,这样才能方便我们后面项目的开发。

  • 首先查看虚拟机本地的IP地址,执行命令
shell
  # 查看本地IP地址
  ifconfig
  
  # 注意,如果是刚装的新的虚拟机执行sudo apt update命令报错,执行如下命令之后在执行update命令即可
  sudo apt-get install --reinstall libappstream4
  #更新apt源
  sudo apt update
  
  # 如果提示没有找到这个命令,那么首先需要安装工具
  sudo apt install net-tools
image-20230320230756033
image-20230320230756033
  • 查看网关地址

编辑 ⇒   虚拟网络编辑器 ⇒ VMnet8 ⇒ NAT设置

image-20230320232059604
image-20230320232059604

点击NAT设置,即可看到如下图所示

image-20230320232229532
image-20230320232229532
  • 设置静态IP

设置 ⇒ Network ⇒ 点击齿轮

image-20230320232430561
image-20230320232430561

设置为下图所示

image-20230320232846295
image-20230320232846295

重启虚拟机,查看IP地址是否变化,如果未变,那么设置成功。

如果要使用软件连接服务器,先查看常用工具-远程连接软件这一章,先安装ssh服务

------

03 / Section

3. Linux Shell 命令

3.1 预备知识

我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /,我们需要先知道什么是绝对路径与相对路径。

绝对路径: 路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。

相对路径:路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd ../man或cd man

3.2 实用高频命令

  • pwd :显示当前目录路径
  • ls: list directory contents,显示当前文件夹下的目录或文件
text
常用选项:
 -a 显示所有的文件夹和文件,包括隐藏文件
 -l 以详细的形式显示
例如:
[root@www /]# ls -l
total 12
drwxr-xr-x 2 cskaoyan cskaoyan 4096 Aug 2 20:58 cskaoyan
-rw-r--r-- 1 cskaoyan cskaoyan 0    Aug 2 20:47 main.txt
-rw-r--r-- 1 cskaoyan cskaoyan 14   Aug 2 20:11 test.txt
  • cd : 进入⼀个路径或者目录,绝对路径或者相对路径都可以
text
用法: cd [路径]
cd ~(代表进入当前登录用户的家目录)
cd . 进入当前目录
cd .. 进入上⼀级目录
cd /home 进入根目录下的home目录
  • clear:清理当前页面
  • Tab按键:补全指令(文件或文件夹的名字)
  • ↑或↓键:上一次或下一次使用的指令
  • ctrl+C键:中断当前的指令

3.3 Linux 文件与目录管理

3.3.1 目录文件

  • mkdir: 创建新目录
text
  mkdir 目录的相对路径或绝对路径
  • rmdir: 删除空目录
text
  rmdir 目标目录的相对路径或绝对路径
  • rm: 移除文件或目录
text
  -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  -i :互动模式,在删除前会询问使用者是否动作
  -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
  • cp: 复制文件或目录
text
   cp [-adfilprsu] 来源档(source) 目标档(destination)
   -a:相当于 -pdr 的意思,⾄于 pdr 请参考下列说明;(常用)
   -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身
   -p:连同文件的属性⼀起复制过去,而非使用默认属性(备份常用)
   -r:递归持续复制,用于目录的复制行为;(常用)
  • mv: 移动文件与目录,或修改文件与目录的名称(重命名)
text
   mv [-fiu] source destination
   -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
   -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
   -u :若目标文件已经存在,且 source 比较新,才会覆盖 (update)

我们可以使用 *man [*命令*]* 来查看各个命令的使用文档,如 :man cp。

3.3.2 普通文件

  • 创建文件
text
  touch: 目标文件的相对路径或绝对路径
  • 查看文件内容
  1. cat命令: 以只读的⽅式打开⼀个文件。可以加 -n 表示带上行号(适合查看文件内容比较少的)
  1. more命令:和cat功能类似,不过是以分⻚的形式⼀⻚⼀⻚显示数据
text
     more [选项]  目标文件
     选项:
         +n: 从笫n行开始显示
         -c: 从顶部清屏,然后显示
     分页查看命令:
     空格: 向后翻一页
     b: 键就会往回(back)⼀⻚显示
  1. less: 也用来分⻚显示数据,但是功能比more强大。并不会⼀次性将全部文件读取才显示,而是根据显示的需要加载对应的数据。
text
     less [选项] 目标文件
     选项:
         -f :强迫打开特殊文件,例如外围设备代号、目录和⼆进制文件
         -m :显示类似more命令的百分比
         -N :显示每行的行号
     分页查看命令:
         f 向后翻⼀⻚
         d 向后翻半⻚
         h 显示帮助界面
         q 退出less 命令
         u 向前滚动半⻚
         b 向前滚动一页
         y 向前滚动⼀行
  1. head: 查看⼀个文件,取开头的⼀部分内容
text
     head -n 目标文件,表示查看目标文件的前n行内容,比如 head -5 a.txt
  1. tail:查看⼀个文件的尾部内容
text
     tail -n 目标文件,查看文件的最后n行内容,比如 tail -5 a.txt
     tail -f filename,尾部持续不断地输出内容。Control + c退出
     例如:tail -5f filename(在以后的工作中,查看系统,应用程序的日志最常见的一个命令)
  • 重定向和追加
  1. echo: 输出内容到控制台。
text
     echo $PATH 输出Linux的环境变量到控制台
  1. \>命令:输出重定向(会将原来的内容覆盖)
shell
     echo hello > a.txt 将字符串hello, 写入a.txt文件
     ls -l > a.txt 将目录信息,写入a.txt文件
     cat a.txt > b.txt(文件可以存在,可以不存在) 将a.txt文件内容写入b.txt文件中
  1. \>>命令:追加(不会覆盖原文件的内容,追加到底部)
shell
     echo hello >> a.txt 将字符串hello, 追加 写入到a.txt文件
     ls -l >> a.txt  将目录信息,追加 写入a.txt文件
     cat a.txt >> b.txt(文件可以存在,可以不存在) 将a.txt文件内容写入b.txt文件中
  • 压缩与解压缩

tar是用来建立,还原备份文件的工具程序,它可以加压缩,解压备份文件内的文件。

shell
tar 
-c:产⽣.tar文件
-v:显示详细信息
-z:打包同时压缩
-f:指定压缩后的文件名
-x:解压.tar文件
压缩: tar -zcvf combine.tar.gz 1.txt
解压: tar -zxvf combine.tar.gz -C java/
-C 表示解压到指定目录

如果需要解压和压缩为 .zip 格式的文件,那么需要安装zip和unzip命令

shell
sudo apt install zip

# .zip文件的压缩(如果是目录文件的压缩,需要参数 -r)
zip (-r) xxx.zip xxx

# 解压
unzip xxx.zip
04 / Section

4. Vim 文本编辑器

4.1 文本编辑

Ubuntu默认没有安装vim,需要先安装vim工具。

text
sudo apt install vim

vim有三种模式:命令模式(Command mode)、插入模式(Insert mode)、末行模式(Last Linemode)。

  • 命令模式
text
  通过指令 vim filename 进入命令模式。除此之外,还有⼀些其他的参数,比如:
  -R: 把指定的文件以只读的⽅式放入vim编辑器中
  +: 打开文件,并把光标置于最后⼀行的⾸部
  +n: 打开文件,并把光标置于第n行的⾸部
  
  命令模式快捷键:
  
  删除:
  	  x: 删除光标所在位置的字符
      dd: 删除光标所在行
      ndd: 删除当前行后n行文本(包括此行)
      dG: 删除光标所在行⼀直到文件末尾的所有内容
      D: 删除光标位置到行尾的所有内容
  删除的内容此时并没有被真正删除,而是在剪切版中,按下 p 键,可以将删除的内容粘贴回来。
      
  光标移动:
  	w: 光标移动⾄下⼀个单词⾸
      e: 光标移动⾄下⼀个单词尾
      b: 光标移动⾄上⼀个单词⾸
      gg: 光标移动到文件开头
      G: 光标移动⾄文件末尾
      nG: 光标移动到第n行,n为数字
      0或^:光标移动⾄当前行的行⾸
      $: 光标移动⾄当前行的行尾
  	
  • 插入模式
text
  在命令模式下,通过按下i、I、a、A、o、O这6个字⺟进入插入模式,不同的字⺟代表不同的进入⽅式。
  i: 在当前光标位置前面插入随后输入的文本,光标后的文本相应向右移动
  I: 在光标所在行的行首插入随后输入的文本
  o: 在光标所在行下面插入新的⼀行,然后光标停在空行⾸,等待输入文本
  O: 在光标所在行上面插入新的⼀行,然后光标停在空行⾸,等待输入文本
  a: 在当前光标位置后面插入随后输入的文本,光标后的文本相应向右移动
  A: 在光标所在行的行尾插入随后输入的文本

按下ESC键离开插入模式,进入命令模式

  • 末行模式
text
  在命令模式下,按下: 键进入末行模式。
  在该模式下,可以使用⼀系列的指令,完成保存、离开vim编辑器等功能。
  
  :wq 保存并退出vim编辑器
  :wq! 保存并强制退出vim编辑器
  :q 不保存退出
  :q! 不保存强制退出
  :w 保存不退出
  :w! 强制保存不退出
  :w filename 另存到filename文件
  ZZ 直接退出

三种模式之间的关系

05 / Section

5. 用户和权限管理

Linux系统是⼀个多用户、多任务的操作系统。多用户是指在linux操作系统中可以创建多个用户,而这些多用户⼜可以同时执行各自不同的任务,而互不影响

在Linux系统中,会存在着以下几个概念:

  • 用户名: 每个用户在操作系统中,都具有唯一用户名
  • 用户所属的组:多个用户可以属于同一个用户组。
  • 用户的家目录:在/home目录下,与该用户的用户名一致的目录。

5.1 用户管理

5.1.1 添加用户

  • sudo useradd [选项] 用户名
text
sudo useradd test
注意这种⽅式创建出来的没有家目录,我们创建的时候需要带参数
sudo useradd -m test: -m 表示在 /home目录下创建⼀个家目录
sudo useradd -m -s /bin/bash test: 表示指定shell版本是我们熟悉的bash
  • 设置用户密码
text
  sudo passwd [用户名]
  • 切换用户
text
  su [用户名]

5.1.2 删除用户

sudo userdel [用户名]

-r: 不仅会删除该用户,还会删除该用户对应的家目录

5.2 用户组管理

  • 添加组

groupadd [groupname]

text
创建用户的时候加入组: useradd -m -s /bin/bash -g [groupname] [username]
  • 查看用户及组信息

id 用户名

  • 修改用户所属组

usermod -g [groupname] [username]

5.3 切换到 root 用户

老是写sudo麻烦,没写的时候老是容易被拒绝

image-20250627101344598
image-20250627101344598
shell
sudo -i
image-20250627101454245
image-20250627101454245

切换回用户

image-20250627101659108
image-20250627101659108

5.4 文件权限管理

5.4.1 权限及命令

text
ls -l
total 40
#文件信息 文件数 用户      组名   大⼩  ⽉份 ⽇期 时间 文件名
drwxr-xr-x 2   cskaoyan cskaoyan 4096  Aug  2  23:52 cskaoyan
prw-r--r-- 1   cskaoyan cskaoyan 0     Aug  2  23:43 fifo_file
-rw-r--r-- 1   cskaoyan cskaoyan 26825 Aug  3  00:25 main.txt
-rw-r--r-- 1   cskaoyan cskaoyan 33    Aug  3  00:37 test.txt
drwxr-xr-x 3   cskaoyan cskaoyan 4096  Aug  3  01:27 xxx

前10位字符的说明:

  • 第1位:-表示是⼀个普通的文件;d表示是⼀个目录;
  • rwx:分别代表Read、Write、Execute即读、写、执行权限,这个顺序不会变,如果没有权限的话就用-代替
  • 第2-4位:表示文件所有者的对于文件所具有的权限
  • 第5-7位:表示和文件所有者同组的其他用户对文件所具有的权限
  • 第8-10位:文件其他组用户拥有的权限

我们可以使用chmod命令,手动修改文件权限

  • 第一种方式
text
  chmod u=rwx,g=rw,o=r filename
  u:所有者 g:所有组 o:其他组,a代表全部,没有就用空格替代
  • 第二种方式
text
  r=4,w=2,x=1 rwx = 4 + 2 + 1 = 7
  chmod 751 等价于 u=rwx,g=rx,o=x

5.4.2 案例

  • 新建⼀个police组和⼀个gang组
  • police组新增⼀个成员叫刘⼩磊,另⼀个成员⼩警,gang组新增⼀个成员叫张大松,另⼀个成员强哥
  • 将刘⼩磊和张大松的分组对调
  • 刘⼩磊创建⼀个文件,写下:葵涌码头,⻰⿎滩收货。该文件权限自⼰可以读写,同组其他人员没有权限读写,其他组可以查看
  • 张大松创建⼀个文件,写下:有内⻤,终⽌交易。该文件权限自⼰可以读写,同组其他人员没有权限读写,其他组可以读写
  • 将刘⼩磊的账号销毁
text
#第⼀步
sudo groupadd police
sudo groupadd gang
#第⼆步
sudo useradd -m -s /bin/bash -g police liuxiaolei
sudo useradd -m -s /bin/bash -g police xiaojing
sudo useradd -m -s /bin/bash -g gang zhangdasong
sudo useradd -m -s /bin/bash -g gang qiangge
#给定密码
sudo passwd liuxiaolei
sudo passwd xiaojing
sudo passwd zhangdasong
sudo passwd qiangge
#第三步 卧底
sudo usermod -g police zhangdasong
sudo usermod -g gang liuxiaolei
#第四步 卧底传递情报
su liuxiaolei
sudo echo "葵涌码头,⻰⿎滩收货" > liuxiaolei.txt
chmod 704 liuxiaolei.txt
su zhangdasong
sudo echo "有内⻤,终⽌交易" > zhangdasong.txt
06 / Section

6. 进程管理

6.1 查看进程

Linux系统中查看进程使用情况的命令是ps命令,但是ps命令一般都不会单独使用

text
常⻅选项:
-e:显示所有进程
-f:全格式
a:显示终端上的所有进程
u:以用户的格式来显示进程信息
x:显示后台运行的进程

⼀般常用格式为ps -ef或者ps aux两种。显示的信息大体⼀致,略有区别。

text
UID:用户ID
PID:进程ID
PPID:⽗进程ID
C:CPU用于计算执行优先级的因⼦。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越
   ⼩,表明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU时间
CMD:完整的启动进程所用的命令和参数
image-20210712175605494
image-20210712175605494
text
USER:用户名称
PID:进程号
%CPU:进程占用CPU的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用的虚拟内存大⼩(单位:KB)
RSS:进程占用的物理内存大⼩(单位:KB)
TT:终端名称(缩写),若为?,则代表此进程与终端⽆关,因为它们是由系统启动的
STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的
优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停⽌等
STARTED:进程的启动时间
TIME:CPU时间,即进程使用CPU的总时间
COMMAND:启动进程所用的命令和参数,如果过⻓会被截断显示

ps -ef 与 ps aux的区别:

  • 如果想查看进程的⽗进程ID和完整的CMD命令,可以使用ef
  • 如果想查看进程的CPU占用率和内存占用率,可以使用aux

如果还想进一步筛选想要查询的目标进程信息,可以使用管道命令

text
#搜索匹配进程
ps -ef | grep [搜索内容]

6.2 终止进程

kill [选项] 进程号

text
选项:
-9:操作系统从内核级别强制杀死⼀个进程
-15:可以理解为操作系统发送⼀个通知告诉应用主动关闭

6.3 服务管理

服务本质上来说也是⼀个进程,只不过是在后台运行。监听着某⼀端⼝,等待该端⼝的请求到来,比如ssh服务监听着22端⼝,mysql服务监听着3306端⼝;

systemctl start/stop/restart/status/reload 服务名称

text
#比如关闭ssh服务
systemctl stop sshd
07 / Section

7. 网络管理

7.1 查看网络设置

shell
ifconfig

# 如果提示没有该命令,可以安装该命令
sudo apt install net-tools

7.2 查看网络端口占用

  • netstat
shell
 -a:显示全部
 -n:以数字的形式显示
 -p:显示该连接被哪个应用程序占用PID
eg:
netstat -anp | grep 3306
  • lsof -i: 端⼝号

7.3 测试网络是否正常

shell
ping [目的ip或者域名]

7.4 本章小结

------

shell
# 在Linux操作系统中,应该要掌握的一些常见的命令(面试中可能会问的)
pwd ls cd

# 1. vim的掌握是必须的
# 2. 权限的掌握是必须的
# 3. 日志的查看是必须要会的(工作中经常会用的)
cat | less more | tail -nf xxx.log

# 4. 搜索进程
ps -ef | grep pid|name
ps aux | grep pid|name
# 5. 关闭进程
kill -9 

# 6. 查看端口号是否被占用
netstat -anp | grep port 
(windows: netstat -ano | findstr 3306)

# 7. 类似于任务管理器,查看当前系统的运行情况
top

# 8. grep
搜索,在其他指令之后 指令|grep xxx
08 / Section

8. 常用工具

8.1 远程连接软件

安装软件,使得我们可以通过ssh协议远程连接Linux服务器。

什么是ssh协议?

SSH 为 Secure Shell 的缩写,由 IETF 的⽹络工作⼩bai组(Network Working Group)所制定;SSH为建⽴在应用层和传输层基础之上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他⽹络服务提供安全性的协议

如何使用ssh协议远程连接服务器?

  • ⾸先需要在目标服务器上安装ssh服务(Ubuntu 16 默认自带了这个服务)
shell
#查看ssh服务是否启动
ps aux|grep sshd
#如果出现sshd进程则表示已经启动,如果没有出现那么执行下面的命令
#更新apt源
sudo apt update
#安装ssh
sudo apt install openssh-server
#安装完之后再次查看sshd是否已经启动,如果没有启动的话执行以下命令启动
sudo service ssh restart


# 注意,如果是刚装的新的虚拟机执行sudo apt update命令报错,执行如下命令之后在执行update命令即可
sudo apt-get install --reinstall libappstream4
  • 在目标服务器上安装ssh服务之后需要在本机也安装ssh客户端的软件,可以安装的ssh协议客户端软件有很多,例如xshell、SecrueCRT、Iterm、Iterm2等等
image-20260514003751433
image-20260514003751433

8.2 远程文件传输

需要使用ftp软件实现,本地主机和远程服务器主机的文件传输。

FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之⼀。FTP协议包括两个组成部分,其⼀为FTP服务器,其⼆为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端,通过FTP协议访问位于FTP服务器上的资源

如何使用?安装 winscp , filezila 或者是 transmit 软件即可。

------

09 / Section

9. 开发环境搭建

在Linux上 安装应用程序,一般有这几种方式

shell
# 1. 通过包管理器来安装


# 2. 通过解压包来安装


# 3. 通过源码来安装(需要先下载源码,然后自己编译)

9.1 JDK 环境搭建

  • 从oracle官网下载linux的jdk17,之后用winscp工具等将jdk17上传到linux机器上
  • 解压tar.gz到某个目录下
shell
sudo mkdir /usr/local/java
cd /usr/local/java
sudo tar -zxvf jdk-17_linux-x64_bin.tar.gz
sudo mv jdk-17.0.10/ jdk
  • 配置JDK的环境变量
  1. 进入配置文件 sudo vim /etc/profile
  1. 编辑文件,在文件末尾添加环境变量
shell
     export JAVA_HOME=/usr/local/java/jdk
     export CLASSPATH=.:$JAVA_HOME/lib
     export PATH=$JAVA_HOME/bin:$PATH
  1. 退出文件编译之后,执行如下命令,让配置文件生效
text
     source /etc/profile
  1. 执行命令 java -version 查看JDK环境变量是否已经搭建好

9.2 Tomcat 的安装

shell
#先把tomcat压缩包丢进服务器⾥面去
mkdir /usr/local/java/tomcat
# 进入/usr/local/java/tomcat 目录
sudo tar -zxvf apache-tomcat-9.0.87.tar.gz

# 赋予权限
sudo chmod -R 777 /usr/local/java/tomcat

cd bin
#启动tomcat
./startup.sh

9.3 MySQL 环境搭建

  • 使用apt工具安装mysql
shell
  sudo apt update
  sudo apt install mysql-server
  #如果是ubuntu 16.04 那么此时会要求你输入密码,如果是18.04,那么就直接完成安装了

9.3.1 本地连接修改 Root 密码

Ubuntu18.04 安装完之后修改mysql密码,我们先使用mysql的一个默认用户名和密码登录,需要先找到这个用户名和密码

text
sudo cat /etc/mysql/debian.cnf
image-20210713105119021
image-20210713105119021
  • 以上一步中得到的用户名和密码登录mysql,修改root用户的密码为我们想要的密码
sql
#登陆mysql5.7
mysql -u debian-sys-maint -p
#修改用户名密码
use mysql;#连接到mysql数据库
update user set authentication_string=password('123456') where user='root' and Host ='localhost'; #修改密码123456是密码
update user set plugin="mysql_native_password" 
flush privileges;
quit

#如果是mysql8则执行以下语句
mysql -u debian-sys-maint -p
#修改用户名密码
use mysql;#连接到mysql数据库
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
flush privileges;
quit
  • 重启mysql服务
text
#重启mysql
systemctl restart mysql

9.4 远程连接

如果我们需要,远程用navicat基于mysql协议连接,虚拟机中的mysql怎么办呢?

9.4.1 基于 MySQL 协议

  • 修改被连接的mysql服务的配置,进入/etc/mysql/mysql.conf.d目录,用vim打开配置文件
  • 在mysql数据库中,增加远程连接的root用户,并赋予其权限
mysql
# mysql5.7
mysql -uroot -p
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
exit;

# mysql8
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%';
FLUSH PRIVILEGES;
exit;

重启MySQL服务

text
#重启mysql
systemctl restart mysql

然后就可以通过navicat,基于mysql协议远程连接mysql服务了

9.4.2 基于 SSH 协议

我们还可以基于ssh协议,远程连接Mysql,此时

然后点击测试连接,测试连接是否成功

10 / Section

实战练习

<!-- 实战练习内容已分离到 practices/markdown/16-linux-practice.md -->

建议先完成本章重点内容复习,再进入配套练习。 练习建议按照:基础命令 -> 用户权限 -> 进程网络排查 -> 环境搭建 的顺序完成。