一、Linux概述
1.什么是Linux
Linux是一套免费使用和自由传播的类似Unix操作系统,一般的WEB项目都是部署都是放在Linux操作系统上面。 Linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
2.Windows和Linux的区别
Windows是微软开发的操作系统,民用操作系统,可用于娱乐、影音、上网。 Windows操作系统具有强大的日志记录系统和强大的桌面应用。好处是它可以帮我们实现非常多绚丽多彩的效果,可以非常方便去进行娱乐、影音、上网。Linux的应用相对单纯很多,没有什么绚丽多彩的效果,因此Linux的性能是非常出色的,可以完全针对机器的配置有针对性的优化,简单来说Windows适合普通用户进行娱乐办公使用,Linux适合软件开发部署
3.什么事Linux内核
Linux 系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件
- 系统内存管理2. 应用程序管理3. 硬件设备管理4. 文件系统管理
4.Linux的基本组件是什么
内核,shell和GUI,系统实用程序和应用程序。Linux比其他操作系统更具优势的是每个方面都附带其他功能,所有代码都可以免费下载。
5.什么是交换空间
交换空间是Linux使用的一定空间,用于临时保存一些并发运行的程序。当RAM没有足够的内存来容纳正在执行的所有程序时,就会发生这种情况。
6.什么是root账户
root帐户就像一个系统管理员帐户,允许你完全控制系统。你可以在此处创建和维护用户帐户,为每个帐户分配不同的权限。每次安装Linux时都是默认帐户。
7.LILO
LILO是Linux的引导加载程序。它主要用于将Linux操作系统加载到主内存中,以便它可以开始运行。
8.BASH
BASH是Bourne Again SHell的缩写。它由Steve Bourne编写,作为原始Bourne Shell(由/ bin / sh表示)的替代品。它结合了原始版本的Bourne Shell的所有功能,以及其他功能,使其更容易使用。从那以后,它已被改编为运行Linux的大多数系统的默认shell。
二、磁盘,目录,文件
一切都是文件
1.Linux文件系统
Linux支持5钟文件类型:普通文件、目录文件、链接文件、设备文件、命名管道
Linux目录结构要知道,不用背
2.什么是inode
理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。
这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。每一个文件都有对应的inode,里面包含了与该文件有关的一些信息。
3.硬链接和软链接
硬链接:由于 Linux 下的文件是通过索引节点(inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配 inode 。每添加一个硬链接,文件的链接数就加 1 。
- 不足:1. 不可以在不同文件系统的文件间建立链接;2. 只有超级用户才可以为目录创建硬链接。
软链接:软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
- 不足:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。
实际场景下,基本是使用软链接。总结区别如下:硬链接不可以跨分区,软件链可以跨分区。硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点。删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除
三、安全
1.一台 Linux 系统初始化环境后需要做一些什么安全工作?
- 添加普通用户登陆,禁止 root 用户登陆,更改 SSH 端口号。
- 服务器使用密钥登陆,禁止密码登陆。
- 开启防火墙,关闭 SElinux ,根据业务需求设置相应的防火墙规则。
- 装 fail2ban 这种防止 SSH 暴力破击的软件
- 设置只允许公司办公网出口 IP 能登陆服务器(看公司实际需要
- 修改历史命令记录的条数为 10 条
- 只允许有需要的服务器可以访问外网,其它全部禁止。
- 做好软件层面的防护。
2.什么叫 CC 攻击?什么叫 DDOS 攻击?
-
CC 攻击,主要是用来攻击页面的,模拟多个用户不停的对你的页面进行访问,从而使你的系统资源消耗殆尽。
-
DDOS 攻击,中文名叫分布式拒绝服务攻击,指借助服务器技术将多个计算机联合起来作为攻击平台,来对一个或多个目标发动 DDOS 攻击。
四、实战
1.基本命令
文件和目录处理
cd
change directory:英文释义是改变目录 ,切换目录
[tmn@lijin ~]$ cd testDir/
[tmn@lijin testDir]$
pwd
print working directory:显示当前工作目录的绝对路径
[tmn@lijin ~]$ pwd
/home/tmn
ls
list的缩写,查看列表,查看当前目录下的所有文件夹(ls 只列出文件名或目录名)
[tmn@lijin ~]$ ls -lu //查看文件最后被访问的时间
total 0
-rw-rw-r-- 1 tmn tmn 0 Sep 6 10:26 file.txt
drwxrwxr-x 8 tmn tmn 294 Sep 4 17:19 jdk-8
drwxrwxr-x 2 tmn tmn 22 Sep 6 10:26 testDir
[tmn@lijin ~]$ ls -lu file.txt
-rw-rw-r-- 1 tmn tmn 0 Sep 6 10:26 file.txt
[tmn@lijin ~]$ ls -l file.txt //查看文件最后被编辑的时间
-rw-rw-r-- 1 tmn tmn 0 Sep 6 10:24 file.txt
[tmn@lijin ~]$ ls -a //查看所有文件
. .. .bash_history .bash_logout .bash_profile .bashrc .config .dbus .esd_auth file.txt jdk-8 .mozilla testDir .viminfo .Xauthority
[tmn@lijin ~]$ ls -i //显示文件索引节点号
17729197 file.txt 51879219 jdk-8 17729198 testDir
[tmn@lijin ~]$ ls -m //逗号分隔
file.txt, jdk-8, testDir
ll
ll:list的缩写,查看列表详情,查看当前目录下的所有详细信息和文件夹(ll 结果是详细,有时间,是否可读写等信息)
ll -a #显示所有文件,隐藏文件也显示出来
ll -R #连同子目录内容一起列出来
ll -h #友好展示详情信息,可以看大小
ll -al #即能显示隐藏文件又能显示详细列表。
tree
[tmn@lijin ~]$ sudo yum -y install tree
BC-Linux-8.6 AppStream 3.3 MB/s | 10 MB 00:03
BC-Linux-8.6 - BaseOS 700 kB/s | 5.2 MB 00:07
BC-Linux-8.6 - kernel-bek 771 kB/s | 1.5 MB 00:01
BC-Linux-8.6 - kernel-kpatch 7.1 kB/s | 2.7 kB 00:00
Package tree-1.7.0-15.0.1.an8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
tree -l //树形列出目录内容
tree -a //所有
tree -i
tree -s
tree -t
touch
touch:创建文件
[tmn@lijin testDir]$ touch file
[tmn@lijin testDir]$ ls
file
mkdir
mkdir:创建目录) 创建目录
[tmn@lijin ~]$ mkdir testDir
[tmn@lijin ~]$ ls
jdk-8 testDir
file
[tmn@lijin testDir]$ file -b file.txt
empty
[tmn@lijin testDir]$ cat > file.txt
hello world
eof
[tmn@lijin testDir]$ stat file.txt
File: file.txt
Size: 16 Blocks: 8 IO Block: 4096 regular file
Device: fc00h/64512d Inode: 17729202 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ tmn) Gid: ( 1000/ tmn)
Access: 2024-09-06 10:26:47.282688058 +0800
Modify: 2024-09-06 11:08:24.163359362 +0800
Change: 2024-09-06 11:08:24.163359362 +0800
Birth: 2024-09-06 10:26:47.282688058 +0800
[tmn@lijin testDir]$ file -b file.txt
ASCII text
cat
concatenate:显示或把多个文本文件连接起来)查看文件命令
[tmn@lijin testDir]$ cat file.txt
hello world
eof
more
(more:更多的意思)分页查看文件命令
less
(lese:较少的意思)分页查看文件命令
tail
(尾巴) 查看文件命令(看最后多少行)
tail -10 文件名 #看最后10行
cp
(copy单词缩写,复制功能)
[tmn@lijin ~]$ cp file.txt testDir/
[tmn@lijin ~]$ ls testDir/
file.txt
[tmn@lijin ~]$ ls
file.txt jdk-8 testDir
mv
(move单词缩写,移动功能,该文件名称功能)
[tmn@lijin testDir]$ mv file file.txt
[tmn@lijin testDir]$ ls
file.txt
[tmn@lijin testDir]$ mv file.txt ../
[tmn@lijin testDir]$ ls ../
file.txt jdk-8 testDir
rm
(remove:移除的意思)删除文件,或文件夹
-f或--force 强制删除文件或目录。删除文件不包括文件夹的文件 -r或-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并删除。 -rf 强制删除文件夹及内容
rm 文件名 ;安全删除命令 (yes删除 no取消)
rm -rf 强制删除文件夹及内容
rm -rf * 删除当前目录下的所有内容。
rm -rf /* 删除Linux系统根目录下所有的内容。系统将完蛋。
find
(find:找到的意思)查找指定文件或目录
* 表示0~多个任意字符。
find -name 文件名;按照指定名称查找在当前目录下查找文件
find / -name 文件名;按照指定名称全局查找文件
find -name '*文件名' ;任意前缀加上文件名在当前目录下查找文件
find / -name '*文件名*' ;全局进行模糊查询带文件名的文件
chmod
修改文件权限
在 Linux 系统中,文件权限是通过一组数字来表示的,这些数字代表了文件或目录的访问权限。这些数字由三组数字组成,每组数字代表不同的用户类别对文件或目录的权限。这三组用户类别分别是:
- 所有者(Owner):文件的创建者,默认拥有对文件的完全控制权。
- 所属组(Group):文件所属的用户组。
- 其他用户(Others):系统中除了文件所有者和所属组成员之外的所有用户。
每组权限由三个数字表示,分别代表:
- 读(Read, r):值为 4
- 写(Write, w):值为 2
- 执行(Execute, x):值为 1
权限的数字是这三个值的累加。以下是一些常见的权限设置:
- 700:所有者拥有读、写和执行权限,所属组和其他用户没有任何权限。
- 755:所有者拥有读、写和执行权限,所属组和其他用户拥有读和执行权限,但没有写权限。这通常用于可执行文件或脚本。
- 777:所有者、所属组和其他用户都拥有读、写和执行权限。这种设置非常危险,因为它允许任何用户修改文件,可能会导致安全问题。
- 644:所有者拥有读和写权限,所属组和其他用户只有读权限。这是文本文件和脚本的常见设置。
- 600:所有者拥有读和写权限,所属组和其他用户没有任何权限。这通常用于敏感的配置文件。
- 666:所有者、所属组和其他用户都有读和写权限,但没有执行权限。这种设置不推荐,因为它通常不是有意为之。
要修改文件权限,你可以使用 chmod
命令。以下是一些 chmod
的使用示例:
-
设置权限为 755:
chmod 755 filename
-
为所有者添加执行权限(假设当前权限为 644):
chmod u+x filename
-
为所属组添加写权限(假设当前权限为 755):
chmod g+w filename
-
为其他用户添加读权限(假设当前权限为 755):
chmod o+r filename
-
移除所属组的执行权限(假设当前权限为 775):
chmod g-x filename
请谨慎使用
chmod
命令,特别是不要随意将权限设置为 777,除非你非常清楚这样做的后果。
文件内容处理
vi
(VIsual:视觉)文本编辑器 类似win的记事本 (操作类似于地下的vim命令,看底下vim 的操作)
vim
(VI IMproved:改进版视觉)改进版文本编辑器 (不管是文件查看还是文件编辑 按 Shift + 上或者下可以上下移动查看视角)
输入”vim 文件名” 打开文件,刚刚时是”一般模式”。
一般模式:可以浏览文件内容,可以进行文本快捷操作。如单行复制,多行复制,单行删除,多行删除,(退
出)等。
插入模式:可以编辑文件内容。
底行模式:可以进行强制退出操作,不保存 :q!
可以进行保存并退出操作 :wq
按下”i”或”a”或”o”键,从”一般模式”,进入”插入模式(编辑模式)”。
在编辑模式下按”Esc” 即可到一般模式
在一般模式下按”:”,冒号进入底行模式。
在一般模式下的快捷键
dd ;删除一整行
X ;向前删除 等同于windowns系统中的删除键
x ;向后删除和大写x相反方向
Ctrl + f ;向后看一页
Ctrl + b ;向前看一页
u ;撤销上一步操作
/word ;向下查找word关键字 输入:n查找下一个,N查找上一个(不管是哪个查找都是全局查找 只不过
n的方向相反)
?log ;向上查找log关键字 输入:n查找上一个,N查找下一个
:1,90s/redis/Redis/g ;把1-90行的redis替换为Redis。语法n1,n2s/原关键字/新关键字/g,n1
代表其实行,n2代表结尾行,g是必须要的
:0 ;光标移动到第一行
:$ ;光标移动到最后一行
:300 ;光标移动到300行,输入多少数字移动到多少行
:w ;保存
:w! ;强制保存
:q ;退出
:q! ;强制退出
5dd ;删除后面5行,打一个参数为自己填写
5x ;删除此光标后面5个字符
d1G ;删除此光标之前的所有
d0 ;从光标当前位置删除到此行的第一个位置
yy ;复制
p ;在光标的下面进行粘贴
P ;在光标的上门进行粘贴
|
管道命令(把多个命令组合起来使用)
grep
(grep :正则表达式)正则表达式,用于字符串的搜索工作(模糊查询)。
单独使用:
grep String test.java ;在test.java文件中查找String的位置,返回整行
一般此命令不会单独使用下面列几个常用的命令(地下通过管道命令组合起来使用)
ps aux|grep java ;查找带java关键字的进程
ll |grep java ;查找带java关键字的文件夹及文件
sort
文件内容排序
[tmn@lijin testDir]$ cat > file.txt
4
3
2
1
[tmn@lijin testDir]$ sort file.txt
1
2
3
4
[tmn@lijin testDir]$ sort -r file.txt
4
3
2
1
压缩和解压
tar (解压 压缩 命令)
常用的组合命令:-z 是否需要用gzip压缩。-c 建立一个压缩文件的参数指令(create) –压缩-x 解开一个压缩文件的参数指令(extract) –解压 -v 压缩的过程中显示文件(verbose)-f 使用档名,在f之后要立即接档中(file)
常用解压参数组合:zxvf
常用压缩参数组合:zcvf
解压命令:
tar -zxvf redis-3.2.8.tar.gz ;解压到当前文件夹
tar -zxvf redis-3.2.8.tar.gz -C /opt/java/ ;解压到指定目录
压缩命令:(注意 语法有点反了,我反正每次都搞反)
tar -zcvf redis-3.2.8.tar.gz redis-3.2.8/ ;语法 tar -zcvf 压缩后的名称 要压缩的
文件
tar -zcvf 压缩后的文件(可指定目录) 要压缩的文件(可指定目录)
其他
clear 清屏命令
(强迫症患者使用)
ps
ps (process status:进程状态,类似于windows的任务管理器)
常用组合:ps -ef
ps -aux
标准的格式查看系统进程
BSD格式查看系统进程
ps -aux|grep redis BSD格式查看进程名称带有redis的系统进程(常用技巧)
//显示进程的一些属性,需要了解(ps aux)
USER //用户名
PID //进程ID号,用来杀死进程的
%CPU //进程占用的CPU的百分比
%MEM //占用内存的的百分比
VSZ //该进程使用的虚拟內存量(KB)
RSS //该进程占用的固定內存量(KB)
STAT //进程的状态
START //该进程被触发启动时间
TIME //该进程实际使用CPU运行的时间
kill
用来中止一个进程。(要配合ps命令使用,配合pid关闭进程)(ps类似于打开任务管理器,kill类似于关闭进程)
kill -5 PID ;推荐,和平关闭进程
kill -9 PID ;不推荐,强制杀死进程
ifconfig命令
用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。(一般是用来查看的,很少更改)
如果此命令输入无效,先输入yum -y install net-tools
ping
(用于检测与目标的连通性)语法:ping ip地址
free 命令
(显示系统内存)
显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s <间隔秒数> 持续显示内存
-t 显示内存使用总合
top 命令
#显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等
-c 显示完整的进程命令
-s 保密模式
-p <进程号> 指定进程显示
-n <次数>循环显示次数
netstat命令
用于显示网络状态
file 文件名
(可查看文件类型)
Linux centos 重启命令:reboot
Linux centos 关机命令:halt
查看时间命令:date
更改为北京时间命令
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
Linux包的安装
yum、rpm、源码包