【Linux】长达一周的Linux(持续总结)< 2 >

简介: 以下使用的Linux开发版是以CentOS7系统来讲解的,如果大家使用的是Ubuntu系统或者其他的可以挑着看,差距也不会很大。以下是我学习韩顺平老师课程的一些总结,以及添加了一些我不明白的地方,用来记录巩固记忆,后续不完善的地方也会继续补充的,那么就开始吧。

15.时间日期指令

date

1.查看日期。

2.修改日期。


cal


查看日历。

cal (看本月日历)

cal 2020 (看2020年的12个月所有日历)



16.搜索查找指令


1)find


递归向下搜索目录。

查询方式:文件名,用户名,文件大小


文件名:find /home -name *.txt (查找home目录下靠文件名的所有txt文件)

用户名:find /opt -user root | more (找opt目录 靠用户名 为root的所有文件,并实现分页功能)

文件大小:find / -size +200M (从根目录找 ,+表示大于200M,-则反之,不写则是=)


2)locate


快速定位文件路径。

直接后面输入文件名字就行了

首次使用需要updatedb指令,创建一个属于这个指令的小型数据库来检索文件。

updatedb

locate hello.txt


3)which


查看某条指令在哪个目录下。


which ls


4)grep(有选项)


从文件内容中查找指定内容。

一般和管道符号| 结合使用,表示将前一个命令的处理结果输出传递给后面的命令处理。

举例: (两个写法)

cat a.txt | grep "hello" (意思就先查找这个文件,且过滤掉除了hello的其他内容)

grep -n "hello" /home/hello.txt

管道还可以往后延伸cat a.txt| grep "hello"|more....等等

选项:

● -w:精准关键字搜索

● -r:递归搜索

● -n:显示行号

● -i:忽略字符大小写

● -o:仅显示匹配到的字符串本身

● -e:支持拓展的正则表达式元字符(egrep)

使用 -e 选项是为了在一个 grep 命令中指定多个模式,以便它能够匹配这些模式中的任何一个。

要匹配包含 hello 或 world 的行,可以使用 -E 选项来启用正则表达式,并使用管道运算符和 grep 命令来实现 或 操作,例如:

grep -E "hello|world" myfile.txt


● -q:不输出任何消息

● -v:显示不被模式匹配到的行(排除匹配结果)

● -c:只统计匹配的行数



17.压缩解压指令


1)gzip/gunzip(压缩和解压)

这两个只能压缩成.gz文件和解压.gz文件。

gzip /home/hello.txt

gunzip /home/hello.txt.gz


2)zip/unzip(压缩和解压)(有选项)

压缩:

zip -r myhome.zip /home 等效于zip -r myhome.zip /home/*

(压缩包括home以及home里面的文件夹,压缩完放到当前目录)

解压:

unzip -d /opt/tmp /home/myhome.zip

(把压缩文件递归解压到绝对路径/opt/tmp目录中。解压哪个呢?解压绝对路径/home/myhome.zip这个压缩文件)


3)tar(压缩和解压通用)(有选项)


tar[选项] xxx.tar.gz 打包的内容

1.压缩多个文件,将/home/pig.txt和/home/dog.txt压缩成一个pc.tar.gz


压缩:

tar-zcvf pc.tar.gz /home/pig.txt /home/dog.txt

(打包并压缩,产生.tar打包文件,显示详细信息,指定压缩后的文件名。指定文件名。指定文件,可以多个,用空格隔开即可,但是解压的时候发现会把home也压进去??

2.将/home文件夹压缩成myhome.tar.gz


tar-zcvf myhome.tar.gz /home


3.将pc.tar.gz解压到当前目录


tar-zxvf pc.tar.gz

4.将myhome.tar.gz解压到/opt/tmp2目录下面


mkdir /opt/tmp2

tar -zxvf /home/myhome.tar.gz -c /opt/tmp2

(解压文件,解压哪个位置的压缩文件?

/home/myhome.tar.gz

解压到哪里 指定解压选项-c

指定位置/opt/tmp2)



18.组的基本介绍


有3个名词理解一下

1)所有者

文件被创建的时候,默认所有者是目前登录的用户

简单来说,谁生下我谁就是我妈,也可以换个妈

2)所在组

用户被创建的时候,默认所在组就是当前的用户名

文件被创建的时候,默认所有者是目前登录的用户。并且加入到所有者所在的组中

简单来说,你在哪个国家就是哪个国的,也可以改变国籍

3)其他组

除了文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组

对于美国而言,我就是其他国家的

对于英国而言,我也是其他国家的

但对于中国而言,我就是所在组


查看文件所有者


ls -ahl


修改文件所有者


chown 用户名 文件名


组的创建

groupadd 组名


创建用户bb并放入到mm组


groupadd mm

useradd -g mm bb

id bb (显示bb用户的信息,看看是否在mm组里)


修改文件或者目录所在的组


默认在所有者当前的组。

chgrp 组名 文件名或者目录名

使用root用户创建文件orange.txt,看看当前文件属于哪个组,然后修改文件所在组到fruit。

groupadd fruit

touch orange.txt

ls-ahl

chgrp fruit orange.txt


修改用户所在的组


在添加用户时,可以指定将该用户添加到哪个组中,用root管理权限也可以改变某个用户所在的组。


usermod -g 新组名 用户名


实例:将zwj用户从原来的组修改到wudang组

1.id zwj (查看zwj用户的信息,看看现在属于哪个组)

2.cat /etc/group 或者cat /etc/group | grep wudang(查看配置文件中所有组,看看有没有wudang这个组)

usermod -g wudang zwj(修改组)

id zwj (再次查看zwj用户的信息,看看现在属于哪个组)

但是!当你修改完用户的组,可能还会出现权限不够,因为你在登录的时候身份就已经确定了,重新登录就好了。


修改用户登录的初始目录


usermod -d 目录名 用户名


注意:用户需要有进入到新目录的权限,否则登录的时候会失败



19.权限


当我们ls -al查看当前目录信息的时候,通常都会有一串-rwxrw-r--,什么乱七八糟的一共10位,分为4组。


来,我们讲解一下这一串烤串bushi



第一组或者说第一个:

有这5种类型(d ,-,l,c,b),上面的是第二种-

l链接,相当于快捷方式

d目录,相当于文件夹

c字符设备文件,相当于鼠标键盘,在/dev下能看到

b设备文件,相当于硬盘

-普通文件,比如.txt



第二组第2-4位:rwx

确认所有者(该文件的所有者)拥有该文件的权限---User

r表示read读,w表示write写,x表示execute执行

第三组第5-7位:rw-

确认所属组(同用户组的)拥有该文件的权限---Group

第四组第8-10位:r--

确认其他组拥有该文件的权限



rwx权限讲解


文件

r:可以打开文件,查看内容

w:可以修改文件里的内容,但不一定能删文件,要删的前提是对该文件所在的目录有写(w)权限。

x:可以被执行,前提是一个可执行文件


目录

r:可以读取目录下有什么文件(ls -l)

w:可以对目录内文件进行创建删除重命名目录

x:可以进入该目录


rwx所代表的数字


所有者rwx即4+2+1=7;

所属组r-x即4+1=5;

其他组r-x即4+1=5。

数字可以进行组合。

所以一个普通文件的–rwxr-xr-x转换成权限数字为755。

即所有者对此目录有全部权限7,所属组对此目录有读、执行权限5,其他组对此目录有读、执行权限5。

修改权限chmod

通过chmod指令,修改文件或者目录的权限


用+,-,=变更权限

u:所有者, g:所有组, o:其他人,a:所有人(u,g,o的总和)


chmod u=rwx,g=rx,o=x 文件名或者目录名

chmod o+w 文件名或者目录名

chmod a-x 文件名或者目录名


用数字变更权限

r=4,w=2,x=1


chmod u=rwx,g=rx,o=x 文件名或者目录名 等效于 chmod 751 文件名或者目录名



20.ls -l显示的内容详解


8cf7b52e2dc235b6d7983490011de276.png


第一个是权限

第二个对于目录来说,是目录打开里面的文件数+目录数(不包括子子目录)

         对于文件来说,直接就是一个固定1

第三个是用户

第四个是用户组

第五个是文件大小(字节),如果是文件夹,直接显示4096字节

第六个是最后修改时间

第七个是文件名或目录名



21.修改文件/目录所有者chown


chown新的所有者 文件/目录 (改变文件/目录所有者)

chown tom /home/abc.txt (把abc文件的所有者改成tom)

chown 新的所有者:新的组 文件/目录 (改变文件/目录所有者和所在组)

chown -R tom /home/tmp(用递归把tmp目录所有文件和目录的所有者改成tom)


目录需要递归-R



22.修改文件/目录所在组chgrp


chgrp 新的组 文件/目录

groupadd shaolin(添加组)

chgrp shaolin /home/abc.txt(改变普通文件的组)

chgrp -R shaolin /home/test(用递归改变目录的组)


23.定时调度任务指令


1)crontab(有选项)

进行连续定时任务的设置。

-e:编辑任务,里面可能有很多命令,往后加就行了

-l:查询全部任务

-r:删除全部任务

sevice crond restart:重启任务调度

*/1 * * * * ls -l /etc > /tmp/to.txt (每分钟执行一次)


29ba3f2c0b49cfe23cb58c34e9473f02.png


分钟 小时 天 月 周(特殊)


0894daab3340e313698a6b7778570b5a.png


424d8f1ce135089c980c56a7ebabd51e.png


2)at(有选项)

一次性定时任务,可以执行指令或shell脚本。

注意:需要保证atd进程在运行。

怎么看:

ps -ef (查看线程)| grep atd(筛选atd)

at 选项 时间 +回车键+需要的指令+(2次ctrl+d)


c2e0a462ebdf364c3b5aa893976e1cc3.png


两天后下午5点查询home目录


8991f78df9e1d0b77d3d25c3bc48f8cd.png



24.磁盘分区,挂载

目录实际存放数据的位置是硬盘/磁盘。


传统MBR分区方案:Linux规定主分区(或扩展分区)占用从1到16的前4个数字。以第一个IDE硬盘为例,硬盘最多只能划分4个主分区或3个主分区和1个扩展分区。如果都是主分区,那么只有4个分区。但如果一个硬盘使用扩展分区,则可以在扩展分区内创建多个逻辑分区。在这种情况下,总的分区数量包括主分区和逻辑分区,可以达到16个分区。

GPT(GUID Partition Table)分区方案:每个磁盘可以划分为128个主分区,并且没有扩展和逻辑分区之间的限制。

linux硬盘

如果第一块硬盘叫sda,那么第二块就叫sdb,sdc...依次下去。


IDE

hdx~(x:盘号a,b,c...)(~: 其中1,2,3,4都是主分区,从第5开始为逻辑分区,最大到16)

IDE类型不常用。

SCSI

sdx~


SCSI类型常用。



查看所有硬盘分区的挂载情况

lsblk或lsblk -f(会显示唯一的标识符UUID),硬盘的类型TYPE是disk,分区的类型TYPE是part。


查看所有硬盘存储的使用情况

df -h

31fbbeb3c3da1c4310365eb23f7f8633.png


查看指定目录的硬盘存储的使用情况


du -h (默认当前目录)


选项:


-s指定目录占用大小汇总

-h 带计量单位

-a 含文件

-c 总计

--max-depth=1 子目录深度


1a958ef8bfc4cee443e3ada9019a8a24.png


ls -l /opt | grep "^-" | wc -l (打印opt下的普通文件出个数)


ls -l /opt | grep "^d" | wc -l (打印opt下的目录出个


ls -lR /opt | grep "^d" | wc -l (递归打印opt下的目录还有所有子文件夹输出个数


1a57b91e6fce84d0dee64c6a140c0fad.png


分区概念


磁盘容量与主分区、扩展分区、逻辑分区的关系:

硬盘的容量=主分区的容量+扩展分区的容量

扩展分区的容量=各个逻辑分区的容量之和



f17154e03916ac6146fe6899d74b0531.png


主分区:是独立的,是看得到的。对应磁盘上的第一个分区,“一般”就是C盘。

扩展分区:是一个概念,是看不到的。当整个硬盘分为一个主分区的时候,就没有了扩展分区。一个硬盘只能有一个扩展分区,但一个扩展分区可以有多个逻辑分区。

逻辑分区:是看得到的。Linux规定它们必须在扩展分区上构建(DOS和Windows系统也是如此),而不是在主分区上。因此,我们可以看到扩展分区可以提供更灵活的分区模式,但是不能用作操作系统引导,一般为D,E盘。

在Windows系统把所有的主分区和逻辑分区都叫做“盘”或者“驱动器”,并且把所有的可存储介质都显示为操作系统的“盘”。

因此,从“盘”的概念上无法区分主分区和逻辑分区。


分区指令


fdisk 硬盘位置

Linux系统中硬盘位置:/dev/sdb

输入后发现有a-x的字母让我们输入。

n就是添加新分区。

回车后发现有p和e让我们输入,二选一。第一个是主分区,第二个是拓展分区。

选择p主分区。然后让你选择1-4,代表你要在这个硬盘创建几个p主分区,1就是只创建一个分区。接下来默认即可。

最后输入w保存即可退出。

格式化分区


mkfs -t ext4 /dev/sdb1 (固定指令+选项 文件类型 分区位置)


如果格式化完成,输入lsblk -f查询一下所有硬盘分区的挂载情况,成功的话就会为这个分区分配一个唯一不重复的40位字符串。


挂载(重启重置)


mount /dev/sdb1 /newdisk(固定指令 分区位置 目录)

linux的文件系统包含了一整套文件和目录,且将一个分区和一个目录绑定起来。

但是用命令行挂载重启会失效

挂载(重启不重置,持久化)


通过修改/etc/fstab实现挂载。

在此文件中前面输入分区位置或者分区UUID,后面输入目录路径,以及最后的0 0

最后重启系统或者执行命令行指令mount -a即可挂载。


7472d3a0aecfdfabdccc4e3f8e3648c2.png


卸载


umount /dev/sdb1 或者 umount /newdisk (写上分区或者目录名都可以)


怎么增加一块硬盘并绑定到目录


1.虚拟机增加硬盘(在vmware软件左上角添加)

2.分区(/dev文件夹是我们的设备文件)

3.格式化(安装文件系统,格式化是针对主分区和逻辑分区的。要格式化是因为这和操作系统管理文件系统有关系。没有格式化的分区就像一张白纸,要写入数据,必须对白纸打上“格子”,每个格子里面写一块。而操作系统只认这些格子。)

4.挂载(重启重置)

5.设置自动挂载(重启不重置)


目录
相关文章
|
Linux Windows
Linux该如何学习,给你支招
如果你已经确定对 Linux 产生了兴趣,那么接下来我们介绍一下学习 Linux 的方法。这只是自己关于学习Linux的建议。 一、如何去学习 学习大多类似庖丁解牛,对事物的认识一般都是由浅入深、由表及里的过程,循序才能渐进。学习 Linux 同样要有一定的顺序和方法,当然这也是你学习本教程的意义。如果你是初学者,那么建议按照本教程的顺序阅读,不要跳跃,欲速则不达,揠苗也不见得能助长。 另外,强烈建议做好读书笔记,边看边记,边练习边思考,“学而不思则罔,思而不学则殆”,比勤奋更重要的是思考的能力,不要傻学、死学。养成看书的好习惯,学习类的图书如果没能看成自己知识的积累,就是白读。一本书,
|
5月前
|
Linux 程序员 Perl
老程序员分享:Linux查看系统开机时间
老程序员分享:Linux查看系统开机时间
112 0
|
6月前
|
Linux
如何解决Linux时差问题
如何解决Linux时差问题
1049 13
|
5月前
|
Linux C语言 iOS开发
【Linux1】为什么要学习Linux,为什么互联网公司在招聘时,会提出要有Linux经验,及其使用;一些Linux常见指令
【Linux1】为什么要学习Linux,为什么互联网公司在招聘时,会提出要有Linux经验,及其使用;一些Linux常见指令
|
存储 监控 Ubuntu
【Linux】长达一周的Linux(持续总结)< 1 >
以下使用的Linux开发版是以CentOS7系统来讲解的,如果大家使用的是Ubuntu系统或者其他的可以挑着看,差距也不会很大。以下是我学习韩顺平老师课程的一些总结,以及添加了一些我不明白的地方,用来记录巩固记忆,后续不完善的地方也会继续补充的,那么就开始吧。
65 0
|
域名解析 缓存 监控
【Linux】长达一周的Linux(持续总结)< 3 >
以下使用的Linux开发版是以CentOS7系统来讲解的,如果大家使用的是Ubuntu系统或者其他的可以挑着看,差距也不会很大。以下是我学习韩顺平老师课程的一些总结,以及添加了一些我不明白的地方,用来记录巩固记忆,后续不完善的地方也会继续补充的,那么就开始吧。
250 0
|
Java 关系型数据库 MySQL
|
机器学习/深度学习 算法 Java
11月29日云栖精选夜读 | Linux里10个最危险的命令
Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。 这篇文章将会向你介绍十条命令,但你最好不要尝试着去使用。 当然,以下命令通常都是在root权限下才能将愚蠢发挥到无可救药;在普通用户身份下,破坏的只是自己的一亩三分地。
2746 0
|
Linux Python
linux积累
1、运行Python文件,将文件的输出赋值给一个变量 read -r lines_in_json
714 0
|
安全 Linux 网络安全