当前位置:   article > 正文

Linux基础操作命令-文件、用户、权限、进程、管道、重定向、磁盘、查找、压缩、软件安装_linux基础知识包括常用命令、权限、磁盘卷管理、用户管理

linux基础知识包括常用命令、权限、磁盘卷管理、用户管理

1.文件和用户管理

文件管理

1.Linux目录结构
以单根的方式组织文件/
  • 1
  • 2

在这里插入图片描述

文件夹的主要功能
bin 执行命令
boot 启动目录
dev 物理设备都在这里面
etc 配置文件 使用最多的文件夹
home 普通用户的家目录
root 超级管理员的家。root用户可以进入
tmp 临时文件
usr 安装程序
var 可变的,日志文件啥的
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
命令的组成:
命令 选项 参数
ls   -l    /
  • 1
  • 2
  • 3
查看文件详细信息
ls -l 
	lrwxrwxrwx   1 root root          7 3月   8 20:53 bin -> usr/bin

第一个字符代表文件类型:
- 普通文件
d 普通文件夹
l 链接文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
cd 绝对路径/相对路径
  • 1
touch 路径和文件名    创建文件
  • 1
mkdir 路径和目录名    创建文件夹
mkdir -p /home/dir1/dir2/dir3  只要没有的文件,连续创建文件夹
  • 1
  • 2
cp 路径和源文件 路径和目标文件夹   拷贝一个文件
cp -r 路径和文件夹 路径和文件夹    拷贝整个文件夹
  • 1
  • 2
mv 路径和源文件 路径和目标文件     移动(可以改名,原地移动-可以实现不移动直接改名)
  • 1
删除文件的命令:
rm -rf 文件或者目录的路径                              删除指定的文件和目录
rm -rf 文件或者目录的路径    文件或者目录的路径         删除指定的文件和目录
rm -rf 路径/*                       路径下的所有文件
rm -rf 路径/b.*                     路径下以b开头的所有文件
rm -rf 路径/*.txt                   路径下以.txt结尾的所有文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
查看文件的命令:
cat    路径和文件名                   查看文件
head -6 1.txt
tail -5 1.txt
more 1.txt                           翻页的功能
grep c 1.txt                         对1.txt文件过滤关键字c
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
重定向:
ls   /           > 1.txt             把/下面的东西,写入到1.txt里面去
cat /etc/hosts   >  1.txt
  • 1
  • 2
  • 3
gedit 1.txt       图形文件编辑器(记事本)
  • 1
vim

vim 1.txt 进入命令模式
i         进入编辑模式

esc       进入命令模式
	:wq        命令-保存并退出
	:set nu    标注行号
	yy 复制选中或一行   5yy
	dd 删除一行   5dd
	p  粘贴
	u  撤销
	
V       进入可视化模式,进行区域选择


光标定位:
hjkl    上下左右
0 $      行首行位
gg G     页首页尾
3G       进入第三行

/字符串  在文本中查找指定字符串,n往下翻,N往上翻

查找替换
:范围    s/原内容/新内容/全局
:1,5    s/root/qianfeng/g 

另存为
:w /tmp/aaa.txt 

:set list 显示控制字符
:set nonu 取消行号
  • 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
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
vim 是一个应用程序
cmd(windows)==shell(linux)  命令行解释器,是一个程序,也就是所说的黑窗口
  • 1
  • 2
临时文件
vim /1.txt
    /.1.txt.swap 这一份,是服务器给你的备份 
如果非正常保存退出时,就会生成这个临时文件
1.查看隐藏文件 ls -a /
2.使用rm -rf     删除他就可以了
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
mkdir /home/dir2 /home/dir3
mkdir /home/{dir4,dir5}
mkdir -p /home/{qianfeng/{dir1,111},nizhan}
  • 1
  • 2
  • 3
touch /home/dir10/{file1,file2,.files3}
rm -rf /home/dir10/*   删除不掉隐藏文件
  • 1
  • 2

用户管理

etc 配置文件
cat /etc/passwd

head -1 /etc/passwd
	root :  x        :   0  :  0 : root: /root :  /bin/bash
    用户名: 密码占位符:  uid : gid: 描述: HOME   : shell
    
    uid 0      root
        1-499  系统用户
        1000-  普通用户
    
    jfp:x:1000:1000:jfp:/home/jfp:/bin/bash
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
2.用户组信息存储的文件
用户基本信息文件
	/etc/passwd 
用户密码信息文件
	/etc/shadow
 组信息文件
	/etc/group

cat /etc/shadow 
jfp:$6$PkQes9/qjHapKBGq$cRju207rwTewKAwMvHCM4wjhyU/eZ8NYs/huHxN2MXcovTFLPm7XEgKYfXLHrpkurx7QRolGmvWesaglSIuV10 :19424  :   0  : 99999  :7:::
用户名:密码加密值 :最后一次修改的时: 密码修改需要的间隔时间 :密码有效期:警告时间(7):不活动时间:失效时间:保留
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
cat /etc/group
jfp:x:1000:  组名:组密码:组ID:组成员
  • 1
  • 2
useradd user01
id user01  查看用户的详细信息
passwd user01 修改密码

ls /var/spool/mail/user01  存放的是邮件

useradd user02 -u 1503  创建用户,指定相应的信息,指定uid
useradd user03 -d jfp 指定新用户的家目录
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
useradd --help  查看useradd怎么用
userdel -r user01  -r删除的比较干净
usermod -s /sbin/nologin user01   改变用户的shell命令
  • 1
  • 2
  • 3
groupadd hr
cat /etc/group          查询组的信息
groupadd net01 -g 2000  指定gid
  • 1
  • 2
  • 3
关于组,只要搞清楚用户属于哪个组就行了。基本组和附加组理解概念。

组的类型
	基本组 随用户的创建而创建,组名和用户名相同
	附加组 假如,把zhangsan加入到wangwu的组中,成为他的成员。那么,zhangsan用户,得到两个不同类型的组。对于zhangsan来说,zhangsan组是zhangsan的基本组,wangwu组是zhangsan的附加组。
	
查看基本组
cat /etc/passwd
user01:x:1001:1001::/home/user01:/bin/sh  根据uid gid来查询
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
1 useradd是创建用户的命令。
2 usermod是修改用户的命令。
3 groupadd是创建组的命令。
4 -u制定用户的UID。
5 -g制定用户的基本组。
6 -G制定用户的附加组。
7 /etc/passwd可以查看的是用户的基本组。
8 /etc/group可以查看用户的附加组。id命令也可以
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
系统默认基本组就是用户名,比如用户AAA 组就是AAA 
useradd AAA
grep AAA /etc/passwd

useradd BBB
grep BBB /etc/passwd

groupadd CCC
grep CCC /etc/group

grep AAA /etc/passwd   使用这条命令,查看用户的uid gid来确定用户的基本组

usermod AAA -g CCC  修改用户AAA的基本组为CCC  可以说明,用户和组之间没有强制的关联

usermod BBB -G CCC	用户的BBB的附加组是CCC
grep BBB /etc/passwd  查看基本组

grep CCC /etc/group   查看附加组,最后有两个成员,一个AAA,一个BBB   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
su
sudo
  • 1
  • 2
以root的身份授权普通用户xulei
useradd xulei -G wheel   指定附加组wheel,这个组的权限比较大
passwd xulei 设置密码

以xulei的身份登录
useradd gougou10        创建用户,权限不够
sudo useradd gougou10    提权创建用户
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.用户的权限

基本权限UGO
基本权限ACL
特殊权限
  • 1
  • 2
  • 3
权限类型 
读   r   4
写   w   2
执行 x   1
  • 1
  • 2
  • 3
  • 4
cd /tmp
touch file1
ls -l file1
	-rw-r--r-- 1 root root 0 6月  26 18:50 file1

    -     rw-   r--   r--     1      
文件类型   u      g    o     链接数   

命令       [对象        +/-/=     权限]         文件或目录
chmod      [(u g o a)  +/-/=   (r w x -)]

chmod 671 file.txt  使用数字直接修改权限
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
更改属主 属组

chmod 644 file1.txt
ls -l /tmp/file1.txt
	-rw-r--r-- 1 root root 0 6月  27 20:32 file1.txt
该文件属于root用户,root组

chown设置一个文件属于谁,属主
groupadd hr
useradd user01
chown user01.hr file1.txt
ls -l /tmp/file1.txt
	-rw-r--r-- 1 user01 hr 0 6月  27 20:32 file1.txt
当user01这个用户登录的时候,是可以直接拥有这个文件的权限的

chgrp 组名 文件 -R是递归的意思


chmod 改权
chown 改主/组
chgrp 改组

针对hr部门的访问目录设置权限:
1.root用户和hr组的员工可以读、写、执行
groupadd hr
useradd hr01 -G hr   让hr01用户进组
useradd hr02 -G hr
mkdir /home/hr
ls -d -l hr
	drwxr-xr-x 2 root root 4096 6月  27 20:55 hr
chown root.hr /home/hr
	drwxr-xr-x 2 root hr 4096 6月  27 20:55 hr
chmod 770 /home/hr
  • 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
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
chmod chown
如果有个文件,需要我们设置四个用户对文件有不同的权限,如下结果。请问使用chmod和chown能否实现? NO
用户1 读 file1.txt
用户2 读写 file1.txt
用户3 读写执行 file1.txt
用户4 读执行 file1.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
基本权限ACL 访问控制列表 Access control list
限制用户对文件的访问 ACL是UGO的补充
ACL文件权限管理∶设置不同用户,不同的基本权限(r、w、x)。(直接对用户进行设置,更加的细粒度)
UGO设置基本权限:只能一个用户,一个组和其他人(对文件进行设置,然后让这个文件属于谁,比较粗粒度)

setfacl -m u:alice:rw /home/test.txt  对于文件test.txt,设置u alice 有rw权限

查看文件有哪些alc权限
getfacl test.txt
    # file: test.txt
    # owner: root
    # group: root
    user::rw-
    user:root:rwx (自己设置的)
    group::r--
    mask::rwx
    other::r--
    
 setfacl -x u:alice /home/test.txt  对于文件test.txt,删除u alice acl权限
 setfacl -b /home/test.txt  对于文件test.txt,删除所有acl权限
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
watch -n1 'ls -l /tmp/file.txt'  实时检测文件的一些属性变换
  • 1
特殊权限:
suid(sgid) 针对文件/程序时,具备临时提升权限
ll file1.txt
-rw-r----- 1 root root 0 6月  27 20:32 file1.txt
   |
属主的执行位

属主的能力rw-
other的能力---
如果属主的执行位是s,则其他人临时拥有属主的能力

1.suid是针对文件所设置的一个特别的权限。
功能:使调用文件的用户,临时具备属主的能力。

cat这个命令 root用户使用时可以看任何文件,但是普通用户使用cat时,有些文件是不能看的
ll /usr/bin/cat
chmod u+s /usr/bin/cat
这个时候使用普通用户使用cat时,和root具有一样的权利
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
给文件加上特殊的属性
chattr +... 文件夹名
touch file100
chattr +i file100        这个文件不能修改、删除...
chattr -i file100        这个文件不能修改、删除...
  • 1
  • 2
  • 3
  • 4
  • 5
新建文件、目录的默认权限会受到umask的影响,umask表示要减掉的权限
umask
	0022
	
touch file800
chmod u+s file800 属主的执行位变成s,如果属主的执行位有执行权限,如果没有,则变成S

chmod 7777 file800 四个数,平时使用三个

0777-0022=0755 文件夹  0755-0111=0644 文件

umask 0000 修改umask的值
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3.进程管理

1.进程管理

4.进程是已启动的可执行程序的运行实例,进程有以下组成部分:
    .一个文件;
    ·被配内存的地址空间;
    ·有权限限制;
    ·程序代码的一个或多个副本(也叫执行线程);
    ·像人一样拥有状态;
    
    程序︰二进制文件,静态/bin/date,/usr/sbin/httpd ,/usr/sbin/sshd,/usr/local/nginx/sbin/ngix
	进程:是程序运行的过程,动态,有生命周期及运行状态。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

ps aux | head -2 查看进程信息
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.3 168968 13088 ?        Ss   01:55   0:06 /sbin/init sp
用户                *
进程ID              *
CPU占用率
内存占用率
占用虚拟内存
占用实际内存
TTY 进程运行的终端
进程的状态           *
进程的启动时间
进程文件 进程名      *
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述

在这里插入图片描述

	1.什么是程序
	    具有执行代码和执行权限的文本文件。
	2.什么是进程
		是运行起来的程序。获得计算机各方面的资源(CPl,MEM,DISK,NETWORK,PID,STAT)
	3.进程的生命周期
		由系统程序,fork出来的子程序。具备一定父的资源(权利,内存空间,PID)。直到运行完毕,退出系统。
		4.进程有哪些状态?
		R一run
		T一stop 
		s-sleep
		Z一zombie
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
ps aux | grep vim                      查看大部分进程信息 并过滤
ps a显示现行终端机下的所有程序
ps u以用户为主的格式来显示程序状况。
ps x不以终端机来区分。

ps aux --sort - %cpu     按cpu降序排序进程
ps -ef                  查看进程的父子关系
ps axo user,pid,ppid    显示进程信息的指定列
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
top 实时检测进程的信息

top - 20:12:57 up 18:17,  1 user,  load average: 0.27, 0.06, 0.02
Tasks: 305 total,   1 running, 304 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.6 us,  0.5 sy,  0.0 ni, 97.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   3877.8 total,    527.4 free,   1072.4 used,   2278.0 buff/cache
MiB Swap:   2048.0 total,   2046.5 free,      1.5 used.   2520.8 avail Mem 

PID USER PR NIVIRT RES SHR s %CPU %MEM TiME+ COMMAND
        

top - 20:12:57 up 18:17,  1 user,  load average: 0.27, 0.06, 0.02
程序名  系统时间  运行时间 登录用户数  CPU负载      5     10     15分钟占用多少
Tasks: 305 total,   1 running, 304 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.6 us,  0.5 sy,  0.0 ni, 97.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
             用户     系统    优先级    空闲      等待    硬件      软件    虚拟机
MiB Mem :   3877.8 total,    527.4 free,   1072.4 used,   2278.0 buff/cache
MiB Swap:   2048.0 total,   2046.5 free,      1.5 used.   2520.8 avail Mem 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
top -d 1 -p 1235  按照进程号查询进程,每d秒更新一次
  • 1
kill -l  查看所有支持的信号
编号信号名
1) SIGHUP重新加载配置
	kill -l 8878(进程号)
2) SIGINT键盘中断Ctrl+C
3) SIGQUIT键盘退出Ctrl+\,类似SIGINT
20)SIGTSTP键盘暂停Ctrl+Z

9) SIGKILL强制终止,无条件
	kill -9 进程号
15)SIGTERM终止(正常结束),缺省信号
	kill -15 进程号
18) SIGCONT继续
19) sIGSTOP暂停
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
1.什么是程序
具备一个讦算机指令的文件,可以被计算机执行
2.什么是进程
一个运行了的程序。将获得计算机的资源。CPU时间,内存空间,磁盘空间,磁盘10,网络带宽。权限,PID。
3.在linux系统中,我们如何查看进程?
	ps auxtop
4.ps aux命令展示了进程的哪些方面的信息。
user :用户
PID:进程的编号
%CPU:占用CPU时间的百分比。%MEM:占用内存空间的百分
VSZ RSS:(略)虚拟内存和实际内存占用的大小TTY:终端的类型ptsOpts1
STAT:(重要)运行,睡眠,停止,退出,僵死
START:进程启动的时间
TIME:占用cpu的时间
commmand:科序的路径和名称

top
第一行:程序名,系统时间,CPU占用率(1.5.15)第二行:任务数。
第三行:CPU占用率。
第四行:内存空间。K_M_G
第五行:交换分区(硬盘的一部分空间。存放常用数据)
5.我们如何控制进程的运行。
kill  信号 PID

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
优先级:
  • 1

在这里插入图片描述

ps axo pid,command,nice --sort=-nice | head 5 

    PID COMMAND                      NI
     46 [khugepaged]                 19
  43425 /usr/bin/python3 /usr/lib/u  19
  43440 /usr/bin/python3 -Es /usr/b  19
     45 [ksmd]                        5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
默认情况下,启动进程时,通常会继承父进程的nice级别,默认为0
sleep 6000 & 后台去执行6000秒
ps axo pid,command,nice | grep sleep

nice -n -5 sleep 7000 &
ps axo pid,command,nice | grep sleep

renice -20 2669(进程号)
ps axo pid,command,nice | grep sleep
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
top -d 1 -p 45487 45608
  • 1

在这里插入图片描述

2.作业管理

sleep 2000  &  把一个程序丢到后台自己运行
ps aux | grep sleep  查看所有进程
jobs 查看后台进程,显示作业号
fg 4 把作业4调回前台
kill %4 消灭四号作业
  • 1
  • 2
  • 3
  • 4
  • 5

3.虚拟文件系统

虚拟文件系统(proc):采集服务器自身内核、进程运行的状态信息
cat /proc/cpuinfo cpu
cat /proc/meminfo 内存
cat /proc/cmdline 内核
	BOOT_IMAGE=/boot/vmlinuz-5.15.0-75-generic(内核基本上是一样的,不同的linux操作系统都是在内核上做文章)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.管道和重定向

1.重定向

date > time.txt 重定向,把date日期的显示结果输送到文件夹里面
  • 1
FD
不同的程序有不同的一套FD
  • 1
  • 2

在这里插入图片描述

计算机里面有两个文件
1.一个文件代表键盘 一个文件代表显示屏
2.由于路径太长,我们使用数字代替路径
3.0:stdin
4.1:stdout  2:stderr
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

给文件建立软连接快捷方式
ln -s 123.txt 333
cat 123.txt 和下面效果一样
cat 333
ls -l
  • 1
  • 2
  • 3
  • 4
  • 5
通过VIM程序,来观察一个进程的FD信息
vim 66566.txt 一直开着这个窗口
新打开一个窗口
ps aux |grep vim  查看vim的进程号48153
ls -l /proc/48153/fd
	0 1 2 3 四个文件
	lrwx------ 1 jfp jfp 64 Jul  3 18:36 0 -> /dev/pts/0
	lrwx------ 1 jfp jfp 64 Jul  3 18:36 1 -> /dev/pts/0
	lrwx------ 1 jfp jfp 64 Jul  3 18:36 2 -> /dev/pts/0
	lrwx------ 1 jfp jfp 64 Jul  3 18:36 3 -> /home/jfp/Desktop/.123.txt.swp


echo 123 > /dev/pts/0 会把123写入到66566这个文件夹里面
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
输出重定向:
正确输出 1>==>     覆盖
         1>>==>>   追加
 1代表这个程序的FD 标准输出 >引导
 date 1> /dev/pts/0 会输入上面的66566这个文件夹里面去
 date 1> /dev/pts/1(当前屏幕的终端) 可能会输入到当前的窗口上
 
 错误输出 2>
          2>>
          
  ls /home/ /aaaaaa &> list.txt   正确错误都输入到文件里面
  ls /home/ /aaaaaa &> /dev/null  啥也不显示
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
输入重定向
vim word.txt
mail -s "test01" alice <word.txt
  • 1
  • 2
  • 3

2.管道

piping管道
cat /etc/passwd | grep "root" | head -1
  • 1
  • 2

在这里插入图片描述

tee管道
cat /etc/passwd   |tee file888.txt |   tail -1
  • 1
  • 2

在这里插入图片描述

参数传递 Xargs
cp rm 一些特殊的命令不服其他的程序
touch /home/file{1,5}
vim files.txt
	/home/file1
	/home/file3
	/home/file5
	
cat files.txt |xargs rm -rvf  删除文件夹里面的内容
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
把一段话一次输入到一个文件里面去
vim 123.sh
	cat > /2001/1.conf <<EOF
	1111111111
	2222222222
	3333333333
	EOF
chmod +x 123.sh
./123.sh

cat 1.conf
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

5.磁盘管理

1.基本分区

创建主分区

磁盘简介
kernel对不同接口硬盘命名方式
	IDE(并口)
	SATA(串口)
		/dev/sda
			/dev 设备文件目录
			s代表sata就是串口
			d代表磁盘
			a代表第一块
		/dev/sdb

分区方式
	MBR
		MBR支持最大的磁盘容量是<2TB。设计时分配4个分区
		如果希望超过4个分区,需放弃主分区,改为扩展分区和逻辑分区。
	GPT
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
管理磁盘
添加磁盘:VM添加硬盘
管理磁盘流程3部曲:分区(MBR或者GPT) --->-格式化/文件系统Filesystem ----挂载mount
	新硬盘;毛坯房
	分区:隔间
	格式化/文件系统:放家具/打造格子柜
	挂载:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
查看磁盘信息:
	ll /dev/sd*
        brw-rw---- 1 root disk 8,   0 Jul  5 12:05 /dev/sda
        brw-rw---- 1 root disk 8,   1 Jul  5 12:05 /dev/sda1
        brw-rw---- 1 root disk 8,   2 Jul  5 12:05 /dev/sda2
        brw-rw---- 1 root disk 8,   5 Jul  5 12:05 /dev/sda5
        brw-rw---- 1 root disk 8,  16 Jul  5 12:05 /dev/sdb
        brw-rw---- 1 root disk 8,  32 Jul  5 12:05 /dev/sdc
	lsblk
	    sda      8:0    0   100G  0 disk 
        ├─sda1   8:1    0   512M  0 part /boot/efi
        ├─sda2   8:2    0     1K  0 part 
        └─sda5   8:5    0  99.5G  0 part /
        sdb      8:16   0     5G  0 disk 
        sdc      8:32   0     5G  0 disk 
        sdd      8:48   0     5G  0 disk 
        sde      8:64   0     5G  0 disk 
        sdf      8:80   0     5G  0 disk 
        sdg      8:96   0     5G  0 disk 
        sdh      8:112  0     5G  0 disk 
        sr0     11:0    1  1024M  0 rom 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
创建分区:
MBR:把房子分成卧室和客厅
启动分区工具
	fdisk /dev/sdb
进入会话模式
提示1:
	Changes will remain in memory only, until you decide to write them.
	Be careful before using the write command.

     Device does not contain a recognized partition table.
     Created a new DOS disklabel with disk identifier 0xd42a103a.

     Command (m for help): 按n键	
提示2:
	Partition type
   		p   primary (0 primary, 0 extended, 4 free)
   		e   extended (container for logical partitions)
	Select (default p): p
提示3:
Partition number (1-4, default 1):1
提示4:
First sector (2048-10485759, default 2048): 2048
提示5:
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-10485759, default 10485759):+2G
提示6:
Created a new partition 1 of type 'Linux' and of size 2 GiB.

Command (m for help): w

提示7:
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

刷新分区表:
partprobe /dev/sdb

查看分区结果:
fdisk -l /dev/sdb
	Disk /dev/sdb: 5 GiB, 5368709120 bytes, 10485760 sectors
	Disk model: VMware Virtual S
	Units: sectors of 1 * 512 = 512 bytes
	Sector size (logical/physical): 512 bytes / 512 bytes
	I/O size (minimum/optimal): 512 bytes / 512 bytes
	Disklabel type: dos
	Disk identifier: 0xd42a103a

	Device     Boot Start     End Sectors Size Id Type
	/dev/sdb1        2048 4196351 4194304   2G 83 Linux
lsblk
    sda      8:0    0   100G  0 disk 
    ├─sda1   8:1    0   512M  0 part /boot/efi
    ├─sda2   8:2    0     1K  0 part 
    └─sda5   8:5    0  99.5G  0 part /
    sdb      8:16   0     5G  0 disk 
    └─sdb1   8:17   0     2G  0 part 
    sdc      8:32   0     5G  0 disk 
    sdd      8:48   0     5G  0 disk 
    sde      8:64   0     5G  0 disk 
    sdf      8:80   0     5G  0 disk 
    sdg      8:96   0     5G  0 disk 
    sdh      8:112  0     5G  0 disk 
    sr0     11:0    1  1024M  0 rom
  • 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
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
创建文件系统:房子里的格子柜
mkfs.ext4 /dev/sdb1

    mke2fs 1.45.5 (07-Jan-2020)
    Creating filesystem with 524288 4k blocks and 131072 inodes
    Filesystem UUID: 13ed8da4-4eb5-473c-8803-a3280023ba31
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (16384 blocks): done
    Writing superblocks and filesystem accounting information: done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
挂载
	创建挂载点,一个分区一个挂载点
	mkdir /mnt/disk1
	mount -t ext4 /dev/sdb1 /mnt/disk1

查看挂载信息
	df -hT 查看磁盘使用情况
	/dev/sda1      vfat      511M  4.0K  511M   1% /boot/efi
    tmpfs          tmpfs     388M   20K  388M   1% /run/user/1000
    /dev/sdb1      ext4      2.0G   24K  1.8G   1% /mnt/disk1
	分区         文件系统    大小   占用  空间  占比  挂载点
	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

创建扩展分区

上面只是对一个磁盘sdb创建了一个主分区。我们接着对该磁盘sdb进行分区操作,分区的时候都选择主分区,一共设置四个最多可以设置的主分区。如果想要设置更多的分区,就必须放弃一个主分区,设置扩展分区。
  • 1

在这里插入图片描述

创建扩展分区
使用MBR划分分区
1.4个主分区
2.3个主分区+1个扩展分区(N个逻辑)

启动分区工具
	fdisk /dev/sdb
	d              删除命令,删除一个主分区,创建逻辑分区
	4              分区号
	n              创建分区
	e              扩展分区
	start          默认
	last           默认
	
	fdisk /dev/sdb
	设备Boot            start    End      Blocks   Id       System
    /dev / sdb1         2048   4196351   2097152    83      Linux
	......
    /dev/ sdb4         5015552 10485759  273510    45      Extended

	然后开始对逻辑分区(4)进行进一步划分:
	......
	逻辑分区4是不能存放东西的,但是他划分出来的分区是可以
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

在这里插入图片描述

刷新分区表:
partprobe /dev/sdb

创建文件系统:房子里的格子柜
mkfs.ext4 /dev/sdb5

挂载
	创建挂载点,一个分区一个挂载点
	mkdir /mnt/disk5
	mount -t ext4 /dev/sdb5 /mnt/disk5
	
取消挂载(然后在挂载上去,磁盘里的东西还是有的)
	unmount /dev/sdb5
	
查看挂载信息
	df -hT 查看磁盘使用情况
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

2.交换分区管理swap

在这里插入图片描述

作用:提升内存质量,防止OOM(Out Of Menory)
swap分区:在磁盘上单独划分的一个区域,用来存储热点数据。通常为内存大小的两倍。
  • 1
  • 2
查看当前的交换分区
free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3877        1049        1080           2        1747        2566
    Swap:          2047           0        2047

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
划分swap分区
准备将/dev/sde磁盘,划分为2G分区
    fdisk /dev/sde 划分分区
    	划分分区后按t 将类型设置为82代表交换分区
    	然后按w进行保存
    partprobe /dev/sde 刷新分区
	ll /dev/sde*
		brw-rw---- 1 root disk 8, 64 7月  15 14:35 /dev/sde
		brw-rw---- 1 root disk 8, 65 7月  15 14:35 /dev/sde1
	mkswap /dev/sde1 格式化
	swapon /dev/sde1 挂载
	free -m
		              total        used        free      shared  buff/cache   available
        Mem:           3877        1145         686           3        2045        2459
        Swap:          4095           0        4095
	
	swapoff /dev/sde1 卸载
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述

1.挂载 sd5 /mnt/disk5
在disk5里面创建5个文件1-5 属于磁盘sd5
2.卸载sd5
然后在disk5文件夹里面创建5个文件6-10,属于sda
3.重新挂载sd5
disk5文件夹里面只显示文件1-5 ,因为6-10是sda磁盘的
4.卸载sd5
然后文件夹disk5显示6-10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3.LVM逻辑卷管理

物理磁盘的空间是限定的。不便于管理(拷贝,删除,授权)I单靠物理磁盘,是解决不了空间增长的问题的。
随意扩展磁盘大小
PV:物理卷(Physical volume
vG:卷组(Volume Group)
LV:逻辑卷(Logical Volume)
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

创建逻辑卷
0.准备磁盘
	ll /dev/sd*
1.pv 将物理磁盘转换成物理卷PV
	pvcreate /dev/sdc
		Physical volume "/dev/sdc" successfully created.
2.vg 创建卷组VG
	vgcreate vg1 /dev/sdc
		Volume group "vg1" successfully created
3.lv 
	lvcreate    -L 200M    -n lv2    vg1
	               大小       名字    组名
	               
4.格式化 挂载
mkfs.ext4 /dev/vg1/lv2
mkdir /mnt/lv2
mount /dev/vg1/lv2 /mnt/lv2
df -hT
	/dev/mapper/vg1-lv2 ext4      178M   24K  164M   1% /mnt/lv2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
1.当逻辑卷没有空间的时候,可以在逻辑卷组里面扩充逻辑卷
2.当逻辑卷组没有空间的时候,扩充逻辑卷组
vg扩容
    /dev/vg1 容量由5G扩容到10G
        1.创建PV加入到VG组里面去
            pvcreate /dev/sdd
            vgextend vg1 /dev/sdd
            pvs
                  PV         VG  Fmt  Attr PSize  PFree 
                  /dev/sdc   vg1 lvm2 a--  <5.00g  4.80g
                  /dev/sdd   vg1 lvm2 a--  <5.00g <5.00g
            vgs
                  VG  #PV #LV #SN Attr   VSize VFree 
                  vg1   2   1   0 wz--n- 9.99g <9.80g
lv扩容
	vgs(vg是否还剩空间)
		VG  #PV #LV #SN Attr   VSize VFree 
         vg1   2   1   0 wz--n- 9.99g <9.80g
     lvextend -L +200M /dev/vg1/lv2
     lvs
          LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
          lv2  vg1 -wi-ao---- 400.00m    
      resize2fs /dev/vg1/lv2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
上面的挂载文件那一步在重启电脑之后会失效。
  • 1

4.文件系统详解

格式化 ----------------------创建文件系统
mkfs.ext4 /dev/vg1/lv2
  • 1
  • 2

在这里插入图片描述

问题1:文件是如何准确放到磁盘的某个位置的?
问题2:文件是如何在磁盘(渺茫的空间)快速定位读取的?
答案:
    文件系统:
    windows: FAT16 FAT32 NTFS
    LINUX:EXT3 EXT4 XFS
    
 Ext3:文件系统最大16TB
 Ext4 :文件系统最大16TB
 XFS:文件系统最大100TB.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
EXT3/4文件系统
索引(index)文件系统---目录,字典的前几十页
  • 1
  • 2

在这里插入图片描述

格式化几次,就有几个独立的文件系统
创建一个文件,观察inode信息
ll -i 文件名

lsblk
	/dev/sdb1           ext4      2.0G   24K  1.8G   1% /mnt/disk1
cd /mnt/disk1
touch 1.txt
ls -l -i 1.txt
	12 -rw-r--r-- 1 root root 0 7月  16 16:23 1.txt
	12----inode号
df -i 查看inode的数量
	Filesystem           Inodes  IUsed   IFree IUse% Mounted on
	/dev/sdb1            131072     12  131060    1% /mnt/disk1
inode决定了文件系统中文件的数量,有可能inode用完了,block内存还没有用,所以当inode用完的时候,还是可以往block里面存数据的,block满了就彻底满了。

得出结论
	磁盘空间的限制根inode和Rblock两方面
	请清理掉填满的分区。避免不必要的报错
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

5.符号链接

符号链接:
软连接:(删除源文件,软连接失效)
    cd /mnt/disk1
    echo 111 >file1
    cat /mnt/disk1/file1 
    ln -s /mnt/disk1/file1 /home/jfp/Desktop/file11 创建软连接(快捷方式)
    软连接像快捷方式,可以对文件和目录做软连接。
    软连接记录的只是源文件的绝对路径。
    软连接失去源文件不可用。
硬链接:(只能在一个分区里操作,删除源文件,硬链接有效)
	cd /mnt/disk1
    echo 222 >file2
    cat /mnt/disk1/file2
    ln /mnt/disk1/file2  /mnt/disk1/file2-h1
    硬链接只能针对文件做。不能对目录做。
	硬链接只能在同分区做。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

6.RAID

数据的安全性
加速读取
RAID︰廉价磁盘冗余阵列( Redundant Array of Independent Disks)
作用∶容错、提升读写速率
类型:
	RAID0:条带集 3块磁盘以上,读写速率快100%*N,但不容错
	RAID1:镜像集 2块磁盘 容量50% 读写速度一般 容错
	RAID5:可靠,高速 带奇偶校验条带集3块磁盘以上,利用率(n-1 )/n读写速率快,容错
		至少3(N)块硬盘
		原始数据11 平均分成(N-1)2两份,放到两个磁盘里面,然后对两个磁盘进行公式操作,结果放到第三个磁盘里面去。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.查找压缩

1.文件查找

which :命令查找
find :文件查找,针对文件名
locate :文件查找,依赖数据库
  • 1
  • 2
  • 3
which ls
which mkdir
which pwd

alias xulei='ls --color=auto -l' 给一条命令起别名
  • 1
  • 2
  • 3
  • 4
  • 5
find 路径 选项 表达式 动作

find /etc -name 'a.txt'
命令 路径  选项  描述

find /etc -name 'a.txt'
find /etc -iname 'A.txt' 忽略大小写
find /etc -iname 'A.*' 

find /etc -size +5M/5M/-5M

find  /   -maxdepth 3   -a    -name "ifcfg-en*"  指定深度
命令 路径  深度          and    名字

find /home -user jack 按照属主找
find /home -group hr  按照属组找

find /dev -type f
find /dev -type d   按照文件类型查找

find . -perm 644  -ls                  按照权限
                  查到文件之后的动作

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

2.文件打包和压缩

tar 选项 压缩包名称 源文件

打包 压缩
tar -cf etc.tar /etc                      打包
tar -czf etc-gzip.tar.gz   /etc/          打包压缩   z是gzip压缩
           压缩包的名字     打包的目录
            
解压
tar -xf etc-gzip.tar.gz    解压之后的文件名貌似是压缩时压缩的目录名,不是压缩时所起得到新的名字
tar -xvf etc-gzip.tar.bz2 -C /tmp
                           重定向
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

7.软件安装

开门见山,Ubuntu的包管理工具是apt-get,所以不必再安装yum。如果要安装其他包需要使用apt-get命令。
  • 1

1.RPM包管理

rpm 
二进制无需编译,可以直接使用
示例:mysql-community-common-  5.7.12-1 .el7                    .x86_64           .rpm
     软件包名称                版本号   发布版本(红帽子企业系统)  系统平台(32/64) 文件后缀
  • 1
  • 2
  • 3
  • 4
     
YUM工具 
基于RPM包管理,能够从指定的服务器自动下载RBM包并直安装,
可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

YUM本地源:系统安装光盘
    0.观察YUM核心配置目录
        /etc/yum.repos.d     里面都是下载的地址
        打开一个*.repo        里面有下载的官方地址

    1.删除官方YUM库 
        rm -rf /etc/yum.repos.d/*
    2.编写本地的YUM库配置文件
        vim /etc/yum.repos.d/dvd.repo
            [dvd] 某一个库的名称
            name=dvd   库的说明
            baseurl=file:///mnt/cdrom 下载库的具体地址(本地安装光盘)
            gpgcheck=0 是关闭包校验
            enable=1/0 开启或者关闭
    3.挂载安装光盘
        物理得先加入光盘并且通电
        ls /dev/cdrom(安装光盘)
        mkdir /mnt/cdrom
        vim /root/.bashrc  开机自动执行一些命令, mount /dev/cdrom /mnt/cdrom/ 这个命令写入进去
        mount /dev/cdrom /mnt/cdrom/ 挂载
        ls /mnt/cdrom/Packages 查看rpm安装包
    4.使用YUM安装和卸载程序
        yum install -y httpd安装软件
        systemctl start httpd启动软件
        systemctl stop firewalld关闭防火墙
        systemctl disable firewalld禁用防火墙
    使用YUM管理RPM包
        全新安装 yum -y install httpd    vsftpd
                      yes       软件包1  软件包2
         重新安装 yum -y reinstall httpd
         升级安装 yum -y update httpd

         查询:
         yum list httpd @是已经安装的
         卸载
         yum remove httpd
     
     
RPM工具  无法处理依赖
	cd /mnt/cdrom/Packages
	安装
	rpm -ivh wget.......rpm
    查询
    rpm -q wget.......
    卸载
    rpm -evh wget......
  • 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
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

2.源码包管理

需要经过GCC,C++编译环境编译才能运行
nginx-1.8.1.tar.gz

1.官方网站,可以获得最新的软件包
2.命令行:wget +下载地址
  • 1
  • 2
  • 3
  • 4
  • 5

常见的编译工具
	yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
解压
    useradd www
    tar -xvf nginx-1.8.1.tar.gz
    cd nginx-1.8.1
配置
    ./configure --user=www --group=www --prefix=/usr/local/nginx
 编译
 	make
 安装
 	make install
 启动测试
 	/usr/local/nginx/sbin/nginx
 	systemctl stop firewalld
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/211977
推荐阅读
相关标签
  

闽ICP备14008679号