Linux
前言
-
服务器:一个用于独立运行项目的电脑
-
操作系统:windows、linux、ios、安卓、鸿蒙
-
linux:基于命令的操作系统,权限控制系统非常严格
-
windows:基于图形页面的操作(支持命令行操作CMD)
- 开源
-
/ --> 根目录
-
root --> 超级用户
-
Linux(centos)操作系统会默认设置一个超级管理员,这个超级管理员用户名叫root,它拥有操作系统完全的权限
Linux命令格式
-
【命令关键字】【参数 自定义内容】【参数 自定义内容】...
-
【命令关键字】 --help 查看这个命令的帮助信息
-
man 【命令关键字】 查看一个命令文档级的帮助信息(q 退出)
-
ls 查看当前目录下所有文件与文件夹
-
ls -l (ll) 查看当前目录下所有文件与文件夹的详细信息
-
查询结果的第一个字符用于标识文件类型
-
— 文件
-
d 文件夹
-
l 快捷方式
-
基础命令
- cd 目录切换命令
- cd .. 返回上层目录
- pwd 查看当前所在目录
- clear 清除当前屏幕上的输出(快捷键:ctrl + l)
- exit 退出登录
- history 查看历史操作记录
- init 0 快速关机
用户和组的配置文件:
- /etc/passwd 用户密码及其相关属性
- /etc/group 组及其相关属性
- /etc/shadow 组密码及其相关属性
1. 组管理篇
1.groupadd(组添加)
groupadd --help #查看帮助文档
groupadd -g GID name #指明GID普通组
groupadd -g 1001 enndfp #创建普通用户组enndfp
cat /etc/group #打开组文件
groupadd -r 组名 #创建系统组
groupadd -r sysgroup #创建系统组sysgroup
cat /etc/group #打开组文件
2.groupmod(组修改)
groupmod --help #查看帮助文档
groupmod -g newgid groupname #将groupname组的id改为newgid
groupmod -g 8888 enndfp #将enndfp组的id改为8888
cat /etc/group #打开组文件
groupmod -n newName oldName #将oldName改为newName
groupmod -n newEnndfp enndfp #将enndfp改为newEnndfp
cat /etc/group #打开组文件
3.groupdel(组删除)
groupdel --help #查看帮助文档
groupdel 组名 #删除组
groupdel newEnndfp #删除newEnndfp组
cat /etc/group #打开组文件
4.groupmems(更改和查看组成员)
groupmems --help #查看帮助文档
groupmems -g groupname -a username #将username用户添加到groupname组中
groupmems -g enndfp -a enndfp #将enndfp用户添加到enndfp组中
groupmems -g groupname -d username #将username用户从groupname组中删除
groupmems -g enndfp -d enndfp #将enndfp用户从enndfp组中删除
2. 用户管理篇
1.useradd(用户创建)
useradd --help #查看帮助文档
useradd 用户名 #创建一个默认用户
useradd enndfp #创建一个enndfp用户
注:默认创建一个与用户名同名的组
cat /etc/group #打开组文件
注:默认在home目录下创建一个同名的用户名文件夹
cd /home #切换到home目录
ls #查看目录信息
useradd -g groupname username #创建一个username用户并添加到groupname组中
useradd -g enndfp enndfpUser #创建一个enndfpUser用户并添加到enndfp组中
useradd -G groupname username #创建一个username用户并添加到groupname附加组中
useradd -G sysgroup enndfpUser2 #创建一个enndfpUser2用户并添加到sysgroup附加组中
注:它会同时拥有enndfouser2和sysgroup两个组的权限
id 用户名 #查看用户
2.usermod(用户修改)
usermod --help #查看帮助文档
usermod -u newUID username #将username用户UID改为newUID
usermod -u 8888 enndfp #将enndfp用户的UID改为8888
3.userdel(用户删除)
userdel --help #查看帮助文档
userdel username #删除username用户
userdel enndfpUser2 #删除enndfpUser2用户
注:如果不带任何参数,此用户的归属组文件&文件夹会遗留
userdel -r username #删除username用户以及根目录
userdel -r enndfpUser #删除enndfpUser用户以及根目录
3. 密码管理篇
每一个新用户密码是锁定的,先进行解锁才可以登录
1.passwd(密码)
- 如果执行的用户是root ,就可以对其他用户进行密码修改、删除、过期等操作
- 如果执行的用户是普通用户,只能对自己进行密码修改
- Linux 中密码规则(Root 无视):
- 长度要8位以上
- 包含数字、字母、特殊字符
- 当前设置的密码与上一次密码不能有2位以上的字符重复
passwd --help #查看帮助文档
passwd -d username #删除username用户的密码
passwd -d enndfp #删除enndfp用户的密码
passwd username #修改username用户的密码
passwd enndfp #修改enndfp用户的密码
passwd -l lock username #锁定username用户,永远提示密码不正确(仅root使用)
passwd -u username #解锁username用户
2.su(切换用户登录)
su --help #查看帮助文档
注:如果是root用户使用su命令去切换成其它用户,不需要输入用户密码。其它用户使用su命令切换需要输入密码
su username #非登录式切换,不会读取用户的配置文件,不改变当前的工作目录
su enndfp #以非登录式切换到enndfp用户
su - username #登录式切换,会读取用户配置文件,完全切换
su - enndfp #以登录式切换到enndfp用户
4. 文件操作篇
Linux文件结构
-
/bin : 存放供所有用户使用的基本命令的二进制可执行文件,不可关联到独立分区
-
/boot :引导分区,引导文件、内核文件存放目录
-
/dev : 设备文件存放位置
-
/etc: 配置文件
-
/home : 普通用户主目录存放位置
-
/lib : 启动时程序依赖的基本共享库文件
-
/lib64 :在x86_64系统上的辅助共享文件库存放位置
-
/media :便携式移动设备挂载点
-
/mnt : 临时文件系统挂载点
-
/opt : 第三方应用程序安装位置
-
/proc : 存放内存中的正在运行中的进程
-
/root : 管理员的目录
-
/run:一个临时存储和运行时数据的位置
-
/sbin : 存放管理类的基本命令的二进制可执行文件,不可关联到独立分区
-
/srv : 系统运行服务用到的数据
-
/sys :存放和硬件相关的(内存)内容
-
/tmp : 临时文件存储
-
/usr:包含许多用户相关的应用程序和文件
-
/var : 一般存放经常修改的文件,例如日志
1.mkdir(文件夹创建)
mkdir --help #查看帮助文档
mkdir [选项] 目录 #格式
mkdir test #创建一个空白文件夹test
mkdir -p 目录 #连续创建多层目录(若文件夹已存在则忽略)
mkdir -p a/b/c #在当前目录下创建空白文件夹a/b/c
-
a/b/c 表示在当前目录创建空白文件夹a/b/c
-
/a/b/c 表示在根目录创建空白文件夹a/b/c
2.touch(文件创建)
touch --help #查看帮助文档
touch filename #创建文件
touch test.txt #创建test文件
stat filename #查看文件状态
stat test.txt #查看test.txt文件状态
3.mv(修改)
mv --help #查看帮助文档
mv oldFileName newFileName #修改文件名称
mv test.txt test2.txt #将test.txt文件名改为test2.txt
mv filename directory #移动文件
mv test2.txt test #将test2.txt文件移动到test目录下
4.rm(删除)
删除文件前先做备份,rm -rf 在不确定情况下少用(rm -rf / 同删库概念一样)
rm --help #查看帮助文档
rm -i [filename | directory] #交互式删除
rm -i test.txt #交互式删除test.txt
rm -r directory #递归删除
rm -r a #递归删除a文件夹
rm -f filename #强制删除
rm -f test.txt #强制删除test.txt文件
rm -rf [filename | directory] #强制无信息提示删除,慎用!!!
5. 文件编辑篇
Vim 是一个强大的文本编辑器,它有三种基本的模式:命令模式(Command mode)、输入模式(Insert mode)和底线模式(Last line mode)。
1.命令模式(Command mode):
- 进入命令模式:打开 Vim 后,默认就是命令模式,可以按 Esc 键进入命令模式。
- 常用操作:
- 搜索文本:
- 命令:
/<要搜索的文本>
- 作用:在文件中向前搜索指定的文本。
- 示例:
/hello
:搜索下一个出现的 "hello"。/hello\c
:以不区分大小写的方式搜索 "hello"。/hello\c\|world
:搜索 "hello" 或 "world"。
- 光标移动:
- 命令:使用光标键或其他移动命令。
- 作用:在文件中移动光标。
- 示例:
h
:向左移动一个字符。j
:向下移动一行。k
:向上移动一行。l
:向右移动一个字符。0
:移到行的开头。$
:移到行的末尾。gg
:移到文件的开头。G
:移到文件的末尾。50G
:移到文件的第 50 行。
- 复制、剪切和粘贴:
- 命令:使用
y
(复制)、d
(剪切)和p
(粘贴)命令,可以结合移动命令一起使用。 - 作用:复制、剪切和粘贴文本。
- 示例:
yy
:复制当前行。2yy
:复制当前行及其下一行。dd
:剪切当前行。2dd
:剪切当前行及其下一行。p
:在光标所在行的下方粘贴文本。P
:在光标所在行的上方粘贴文本。
- 撤销和重做:
- 命令:
u
(撤销)和Ctrl + r
(重做)。 - 作用:撤销最近的操作或重做之前的操作。
- 示例:
u
:撤销最近的操作。Ctrl + r
:重做之前的操作。
- 显示行号:
- 命令:
:set number
(显示行号)和:set nonumber
(隐藏行号)。 - 作用:控制是否显示行号。
- 示例:
:set number
:显示行号。:set nonumber
:隐藏行号。
2.插入模式(Insert mode):
- 进入插入模式:在命令模式下按
i
进入插入模式。 - 常用操作:
- 插入文本:在插入模式下直接输入文本即可。
- 删除字符:使用 Backspace 或 Delete 键删除字符。
- 复制、剪切和粘贴:使用常用的复制、剪切和粘贴快捷键(如 Ctrl + C、Ctrl + X 和 Ctrl + V)。
3.底线模式(Last line mode):
- 进入底线模式:在命令模式下按
shift+:
进入底线模式。 - 常用操作:
- 保存文件:按 Shift + : 进入底部命令行模式,然后输入
w
保存。 - 退出 Vim:按 Shift + : 进入底部命令行模式,然后输入
q
退出。 - 强制退出 Vim:按 Shift + : 进入底部命令行模式,然后输入
q!
强制退出。 - 打开文件:按 Shift + : 进入底部命令行模式,然后输入
e <文件路径>
打开指定文件。
- 保存文件:按 Shift + : 进入底部命令行模式,然后输入
6. 文件查看篇
1.cat(从头打印文本内容)
cat --help #查看帮助文档
cat /etc/group
2.tac(从尾打印文本内容)
tac --help #查看帮助文档
tac /etc/group
3.nl(显示时,输出行号)
nl --help #查看帮助文档
nl /etc/group
4.more(一页一页的显示文件内容)
more --help #查看帮助文档
more /etc/group #回车翻页
5.less(与more类似,可向前翻页)
less --help #查看帮助文档
注:按Q
退出
6.head(只看前10行)
head --help #查看帮助文档
head /etc/group
7.tail(只看尾部十行)
tail --help #查看帮助文档
tail /etc/group
8.ln(创建快捷方式)
ln --help #查看帮助文档
ln 源文件 快捷方式 #创建硬连接快捷方式
ln -s 源文件 快捷方式 #创建软连接快捷方式(符号指向连接快捷方式)
-
硬连接相当于将源文件的所有属性都克隆了一份,就算删除源文件,硬连接文件不会受到影响
-
软连接相当于创建一个符号快捷方式,如果源文件被删除了,则软连接就失效了。
7. 文件权限篇
在Linux系统中,文件的权限共分为四部分,用一个9位的二进制数表示,每三位一组,最大权限为rwx(读、写、执行),最小权限为---。这里我们将文件权限分为以下四部分:
1. 文件属性
文件属性是文件权限的第一部分,用于描述文件的类型。常见的文件属性包括:
-
: 普通文件d
: 目录文件l
: 链接文件b
: 设备文件(块设备)c
: 字符设备文件p
: 管道文件
2. 文件所有者权限
文件所有者权限是文件权限的第二部分,用三位二进制数表示。常见权限包括:
r
: 可读取文件内容w
: 可修改文件内容x
: 可执行文件(将其运行为进程)
3. 文件所属组权限
所属组权限是文件权限的第三部分,也用三位二进制数表示。常见权限包括:
r
: 可读取文件内容w
: 可修改文件内容x
: 可执行文件(将其运行为进程)
4. 其他用户权限
其他用户权限是文件权限的第四部分,同样用三位二进制数表示。常见权限包括:
r
: 可读取文件内容w
: 可修改文件内容x
: 可执行文件(将其运行为进程)
权限组合与对应的二进制数与十进制数
根据不同权限的组合,可以得到不同的二进制数和对应的十进制数。以下是一些常见的权限组合及其对应的二进制数和十进制数:
---
: 000 (0)--x
: 001 (1)-w-
: 010 (2)-wx
: 011 (3)r--
: 100 (4)r-x
: 101 (5)rw-
: 110 (6)rwx
: 111 (7)
例如:
- 123(二进制:
--x -w- -wx
):所属用户可以执行,用户组可写,其他用户可写与执行。 - 456(二进制:
r-- r-x rw-
):所属用户只读,用户组读与执行,其他用户读与写。 - 777(二进制:
rwx rwx rwx
):所有用户都具有读、写和执行的权限。
图片示例
5.chmod(修改权限)
chmod --help #查看帮助文档
chmod 权限 文件 #给文件赋予权限
chmod 777 text.txt #给text.txt文件赋予读、写和执行权限
8. 拓展篇
1.who(显示当前系统中正在登录的使用者信息)
who --help #查看帮助文档
#用于显示当前系统中正在登录的使用者信息,包括用户ID、终端机、登录来源、登录时间、空闲时间、CPU使用情况等。
常用参数:
-h
: 不显示标题行。-u
: 不显示使用者的动作/工作信息。-s
: 使用简短的格式显示信息。-f
: 不显示使用者的上线位置。-V
: 显示who
命令的版本信息。
2.find(在指定路径下根据给定的表达式查找文件或目录)
find --help #查看帮助文档
常用参数:
-name
: 按名称查找文件或目录。-size
: 按文件大小查找。-user
: 按文件宿主查找。-type
: 按文件类型查找。-iname
: 忽略名称大小写。-exec
: 对查找到的文件执行指定的命令。
find /etc -name "*.conf" #将在/etc目录下查找所有以.conf结尾的配置文件。
3.top(查看进程信息)
top
用于实时查看系统中运行的进程信息,包括进程的CPU使用情况、内存占用情况、进程ID、执行命令等
常用参数:
c
: 切换显示模式,有两种模式可选,一种是只显示执行档的名称,另一种是显示完整的路径与名称。S
: 累积模式,将已完成或消失的子进程(dead child process)的CPU时间累积起来。s
: 安全模式,取消交互式指令,避免潜在的危机。i
: 不显示任何闲置(idle)或无用(zombie)的进程。n
: 更新次数,完成后将会退出top
。b
: 批次档模式,与参数n
一起使用,可将top
的结果输出到文件中。
top #查看进程信息
4.ps(查看系统中运行的进程信息)
ps
用于查看系统中运行的进程信息。它提供了许多参数选项,用于过滤和显示进程的不同属性。
常用参数:
a
: 显示一个终端的所有进程,除会话引线外。u
: 显示进程的归属用户及内存的使用情况。x
: 显示没有控制终端的进程。-l
: 显示较详细的进程信息,包括进程状态、启动时间等。-e
: 显示所有进程。
ps -aux #将显示系统中所有进程的详细信息,包括用户、CPU使用率、内存使用率、进程ID、终端、状态、启动时间和命令
USER
: 进程的拥有者。PID
: 进程ID。%CPU
: CPU使用率。%MEM
: 内存使用率。VSZ
: 占用的虚拟内存大小。RSS
: 占用的实际内存大小。TTY
: 终端设备号。STAT
: 进程状态(D、R、S、T、Z等)。START
: 进程启动时间。TIME
: 进程执行的累计时间。COMMAND
: 进程执行的命令。
5.kill(终止进程)
kill
命令用于向进程发送信号,可以终止执行中的程序或工作。预设的信号为SIGTERM(15),可用于正常终止程序。如果进程无法正常终止,可以使用SIGKILL(9)信号来强制终止进程。可以使用ps
命令或jobs
命令查看进程或工作的编号。
语法:
kill [-s <信号名称或编号>] [进程]
kill [-l <信号编号>]
常用信号:
HUP
(1): 终端断线INT
(2): 中断 (同 Ctrl + C)QUIT
(3): 退出 (同 Ctrl + )TERM
(15): 终止KILL
(9): 强制终止CONT
(18): 继续 (与STOP相反,fg/bg命令)STOP
(19): 暂停 (同 Ctrl + Z)
只有信号9(SIGKILL)可以无条件终止进程,其他信号进程有权忽略。
常用参数:
-a
: 当处理当前进程时,不限制命令名和进程号的对应关系。-p
: 仅打印相关进程的进程号,而不发送任何信号。-s <信号名称或编号>
: 指定发送信号。-u <用户>
: 指定用户。
示例:
kill -9 1234
kill -TERM 5678
6.killall(根据进程名称杀死一组进程)
killall
命令用于根据进程名称杀死一组进程,将进程的名称作为参数,可以杀死与该名称匹配的一组进程。相比kill
命令,killall
将查找进程和发送信号两个步骤合二为一。
语法:
killall [选项] 进程名称
常用选项:
-e
: 对长名称进行精确匹配。-l
: 忽略大小写的不同。-p
: 杀死进程所属的进程组。-i
: 交互式杀死进程,杀死进程前需要进行确认。-q
: 如果没有进程被杀死,则不输出任何信息。-r
: 使用正则表达式匹配要杀死的进程名称。-s <信号名称或编号>
: 用指定的信号代替默认信号“SIGTERM”。-u <用户>
: 杀死指定用户的进程。
示例:
killall -9 process_name
killall -i -TERM program_name
参考参考笔记