如何快速入门Linux?

一、Linux 文件与目录结构

1、Linux文件

  • Linux系统中一切皆文件

2、Linux目录结构

image-20240505112246251

目录解释
/(根目录)这是Linux文件系统的最顶层目录,所有其他目录都从这里开始。它包含了系统的所有文件和目录。
/binBinary的缩写,这个目录存放着最经常使用的命令
/sbins是Super User的意思,这里存放的是系统管理员使用的系统管理程序
/home存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
/root该目录为系统管理员,也称作超级权限者的用户主目录
/lib系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found这个目录一般情况下是空的,当系统非法关机时,这里就存放了一些文件
/etc所有的系统管理所需要的配置文件和子目录
/usr这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于Windows下的Program Files目录
/boot这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的文件别放在这里
/proc这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
/srvservice缩写,该目录存放一些服务启动之后需要提取的数据
/sys这是Linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs
/tmp这个目录是用来存放一些临时文件的
/dev类似于Windows的设备管理器,把所有的硬件用文件的形式存储
/mediaLinux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下
/mnt系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以看到里的内容了
/opt这个给主机额外安装软件所摆放的目录。比如你安装一个MySQL数据库则就可以放到这个目录下。默认是空的。
/var这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件
/selinuxselinux是一种安全子系统,它能控制程序只能访问特定文件

二、系统管理操作

1、关闭防火墙
1.ystemctl
  • 基本语法
systemctl start | stop | restart | status service_name
  • 经验技巧:/usr/lib/systemd/system目录下每个文件都对应一个服务。
cd /usr/lib/systemd/system
ls -al

image-20240505111422244

  • 实操案例
  1. 查看网络服务的状态
sudo systemctl status NetworkManager

image-20240505111641061

q可以退回到终端

  1. 停止网络服务
sudo systemctl stop NetworkManager

image-20240505111907756

  1. 启动网络服务
sudo systemctl start NetworkManager

  1. 重启网络服务
sudo systemctl restart NetworkManager

image-20240505133400505

2.systemctl设置后台服务的自启配置
  1. 查看服务开机启动状态
sudo systemctl list-unit-files

image-20240505133832470

  1. 关闭指定服务的自动启动
sudo systemctl disable service_name
sudo systemctl disable NetworkManager # 关闭网络服务自启

image-20240505134852585

  1. 开启指定服务的自动启动
sudo systemctl enable service_name
sudo systemctl enable NetworkManager # 开启网络服务自启

image-20240505134639304

3.关闭防火墙
  1. 临时关闭防火墙
sudo systemctl status ufw  # 查看防火墙状态
sudo systemctl stop utf  # 临时关闭防火墙

image-20240505135349497

  1. 开机启动时关闭防火墙
sudo systemctl enable ufw  # 设置开机时启动防火墙
sudo systemctl disable ufw  # 设置开机时关闭防火墙
sudo systemctl is-enabled ufw  # 查看服务是否开启自启

image-20240505135755150

2、关机重启命令
  1. sync:将数据由内存同步到硬盘中。

    • 现代Linux系统设计足够智能,能够在执行关机或重启命令时自动处理必要的清理和同步操作。因此,对于绝大多数情况,直接使用关机或重启命令即可,而无需手动执行sync。
  2. 关机和重启

    命令解释备注
    halt关闭系统,当前版本Ubuntu不会断电。Ubuntu22.04
    poweroff关闭系统并断电,等同于 shutdown -h now
    reboot重启,等同于 shutdown -r now
    shutdown [选项] 时间-h = halt 关机,不完全等同于halt命令
    -r = reboot 重启
    now 等待多久后关机(时间单位是分钟)

    image-20240505141308329

3、修改主机名
sudo hostnamectl --static set-hostname ubuntu  # 将主机名改为ubuntu
# 终端命令提示符中@之后冒号之前的部分为当前的主机名。如:qingxuly-virtual-machine

image-20240505141725483

  • 修改主机名后,重启生效

image-20240505141831088

4、修改Windows的hosts文件
  1. 修改 windows 的主机映射文件(hosts 文件)
    • 使用 uTools 工具更改hosts文件
    • 复制 C:\Windows\System32\drivers\etc 中的hosts文件到桌面,添加映射后,再剪切到原目录覆盖
192.168.5.101 ubuntu
5、APT软件包管理器

APT(Advanced Packaging Tools)是 Debian 及其派生 Linux 的软件包管理器,可以自 动下载,配置,安装二进制或者源代码格式的软件包,因此简化了 Unix 系统上管理软件的 过程

  1. 输入apt介绍用法
qingxuly@ubuntu:~/桌面$ apt
apt 2.4.12 (amd64)
用法: apt [选项] 命令

命令行软件包管理器 apt 提供软件包搜索,管理和信息查询等功能。
它提供的功能与其他 APT 工具相同(像 apt-get 和 apt-cache),
但是默认情况下被设置得更适合交互。

常用命令:
  list - 根据名称列出软件包
  search - 搜索软件包描述
  show - 显示软件包细节
  install - 安装软件包
  reinstall - 重新安装软件包
  remove - 移除软件包
  autoremove - 卸载所有自动安装且不再使用的软件包
  update - 更新可用软件包列表
  upgrade - 通过 安装/升级 软件来更新系统
  full-upgrade - 通过 卸载/安装/升级 来更新系统
  edit-sources - 编辑软件源信息文件
  satisfy - 使系统满足依赖关系字符串
  1. 案例实操:找不到命令“ifconfig”

image-20240505164131852

三、常用基本命令

1、帮助命令
1.Manual Packages
  1. 查看手册页说明文档的方式
man man
  • 我们常用的文档位于第 1、2、3、7 页

image-20240505164904471

  • 执行 man man 命令,进入手册页浏览模式,左上角会显示 MAN(1),这就是手册页引用格式或 man 引用格式,括号前面是命令(或系统调用等)的名称,括号内是命令所在 的手册页编号。 当存在多个同名但功能不同的命令或调用时,可以通过页编号区分。如:用户命令 write位于第一页,用 write(1)表示,系统调用 write 位于第 2 页,用 write(2)表示。
  1. 描述
  • 手册页(Manual Packages),简称“man pages”,是 Unix 和类 Unix 系统(包括 Linux 和 macOS)上提供程序、函数、命令及文件格式文档的一种方式。手册页是用户和管理员获取命令用法、程序功能、配置文件规范和某些 API 函数描述的重要资源。
2.man 获得帮助信息
  1. 基本语法
man [页编号] [命令或配置文件] (功能描述:获得帮助信息)
  1. 显示说明
信息功能
NAME命令的名称和单行描述
SYNOPSIS怎样使用命令
DESCRIPTION命令功能的深入讨论
EXAMPLES怎样使用命令的例子
SEE ALSO相关主题(通常是手册页)
  1. 案例实操
man ls  # 查看ls命令的帮助信息

image-20240505165933699

man write  # 查看用户命令write的帮助信息

image-20240505170223418

触发系统调用write:

  • 创建write_example.c文件,粘贴如下代码。
  • 运行gcc write_example.c -o write_example命令来编译程序。这将生成一个名为write_example的可执行文件。
  • 运行./write_example命令来运行程序。这将触发系统调用write并将消息写入"output.txt"文件。
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>

int main() {
    const char *message = "Hello, World!";
    int file_descriptor = open("output.txt", O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
    if (file_descriptor == -1) {
        perror("Error opening file");
        return 1;
    }

    ssize_t bytes_written = write(file_descriptor, message, 14);
    if (bytes_written == -1) {
        perror("Error writing to file");
        close(file_descriptor);
        return 1;
    }

    printf("Wrote %ld bytes to file", (long)bytes_written);
    close(file_descriptor);
    return 0;
}
man 2 write  # 查看系统调用write的帮助信息

image-20240505171537343

3.help获取shell内建命令的帮助命令
  1. help内建命令:shell 内建命令是 shell 的一部分,他们没有单独的可执行文件或手册页,这类命令的文 档通过 help 命令访问。

image-20240505172338905

  1. 基本语法:help 命令
  2. 案例实操
help cd  # 查看cd命令的帮助信息

image-20240505172435837

4.常用快捷键

常用快捷键功能
Ctrl + C停止进程
Ctrl + L清屏;彻底清屏是:reset
Ctrl + Q退出
Tab提示(检查是否敲错)
上下键查找执行过的命令
Ctrl + U清除当前敲的命令
2、文件目录类
1.pwd 显示当前工作目录的绝对路径

pwd:print working directory 打印工作目录

  1. 基本语法:pwd
  2. 案例实操
qingxuly@ubuntu:~/桌面$ pwd
/home/qingxuly/桌面
qingxuly@ubuntu:~/桌面$ 
2.ls 列出目录的内容

ls:list 列出目录内容

  1. 基本语法:ls [选项] [目录或是文件]
  2. 选项说明
选项功能
-a全部的文件,连同隐藏档(开头为.的文件)一起列出来(常用)
-l长数据串列出,包含文件的属性与权限等等数据(常用)
  1. 显示说明

image-20240505174650764

  1. 案例实操
ls -al

image-20240505175031687

ll  # 等价于 ls -alF

# -F选项会在文件名后面添加一个符号来指示文件的类型。例如,目录后面会添加一个/,可执行文件后面会添加一个*,符号链接后面会添加一个@等。这样可以让用户更直观地识别文件的类型。

image-20240505175154341

3.cd 切换目录

cd:change directory 切换目录

  1. 基本语法:cd [参数]
  2. 参数说明
参数功能
cd 绝对路径切换路径
cd 相对路径切换路径
cd ~ 或 cd回到自己的家目录
cd -回到上一次所在目录
cd …回到当前目录的上一级目录
cd -P跳转到实际物理路径,而非快捷方式路径
  1. 案例实操

image-20240506121913280

4.mkdir 创建一个新的目录

mkdir:make directory 建立目录

  1. 基本语法:mkdir [选项] 要创建的目录
  2. 选项说明
选项功能
-p创建多层目录
  1. 案例实操
mkdir a  # 创建一个目录
mkdir a/b  # 创建一个目录
mkdir -p e/f/g  # 创建一个多级目录

image-20240506122507633

5.touch 创建空文件
  1. 基本语法:touch 文件名称
  2. 案例实操
touch test.txt
touch a/test.txt

image-20240506122828543

6.cp 复制文件或目录
  1. 基本语法:cp [选项] source dest (复制source文件到dest)

  2. 选项参数说明

选项/参数功能
-r递归复制整个文件夹
source源文件
dest目标文件
  1. 经验技巧:强制覆盖不提醒的方法:
    • \cp a.txt /a/a.txt;执行\cp即可。
    • vim ~/.bashrc 中alias cp=’cp -i’ 前加上”#”注释掉这行,因为复制文件时,会提示是否覆盖。
  2. 案例实操
cp test.txt e
cp -r a e/f

image-20240506124824372

7.rm 删除文件或目录
  1. 基本语法:rm [选项] deleteFile (递归删除目录中所有内容)
  2. 选项说明
选项功能
-r递归删除目录中所有内容
-f强制执行删除操作,而不提示用于进行确认
-v显示指令的详细执行过程
  1. 案例实操
rm test.txt
rm -r a

image-20240506130703453

8.mv 移动文件与目录或重命名
  1. 基本语法
  • mv oldNameFile newNameFile (重命名)
  • mv /temp/movefile /targetFolder (移动文件)
  1. 案例实操
mv a.txt b.txt
mv e/test.txt ./

image-20240506131230585

9.cat 查看文件内容
  1. 基本语法:cat [选项] 要查看的文件 (查看文件内容,从第一行开始显示)
  2. 选项说明
选项功能描述
-n显示所有行的行号,包括空行
  1. 经验技巧:一般查看比较小的文件,一屏幕能显示全的。
  2. 案例实操
cat -n a.txt

image-20240506181138252

10.more 文件内容分屏查看器

more 是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键,详见操作说明

  1. 基本语法:more 要查看的文件
  2. 操作说明
操作功能说明
空格(space)代表向下翻一页
Enter代表向下翻一行
Q代表立刻离开more,不再显示该文件内容
Ctrl + F向下滚动一屏
Ctrl + B返回上一屏
=输出当前的行号
:f输出文件名和当前行的行号
  1. 案例实操
cp ../.bashrc ./  # 复制 .bashrc 文件到当前目录
more .bashrc  # 使用 more 查看文件

image-20240506181948169

11.less 分屏显示文件内容

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

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

  2. 操作说明

操作功能说明
空格向下翻动一页
[pagedown]向下翻动一行
[pageup]向上翻动一行
/字串向下搜寻【字串】的功能;n:向下查找,N:向上查找
?字串向上搜寻【字串】的功能;n:向上查找,N:向下查找
q离开 less 这个程序
  1. 经验技巧:用 SecureCRT 时[pagedown] 和 [pageup] 可能会出现无法识别的问题。
  2. 案例实操:
less .bashrc

image-20240506182804935

12.tail 输出文件尾部内容

tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。

  1. 基本语法:
  • tail 文件 (查看文件尾部 10 行内容)
  • tail -n 5 文件 (查看文件尾部 5 行内容,5 可以是任意行数)
  • tail -f 文件 (实时追踪该文档的所有更新)
  1. 选项说明
选项功能
-n <行数>输出文件尾部 n 行内容
-f显示文件最新追加的内容,监视文件变化
  1. 案例实操
tail -n 1 .bashrc  # 查看文件尾 1 行内容
tail -f a.txt  # 实时追踪该文件的更新;如:echo追加内容可以监控

image-20240506184349560

13.echo 输出内容到控制台
  1. 基本语法: echo [选项] [输出内容]
  2. 选项说明
选项功能备注
-e支持反斜线控制的字符转换如:\\ 输出\本身
\n 输出换行符
\t 输出制表符,即Tab键
  1. 案例实操
echo "hello\nworld"  # 转义符号不生效
echo -e "hello\nworld"  # 转义符号生效

14.>输出重定向和>>追加
  1. 基本语法
  • ls -l > 文件 (列表的内容写入文件中(覆盖写))
  • ls -al >> 文件 (列表的内容追加到文件的末尾)
  • cat 文件1 > 文件2 (将文件1的内容覆盖到文件2)
  • echo “内容” >> 文件 (将输出的内容追加到文件末尾)
  1. 案例实操
ls -l > x.txt  # 列表的内容写入 x.txt
ls -al >> x.txt  # 列表的内容追加写入 x.txt
echo hello >> x.txt  # hello追加写入 x.txt

image-20240506185724499

15.ln 软链接

软链接也称作符号链接,类似于Windows 里的快捷方式,有自己的数据块,主要存放了链接其它文件的路径

  1. 基本语法:ln -s [原文件或目录] [软链接名] (给原文件创建一个软链接)
  2. 经验技巧
  • 删除软链接:rm 软链接名,而不是 rm -rf 软链接名/
  • 查询:通过ll就可以查看,列表属性第1位是 l,尾部会有位置指向
  1. 案例实操
ln -s ~/aa/bb AB
ll
rm AB

image-20240507061644604

16.history 查看已经执行过历史命令
  1. 基本语法:history
  2. 案例实操
history

image-20240507061850002

3、Vi/Vim编辑器

VI 是Unix操作系统和类Unix 操作系统中最通用的文本编辑器

VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计。VIM 与 VI 编辑器完全兼容

sudo apt install vim  # 安装VIM
1.一般模式

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

  1. 常用语法
语法功能描述
yy复制光标当前一行
y数字y复制一段(从光标当前到后n行)
p箭头移动到目的行粘贴
u撤销上一步
dd删除光标当前行
d数字d删除光标(含)后多少行
x剪切一个字母(当前光标),相对于 del
X剪切一个字母(当前光标的前一个),相对于 Backspace
yw复制一个词
dw删除一个词
shift + 6 (^)移动到行头
shift + 4 ($)移动到行尾
1 + shift + g移动到页尾
shift + g移动到页尾
数字 N + shift + g移动到目标行
  1. VI/VIM 键盘图

image-20240507063247412

2.编辑模式

在一般模式中可以进行删除、复制、粘贴等动作,但是却无法编辑文件内容的。要等到你按下【i,I,o,O,a,A】等任何一个字母之后才会进入编辑模式。

注意:通常在Linux中,按下这些按键时,在画面的左下方会出现【INSERT或REPLACE】的字样,此时才可以进行编辑。而如果要回到一般模式时,则必须要按需【ESC】按键可退出编辑模式

  1. 进入编辑模式
  • 常用语法
按键功能
i当前光标前
a当前光标后
o当前光标的下一行
I光标所在行最前
A光标所在行最后
O当前光标行的上一行
  1. 退出编辑模式:按【ESC】键
3.指令模式

在一般模式中,输入【: / ?】 3个中的任何一个按钮,就可以将光标移动到最底下那一行。

在这个模式当中,可以提供你【搜寻资料】的动作,而读取、存盘、大量取代字符、离开vi、显示行号等动作是在此模式中达到的

  1. 基本语法
命令功能
:w保存
:q退出
:!强制执行
/要查找的词n:查找下一个,N:往上查找
:noh取消高亮显示
:set nu显示行号
:set nonu关闭行号
:%s/old/new/g替换内容 /g global 替换匹配到的所有内容
  1. 案例实操
:wq  # 保存退出;对于有写权限的文件,修改后,保存并退出
:q  # 直接退出;没有修改文件内容,直接退出
:q!  # 强制退出;修改了文件内容,但是不想保存,此时需要强制退出
:wq!  # 强制保存退出
4.模式间切换

image-20240507064943948

4、时间日期类
  1. 基本语法:data [option] … [+format]
  2. 选项参数说明
选项/参数功能
-d<时间字符串>显示指定的“时间字符串”表示的时间,而非当前时间
-s<日期时间>设置系统日期时间
<+日期时间格式>指定显示时使用的日期时间格式
1.date 显示当前时间
  1. 基本语法
  • date (显示当前时间)
  1. 案例实操
date "+%y"  # 显示两位数年份
date "+%Y"  # 显示四位数年份
date "+%Y-%m-%d %H:%M:%S"  # 显示年月日时分秒
date "+%F %T"  # 显示年月日时分秒

image-20240507073542418

2.date 显示非当前时间
  1. 基本语法:date -d “+1day”
  2. 案例实操
date -d "+1day"  # 显示第二天日期
date -d "+1day" "+%F"  # 显示第二天年月日

image-20240507074722766

3.date 设置系统时间
  1. 基本语法:date -s 字符串日期
  2. 案例实操
# 设置中先关闭自动设置时间
sudo date -s "2024-05-07 08:00:00"  # 更改系统时间
date  # 查看当前时间
# 记得操作完,设置中打开自动设置时间,恢复正常时间

image-20240507075824388

image-20240507075850873

5、用户管理命令
1.adduser 添加新用户
  1. 基本语法:adduser 用户名
  2. 案例实操
sudo adduser xm  # 添加用户xm

image-20240507121758339

2.passwd设置或更改用户密码
  1. 基本语法:passwd 用户名
  2. 案例实操
sudo passwd xm

image-20240507122027109

3.id 查看用户是否存在
  1. 基本语法:id 用户名
  2. 案例实操
qingxuly@ubuntu:~/桌面$ id xm
uid=1002(xm) gid=1002(xm)=1002(xm)
4.cat /etc/passwd 查看创建了哪些用户
  1. 基本语法:cat /etc/passwd
  2. 案例实操

image-20240507122302465

5.su 切换用户

su:swith user 切换用户

  1. 基本语法:
  • su 用户名称 (切换用户,只能获得用户的执行权限,不能获得环境变量)
  • su - 用户名称 (切换用户,并获得用户的环境变量和执行权限)
6.userdel 删除用户
  1. 基本语法:
  • userdel 用户名 (删除用户但保存用户主目录)
  • userdel -r 用户名 (用户和用户主目录,都删除)
  1. 选项说明
选项功能
-r删除用户的同时,删除与用户相关的所有文件
  1. 案例实操
userdel xm

image-20240507130057055

userdel -r xx

image-20240507130318655

7.usermod 修改用户
  1. 基本语法:
  • usermod -l newname oldname
  • usermod -d /home/newhome username
  1. 选项说明
选项功能
-l改变用户名
-d修改家目录
6、用户组管理命令

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同。

如 Linux 下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理设计用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group 文件的更新。

1.groupadd 新增组
  1. 基本语法:groupadd 组名
  2. 案例实操
sudo groupadd zuzuzu
cat /etc/group  # 查看组

image-20240510121648410

2.groupdel 删除组
  1. 基本语法:groupdel 组名
  2. 案例实操
sudo groupdel zuzuzu

image-20240510121835217

3.groupmod 修改组
  1. 基本语法:groupmod -n 新组名 老组名
  2. 选项说明
选项功能描述
-n <新组名>指定工作组的新组名
  1. 案例实操
groupmod -n xuxuxu zuzuzu
tail /etc/group -n 3

image-20240510122115574

4.usermod 修改用户主组

在Linux 和 Unix 系统中,每个用户都有一个主组和可能的多个附加组。

用户的主组在用户创建时被指定,默认与用户名称相同,当用户创建一个新文件或目录时,默认情况下,这些文件或目录会被分配给用户的主组。

  1. 基本语法:usermod -g 组名 用户名
  2. 选项说明
选项功能描述
-g指定用户的新主组
  1. 案例实操
sudo usermod -g mengde wendi  # 温迪改到蒙德组
su wendi  # 切到温迪用户
touch jiuguan.txt  # 温迪用户创建酒馆.txt
ll  # 酒馆.txt 也属于蒙德组

image-20240510123835290

5.查看附加组和用户的映射关系

/etc/group 文件存储了用户和附加组的映射关系,每一行对应一个用户组,第三个冒号后面是以该组作为附加组的用户列表,列表为空表示没有用户将其作为附加组

cat /etc/group

wendi:x:1008:
mengde:x:1009:
6.将用户添加到附加组
  1. 基本语法:usermod -aG 组名 用户名
  2. 选项说明
选项功能描述
-aG指定用户需要加入的附加组
  1. 案例实操
sudo usermod -aG mengde keli  # 可莉添加到蒙德组作为附加组成员

image-20240510125534862

7.将用户从组中移除
  1. 基本语法:deluser 用户名 组名
  2. 案例实操
sudo deluser keli mengde

image-20240510125827159

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

sudo 是将对应的命令给到 root 用户去执行

sudo usermod -aG sudo keli  # 可莉添加到sudo组
su keli  # 切换到可莉用户
sudo ls  # 可莉使用sudo获得root权限,每次执行需要输入用户密码

image-20240510192909037

cat /etc/sudoers  # 查看sudo的附加组中有可莉

image-20240510193308461

sudo vim /etc/sudoers  # 第50行 添加NOPASSWD:   接着 wq! 保存文件

# Allow members of group sudo to execute any command
# %sudo   ALL=(ALL:ALL) ALL 第50行 改为下列行
%sudo   ALL=(ALL:ALL) NOPASSWD:ALL 

image-20240510193128175

su keli  # 切换到可莉用户
sudo ls  # 可莉使用sudo获得root权限,执行sudo 就不需要输入密码

image-20240510193415363

7、文件权限命令
1.文件属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用 ll 或者 ls -l 命令来显示一个文件的属性以及文件所属的用户和组。

  1. 文件属性:从左到右的10个数字表示
文件类型属主权限属组权限其他用户权限
01 2 34 5 67 8 9
dr w xr - xr - x
目录文件读 写 执行读 写 执行读 写 执行
  • 如果没有权限,就好出现 - 而已。从左到右用0-9这些数字来表示:

    • 0 首位表示类型。在Linux中第一个字符代表这个文件是目录、文件或链接文件等。

      • -代表文件,d 代表目录,l 代表链接文档
    • 第1-3位确定属主(该文件的所有者)拥有该文件的权限——user

    • 第4-6位确定属组(所有者的同组用户)拥有该文件的权限——group

    • 第7-9位确定其他用户拥有该文件的权限——other

  1. rwx 作用文件和目录的不同解释
  • 作用到文件
    • r:read,可以读取,查看
    • w:write,可以修改,但是不代表可以删除文件,删除一个文件的前提条件是对该文件所在的目录由写权限,才能删除该文件
    • x:execute,可以被系统执行
  • 作用到目录
    • r:read,可以读取,ls 查看目录内容
    • w:write,可以修改,目录内创建+删除+重命名目录
    • x:execute,可以进入该目录
  1. 案例实操
ll

链接数通常指的是硬链接数

硬链接数是指一个文件或目录在文件系统中的入口数量。对于文件来说,每个硬链接都是对同一个文件的不同命名,它们都指向相同的数据块。对于目录来说,硬链接数可以理解为可以通过多少个不同的路径进入该目录。在Linux系统中,可以使用ls -l命令来查看文件或目录的硬链接数。

2.chmod 改变权限
  1. 基本语法
文件类型属主权限属组权限其他用户
01 2 34 5 67 8 9
dr w xr - xr - x
目录文件读 写 执行读 写 执行读 写 执行
  • chmod [{ugoa} {±=}{rwx}] 文件或目录
  • chmod [mode=421]
  1. 经验技巧
  • u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
  • r =4 w=2 x=1 rwx=4+2+1=7
  1. 案例实操
touch hutao  # 创建胡桃文件
chmod u+x hutao  # 为胡桃所有者添加执行权限
chmod g-w hutao  # 为胡桃所有组移除写权限
chmod a+x hutao  # 等于 chmod +x hutao;为所有者、所有组、其他人都加上执行权限

image-20240510212815900

chmod 764 hutao  # 为胡桃所有者添加读写执行、所有组添加读写、其他人添加读权限

image-20240510213317986

3.chown 改变所有者
  1. 基本语法:chown [选项] [最终用户] [文件或目录] (改变文件或目录的所有者)
  2. 选项说明
选项功能
-R递归操作
  1. 案例实操
sudo chown qingxuly software/  # 改变software文件所有者为qingxuly

image-20240510223429066

sudo chown -R qingxuly:qingxuly ./  # 改变当前目录下所有文件文件夹的所有者、所属组权限为qingxuly

image-20240510223709763

4.chgrp 改变所属组
  1. 基本语法:chgrp [最终用户组] [文件或目录] (改变文件或目录的所属组)
  2. 案例实操:
sudo chgrp keli liyue  # 璃月文件夹的所属组改为可莉

image-20240510224348337

5.练习
  1. 在opt目录下创建蒙德目录,用于管理蒙德。所有者为蒙德的琴,所属组为蒙德,琴有全部的权限,蒙德人有读和执行的权限,其他人只有读的权限。
# 1.创建琴账号 赋予sudo权限
sudo adduser qin
sudo usermod -aG sudo qin
# 2.创建蒙德组
sudo groupadd mengde
# 3.创建凯亚账号 添加到蒙德组中
sudo adduser kaiya
sudo usermod -aG mengde kaiya
# 4.在opt目录下创建蒙德工作目录 修改对应的所有者和所属组  琴:蒙德
cd /opt
sudo mkdir mengde
sudo chown qin:mengde mengde/
# 5.目录的权限比较特殊  读和执行的权限必须都有才能进入目录看有哪些文件 即754访问不了文件 蒙德目录权限等级 755
sudo chmod 755 mengde/
# 6.修改工作文件所有者和所属组  琴:蒙德 只有root权限才能去修改文件的所有者和所属组  即使是文件的所有者也不能修改
cd mengde/
vim fengshen.txt  # echo "babatuosi"
chmod 754 fengshen.txt
sudo chown qin:mengde fengshen.txt
# 测试凯亚是否成功执行 fengshen.txt
su kaiya
cd /opt/mengde
./fengshen.txt
  1. 使用root用户在opt目录下创建mysql文件夹,用于安装mysql,赋予其他用户读的权限。
# 如果其它用户需要有读的权限,需要同时给目录赋予r、x的权限,对应5
cd /opt
sudo adduser mysql
sudo mkdir mysql
sudo chown mysql:mysql mysql/
  1. 使用root用户在opt目录下创建redis文件夹,用于安装使用redis,赋予其他用户读和执行的权限。
cd /opt
sudo adduser redis
sudo mkdir redis
sudo chown redis:redis redis/
su redis  # 切换为redis用户
cd /opt/redis
vim a.txt
exit  # 回到本人用户
cd /opt/redis
ll  # 检查本人对a.txt的权限
8、搜索查找类
1.find 查找文件或目录

find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端

  1. 基本语法:find [搜索范围] [选项]
  2. 选项说明
选项功能
-name <查询方式>安装指定的文件名查找文件
-user <查询方式>查找属于指定用户名所有文件
-size <文件大小>安装指定的文件大小查找文件,单位为:
b:块(512字节)
c:字节
w:字(2字节)
k:千字节
M:兆字节
G:吉字节
  1. 案例实操
find ./ -name a.txt  # 查找当前目录中文件名为a.txt的文件
find ./ -name *.txt  # 查找当前目录中以.txt结尾的文件
find ./ -user qin  # 查找当前目录中琴用户所有文件
find ./ -size +1c  # 查找当前目录中大于1字节的文件

image-20240512121735411

2.grep 过滤查找及“|”管道符

管道符,“|”,表示将前一个命令的处理结果输出给后面的命令处理

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

  2. 选项说明

选项功能
-n显示匹配行及行号
-v显示不包含匹配文本的所有行(相反模式)
  1. 案例实操
ll | grep -n mysql  # 显示包含mysql所有行,并显示行号
ll | grep -nv mysql  # 显示不包含mysql所有行,并显示行号

image-20240512123427614

9、压缩和解压缩类
1.gzip/gunzip 压缩
  1. 基本语法
  • gzip 文件 (压缩文件,只能将文件压缩为 *.gz 文件)
  • gunzip 文件.gz (解压缩文件命令)
  1. 经验技巧
  • 只能压缩文件不能压缩目录
  • 不保留原来文件
  1. 案例实操
gzip profile  # 压缩文件
gunzip profile.gz  # 解压缩文件

image-20240512124103189

2.tar 打包
  1. 基本语法: tar [选项] 文件.tar.gz 将要打包进去的内容 (打包目录,压缩后的文件格式.tar.gz)
  2. 选项说明
选项功能
-c产生.tar打包文件
-v显示详细信息
-f指定压缩后的文件名
-z打包同时压缩
-x解包.tar 文件
  1. 案例实操
tar -zcvf 1.tar.gz A profile hutao  # 将A profile hutao打包进 1.tar.gz
tar -zxvf 1.tar.gz -C ./tar  # 将1.tar.gz 解压到 tar目录

image-20240512125812164

3.练习
  1. 下载最新的flume框架安装包tar.gz完成解压缩,放置到/opt/module目录下,查找超过1M的jar包有哪些。
# 1.下载对应的安装包https://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.11.0/
# 2.解压 tar.gz的包到 /opt/module
sudo mkdir /opt/module
sudo tar -zxvf apache-flume-1.11.0-bin.tar.gz -C /opt/module
# 3.查找超过1M的jar包有哪些
cd /opt/module/apache-flume-1.11.0-bin/
find ./ -name *.jar -size +1M
find ./ -size +1M | grep jar
10、磁盘类
1.df 查看磁盘空间使用情况

df :disk free 空余硬盘

  1. 基本语法: df [选项] (列出文件系统的整体磁盘使用量,检查文件系统的磁盘占用情况)
  2. 选项说明
选项功能
-h以 人们较易阅读的GB、MB、KB 等格式自行显示
  1. 案例实操
df  # 查看磁盘使用情况
df -h

image-20240512132301036

2.du 文件和目录的磁盘使用空间
  1. 基本语法: du 目录/文件 (统计文件或递归显示目录及子目录的磁盘使用空间)
  2. 选项说明
选项功能
-a显示当前目录下所有的文件目录及子目录大小
-s仅显示指定目录或文件的总大小,而不列出其子项占用的容量
  1. 案例实操
du conf  # 查看conf目录及子目录的空间使用情况
du -ah conf  # 查看conf目录及子目录所有文件的空间使用情况
du -sh ./  # 查看当前目录使用空间的总大小
du -h ./  # 以人们易读的方式查看当前目录的空间使用情况

image-20240512132707586

11、进程线程类

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源

1.ps 查看当前系统进程状态

ps:process status 进程状态

  1. 基本语法:
  • ps -aux | grep xxx (查看系统中所有进程)
  • ps -ef | grep xxx (可以查看子父进程之间的关系)
  1. 选项说明
选项功能
-a选择所有进程
-u显示所有用户的所有进程
-x显示没有终端的进程
  1. 功能说明
ps -aux信息说明
USER该进程是由哪个用户产生的
PID进程的ID号
%CPU该进程占用CPU资源的百分百,占用越高,进程越耗费资源
%MEM该进程占用物理内存的百分比,占用越高,进程越耗费资源
VSZ该进程占用虚拟内存的大小,单位 KB
RSS该进程占用实际物理内存的大小,单位 KB
TTY该进程是在哪个终端中运行的。其中 tty1-tty7 代表本地控制台终端;tty1-tty6 是本地的字符界面终端,tty7 是图形终端。pts/0-255 打包虚拟终端
STAT进程状态。常见的状态由:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
START该进程的启动时间
TIME该进程占用 CPU 的运算时间,注意不是系统时间
COMMAND产生此进程的命令名
ps -ef信息说明
UID用户ID
PID进程ID
PPID父进程ID
CCPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O 密集型运算,执行优先级会提高
STIME进程启动的时间
TTY完整的终端名称
TIMECPU时间
CMD启动进程所用的命令和参数
  1. 经验技巧
  • 如果想查看进程的CPU占用率和内存占用率,可以使用 aux
  • 如果想查看进程的父进程ID可以使用 ef
  1. 案例实操
ps
ps -aux  # 查看进程的 CPU占用率和内存使用率
ps -aux | grep 13427
ps -ef | grep 13427
ps -ef  # 查看进程的父进程ID

image-20240512210347403

image-20240512210829948

2.kill 终止进程
  1. 基本语法:
  • kill [选项] 进程号 (通过进程号杀死进程)
  • killall 进程名称 (通过进程名称杀死进程)
  1. 选项说明
选项功能
-9表示强迫进程立即停止
  1. 案例实操
kill 13910  # 终止tail的进程
kill -9 13966  # 杀死tail的进程

image-20240512212228055

3.查看服务器总体内存
  1. 基本语法:free -m (查看服务器总体内存)
  2. 案例实操
free  # 默认单位KB
free -m  # 使用MB显示总体内存

image-20240512212849162

4.top查看系统更健康状态
  1. 基本命令:top [选项]
  2. 选项说明
选项功能
-d 秒数指定 top 命令每隔几秒更新
-i使top不显示任何闲置或者僵死进程
-p通过指定监控进程ID来仅仅监控某个进程的状态
  1. 操作说明
操作功能
P以CPU使用率排序,默认就是此项
M以内存的使用率排序
N以PID排序
q退出top
  1. 查询结果字段解释

(1)第一行:信息为任务队列信息

  • top - 21:42:29 up 20:06, 4 users, load average: 0.19, 0.20, 0.24
内容说明
21:42:29系统当前时间
up 20:06系统的运行时间,本机已经运行 20小时6分钟
4 users当前登录了 4 个用户
load average: 0.19, 0.20, 0.24系统在之前 1分钟、5分钟、15分钟的平均负载。
一般认为小于1时,负载较小;如果大于1时,系统已经超出负荷。

(2)第二行:行为进程信息

  • 任务: 336 total, 1 running, 335 sleeping, 0 stopped, 0 zombie
336 total系统中的进程总数
1 running正在运行的进程数
335 sleeping睡眠的进程数
0 stopped正在停止的进程
0 zombie僵尸进程。如果不是0,需要手工检查僵尸进程

(3)第三行:行为CPU信息

%Cpu(s): 0.1 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

%Cpu(s): 0.1 us用户模式占用的CPU百分比
0.2 sy系统模式占用的CPU百分比
0.0 ni改变过优先级的用户进程占用的CPU百分比
99.8 id空闲CPU的CPU百分比
0.0 wa等待输入/输出的进程的占用CPU百分比
0.0 hi硬中断请求服务占用的CPU百分比
0.0 si软中断请求服务占用的CPU百分比
0.0 stst(steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分百

(4)第四行:物理内存信息

  • MiB Mem : 3870.7 total, 539.5 free, 1287.4 used, 2043.8 buff/cache
MiB Mem : 3870.7 total物理内存的总量,单位MiB=2^20字节
539.5 free空闲内存
1287.4 used已使用内存
2043.8 buff/cache缓冲/缓冲内存

(5)第五行:交换分区(swap)信息

  • MiB Swap: 3898.0 total, 3898.0 free, 0.0 used. 2277.4 avail Mem
MiB Swap: 3898.0 total交换分区(虚拟内存) 的总大小
3898.0 free空闲交换空间
0.0 used已使用交换空间
2277.4 avail Mem可用内存
  1. 案例实操
top

image-20240512214246394

5.netstat 显示网络统计信息和端口占用情况
  1. 基本语法
  • netstat -anp | grep 进程号 (查看该进程网络信息)
  • netstat -nlp | grep 端口号 (查看网络端口号占用情况)
  1. 选项说明
选项功能
-n拒绝显示别名,能显示数字的全部转化为数字
-l仅列出有在listen(监听)的服务状态
-p表示显示哪个进程在调用
  1. 案例实操
netstat  # ssh行 是Windows远程连接的网络信息

image-20240513121836568


image-20240513122721170

12、crontab 系统定时任务
1.crontab 服务管理
  1. 重新启动 crond 服务
sudo systemctl status cron
sudo systemctl restart cron

image-20240513123204535

2.crontab 定时任务设置
  1. 基本语法:crontab [选项]
  2. 选项说明
选项功能
-e编辑 crontab 定时任务
-l查询 crontab 任务
-r删除当前用户所有的 crontab 任务
  1. 选择编辑器
crontab -e  # ctrl + x 退出选择编辑器页面
EDITOR=vim crontab -e  # 通过EDITOR环境变量在执行 crontab 时选择编辑器

image-20240513123936546

  1. 参数说明
  • 执行上述命令会进入 crontab 编辑界面,并打开 vim 编辑定时任务

(1)* * * * * 执行的任务

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

(2)特殊符号

特殊符号含义
*代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次
,代表不连续的时间。比如“0 8,12,16 * * *”:代表在每天的8点整、12点整、16点整都执行一次命令
-代表连续的时间范围。比如“0 5 * * 1-6”:代表在周一到周日的凌晨5点整执行命令
*/n代表每隔多久执行一次。比如"*/10 * * * *":代表每隔10分钟就执行一次命令

(3)特点时间执行命令

时间含义
45 22 * * *每天 22:45 执行命令
0 17 * * 1每周一 17:00 执行命令
0 5 1,15 * *每月1号、15号 5:00 执行命令
40 4 * * 1-5每周一到周五 4:40 执行命令
0 0 1,15 * 1每月1号、15号和每周一 都执行命令。
注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱

  1. 案例实操
# 监控hutao.txt
cd /home/qingxuly/桌面
touch hutao.txt

# 新窗口执行
EDITOR=vim crontab -e
*/1 * * * * /bin/echo "ao" >> /home/atguigu/桌面/hutao.txt  # :wq保存退出

tail -f hutao.txt  # 每隔1分钟可以看到打印一行 “ao"

image-20240513125926366

image-20240513130148095

# 取消定时任务的两种方式
crontab -e  # 删除定时任务,Ctrl + X 退出,输入Y保存
EDITOR=vim crontab -e  # 删除定时任务,输入:wq保存

本文到此结束,如有疑问或建议,请随时留言讨论。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五月行秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值