Linux入门

概述

  • Linux内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时处于个人爱好编写的一个操作系统。
  • 目前市面上比较知名的发行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSE

安装

Linux文件系统

  • 一切皆文件的思想不仅是在Linux,其他操作系统也一样
  • 例如我们通过鼠标键盘操作电脑,这个都会被整合成一个文件。在ubuntu中都会映射成一个文件

Linux文件

  • Linux系统中一切皆文件。

Linux目录结构

  • Linux有家目录和根目录,Linux的家目录就类似于Windows系统中的文件资源管理器的目录

image-20240828101715171

image-20240828101953157

  • Linux的根目录就像Windows系统的计算机那个目录

image-20240828101752108

image-20240828102023397

image-20240828102033682

Linux目录具体介绍

  • 对Linux根目录具有的文件进行介绍
  • bin目录:bin是binary即二进制的意思,在里面存放一些命令。以前该目录是存放二进制文件的,现在就是存放命令和一些脚本文件(可以被点击查看)
  • boot:boot目录里面存放的是ubuntu操作系统中一些核心的密钥文件或者配置文件,我们一般不会认为的操作这里面的东西

  • cdrom:cdrom目录是光驱目录,如果你的电脑里面有插光盘,并且光盘里面有文件,那么光盘里面的文件就会被放到这个目录来

  • dev:dev目录是存放设备的目录,里面存放cpu、磁盘等,也就是将硬件也映射成了一个文件并保存起来
  • etc:etc是环境目录,在这个目录主要是进行一些设置,这个目录里面有大量的系统工具比如ssh
  • home: home目录是家目录是存放用户的文件,如果有多个用户,那么家目录就有多个文件夹,每个文件夹的名字都对应一个用户名。然后点击某个用户名的文件夹就可以看到桌面那些目录。这也是默认的安装路径
  • lib、lib32、lib64、libx32:这些都是依赖文件,设备依赖、文件依赖都会放到这些文件夹里面
  • media:media目录是媒体设备的目录,音响、耳机这些设备都会被映射成文件放到该目录下
  • mnt:mnt目录是挂载一些临时存储的设备,例如u盘,系统读取到u盘的文件就会存放到该位置
  • opt:opt目录是专门提供给我们安装软件的
  • proc:proc目录是其实就是内存,ubuntu将内存分成几块,然后做一个映射
  • root:最高管理员。为了防止一些误操作,如删库等操作,这个一般是没有权限的。如果想使用root权限,则需要输入密码。密码正确后就可以进入该文件了,一些操作也有权限了
  • run:运行的程序都会在run目录下对应
  • sbin:设计到bin以前都表示二进制文件,现在基本上表示命令文件,s表示super表示超级命令
  • snap:snap目录存放的是快照,操作系统内部也有安全设置,与VM的快照区别开
  • srv、tmp、var:这三个目录都是用于存文件
    • srv存的文件是系统服务自己的文件
    • var主要是存运行产生的log日志
    • tmp主要存放临时文件,不久会自动清除掉
  • sys:sys的意思就是System系统的意思,存放操作系统的系统文件
  • usr:用户的目录与home目录区别
    • usr是存放用户公共的文件
    • home目录是存放用户私有的文件

Linux系统管理

防火墙

  • 防火墙是管理网络端口的,ubuntu默认会开启22号端口。用于远程连接。如过开启了防火墙,除了22号端口之外,其他端口都是用不了的
  • 如果需要用到端口服务,这时就要关闭防火墙了,对于图形化界面的ubunutu中,如果直接从设置找是不太好找的。这时候就需要借助命令。
  • 这里介绍一下,在该文件目录下,就是使用的服务
    • 查看服务的方法:查看/usr/lib/systemd/system目录下的文件列表,该目录下每个文件都对应一个服务。
    • cd /usr/lib/systemd/system

image-20240828105205284

  • 这里介绍systemctl命令
1
2
3
4
systemctl start 服务名    #开启服务
systemctl stop 服务名 #停止服务
systemctl restart 服务名 #重启服务
systemctl status 服务名 #查看服务状态

关闭网络管理服务

  • 开启和关闭网络管理服务(使用终端进行操作)
1
sudo systemctl status NetworkManager
  • 显示为运行的转态,这时会进入到这个页面里面,如果要退出页面按q即可

image-20240828105756551

  • 关闭网络管理服务,关闭了该服务网络依然存在,只是不能很好的管理网络,因为关闭的是网络关联服务
1
sudo systemctl stop NetworkManager

image-20240828110030689

  • 启动网络管理服务
1
sudo systemctl start NetworkManager

image-20240828110214111

关闭防火墙

  • 这里继续介绍几个关于systemctl的命令,用于设置后台服务的自启动配置
  • 基本语法:
1
2
3
systemctl list-unit-files			#查看服务开机启动状态
systemctl disable service_name #关掉指定服务的自动启动
systemctl enable service_name #开启指定服务的自动启动

查看防火墙状态

1
sudo systemctl status ufw

image-20240828110651811

关闭防火墙

1
sudo systemctl stop ufw

image-20240828110822563

关闭自启动

1
sudo systemctl disable ufw

image-20240828110926732

注意:这只是为了学习演示操作,学习过后尽量还原

关机重启操作

  • 这里先介绍一个命令sync,功能描述:将数据由内存同步到硬盘中
    • 这个命令主要是在以前电脑不够智能的时候需要使用
  • 现在电脑足够智能,在执行关机或重启命令时自动处理必要的清理和同步操作。因此绝大多数情况,直接关机重启,无需sync命令

  • 现在介绍关机和重启的一些命令

1
2
3
4
5
halt    			关闭系统,但是电脑不会断电
poweroff 关闭系统并断点,等同于shutdown -h now
reboot 重启,等同于shutdown -r now
sudo shutdown -h 1 定时关机,表示一分钟之后关机
sudo shutdown -c 取消定时关机
  • 但是现在的关机重启直接有图形化操作,那些命令最多是定时关机用得上

image-20240901141413003

修改主机名

  • 主机名,在终端中会显示出主机名

image-20240901141616295

  • 修改主机名的命令hostnamectl,使用命令修改后的主机名不会马上更改,而是要重启之后才能生效
1
sudo hostnamectl --static set-hostname 新名称

image-20240901141950241

  • 重启之后马上生效

image-20240901142215647

APT软件包管理器

  • APT(Advanced Packaging Tools)是Debian及其派生Linux的软件包管理器,可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。
  • 注意:ubuntu就是属于Debain系列的
  • 如果使用的是Centos这一红帽系列的,那么其包管理器叫做RPM软件包和Yum在线安装工具

  • 打开终端,输入apt,系统将把apt的使用方式打印出来

image-20240903164753127

  • 当有些命令不存在的时候,apt软件包管理器会对其进行提示
  • 告诉用户怎么安装,只要把这个命令复制一下就可以进行安装了

image-20240903164908309

  • 如果要删除工具,也可以使用apt命令
1
sudo apt remove net-tools

Linux操作使用

帮助手册

  • 使用帮助手册后,会在命令行会出现可选命令和功能的介绍

  • 查看手册页说明文档的方式

    • 这个是查看一个完整的帮助
    • 查看手册页说明文档的方式
1
man man
  • 输入该命令后就会出现手册,但是这个手册的内容太多了

image-20240903165449467

  • 这时就可以添加一些选项,查找你需要使用的某个命令的具体功能

image-20240903165747219

文件目录

pwd命令—绝对路径

  • pwd命令是显示当前工作目录的绝对路径,pwd的全名为print working directory打印工作目录
  • 基本语法:pwd
  • 示例:
1
2
3
4
5
6
7
myheart@aaa:~$ pwd
输出:
/home/myheart

myheart@aaa:~/all_arch$ pwd
输出:
/home/myheart/all_arch

cd、ls命令—切换、查看目录

  • cd命令就是切换目录
    • cd命令后面可以跟相对路径类似于cd ..回到上一级目录
    • cd命令还可以跟绝对路径类似于cd /home/path切换到指定目录
    • cd ~回到home目录,~表示home目录
    • cd -表示回到上一次所在目录,并非上一级目录
    • cd -P跳转到实际物理路径,而非快捷方式路径
  • ls命令就是查看当前目录的所有文件
    • ls -l还可以简写ll详细展示了当前目录下所有文件的详细信息
      • drwxr-xr-x像这种开头为d表示文件夹
      • -rw-r--r--像这种开头为-表示的是文件
    • ls -a可以展示隐藏文件
      • 在Linux中隐藏文件都是以.开头,例如.bashrc
      • 在Linux中./表示当前文件路径,../表示上一级文件路径
  • 还要介绍/表示根目录,下图就是根目录

image-20240828102033682

  • 所以cd /就是切换文件目录到根目录

  • 当使用cd已经选择了一个文件路径时,可以先不要使用ENTER键进入到目标目录再使用ls查看该目录下有什么,可以cd /path/然后按一下TAB键即可显示目标路径下的所有文件

  • 示例1,使用cd /path +TAB

image-20240908202101256

  • 示例2,ls -l:

image-20240908203841315

  • 示例3:ls -a

image-20240908204046457

mkdir命令—创建目录

  • mkdir:Make directory建立目录

  • mkdir -p: 创建多个文件夹

    • 例如:mkdir -p xiyouji/qujing/tudi

image-20240910085136750

touch创建空文件

  • 基本语法
    • touch + 文件名称,例如:touch qujing/tudi/sunwukong.txt

cp复制文件

  • 基本语法:cp source dest:复制source文件到dest
1
cp sunwukong.txt ../
  • cp -r:递归复制整个文件夹
1
cp -r qujing ~/linux_learn/

Linux用户管理

  • 用户管理一般是针对服务器,多人使用的一个电脑,对私人的电脑没太大关系
    • 应用场景1:企业开发,多人协同(也会有多人使用相同的低权限用户)
    • 应用场景2:框架协调,gitlab、mysql、redis

用户管理

添加新用户

  • 添加新用户必须要有比较高等级的权限

  • 使用adduser添加新用户

  • 例如:添加一个新用户

1
2
sudo adduser 用户名
sudo adduser tangseng
  • 这时需要设置一个关于新添加用户的一个密码,用于登录该用户等

设置修改密码

  • 修改用户的密码需要相对较高的权限
  • 修改设置密码的命令:passwd 用户名

  • 例如:

1
sudo passwd tangseng
  • 输入完指令后就会提示你输入密码

查看用户

  • id查看用户是否存在
  • 基本语法id 用户名

  • 例如:

    • uid=1000(myheart): 用户 myheart 的用户 ID (UID) 是 1000。

      gid=1000(myheart): 这是用户 myheart 的组 ID (GID),即用户默认所属的组。

      groups=1000(myheart): 用户属于的组列表,myheart 组是用户的主要组。

1
id myheart

image-20240911082648737

  • 再如:
1
id bbb

image-20240911082709872

  • 如果要查看更多用户信息,可以输入下面指令查看cat /etc/passwd

image-20240911082956011

切换用户

  • 切换用户的权限就相对比较小
  • 格式:su - 用户名
  • 例如:
1
su - level0
  • 输入该命令后就会提示你输入level0用户的密码,输入成功后就会进入用户了
  • 不同的用户区别使用的home目录不一样,每个用户的PATH路径不一样

删除用户

  • 格式:
1
2
3
userdel 用户名 	#删除用户单保存用户主目录
userdel -r 用户名 #用户和用户主目录,都删除
加入参数 -r :删除用户的同时,删除与用户相关的所有文件
  • 例如:
1
sudo userdel tangseng
  • 没使用-r参数的时候就会出现home文件目录下的tangseng还在

image-20240911083812781

  • 删除之后再使用命令sudo adduser jinchanzi,就会出现继承的情况

image-20240911084556202

修改用户

  • 格式:
1
2
usermod -l 新用户名 老用户名
usermod -d /home/新用户名 -m 新用户名

用户组管理命令

  • 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同
    • 如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建
    • 用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新

groupadd新增组

  • 基本语法:groupadd 组名
  • 示例:
    • 添加一个xitianqujing
1
sudo groupadd xitianqujing

groupdel删除组

  • 基本语法:groupdel 组名

  • 示例:

1
sudo groupdel xintianqujing

groupmod修改组

  • 基本语法:groupmod -n 新组名 老组名
  • 示例:
1
sudo groupmod -n xitian xitianqujing

usermode 修改用户组

  • 在Linux和Unix系统中,每个用户都有一个组和可能的多个附加组
  • 用户的主组在用户创建时被指定,默认与用户名称相同,当创建一个新文件或目录时,默认情况下,这些文件或目录会被分配给用户的组

image-20240911085914735

  • 示例:
1
sudo usermod -g xitian wukong

将用户添加到附加组

  • 这个冒号后面就代表了附加组

image-20240911090201262

  • 基本语法:
1
usermod -aG 组名 用户名

sudo设置普通用户具有root权限

  • sudo命令首先是借用root权限,是将对应的命令给到root用户去执行

  • 一般只有创建系统时的用户可以使用sudo,如果别的用户需要使用sudo命令就需要给该用户sudo组的权限才能执行

  • 可以查看一下配置文件,发现使用sudo可以执行任何命令

  • 使用sudo vim /etc/sudoers,滑动到该位置

image-20240911091622613

  • 使用命令将用户添加进sudo组,这样就可以执行sudo命令了
1
sudo usermod -aG sudo wukong
  • 可以在配置文件下填写,这样使用sudo命令时就不用输入密码了

image-20240911091958446