一.日期时间类
1.1.date 指令-显示当前日期
- 基本语法
1) date (功能描述:显示当前时间)
2) date +%Y (功能描述:显示当前年份)
3) date +%m (功能描述:显示当前月份)
4) date +%d (功能描述:显示当前是哪一天)
5) date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)
- 案例
显示当前时间信息
显示当前时间年月日
显示当前时间年月日时分秒
1.2.date 指令-设置日期
- 基本语法
date -s 字符串时间
- 案例
设置系统当前时间 , 比如设置成 2018-10-10 11:22:22
1.3.cal 指令
查看日历指令
- 基本语法
cal [选项] (功能描述:不加选项,显示本月日历)
- 案例
显示当前日历
显示2020 年日历
1.4.搜索查找类
1.4.1.find 指令
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
- 基本语法
find [搜索范围] [选项]
- 选项说明
选项 | 功能 |
---|---|
-name<查询方式> | 按照指定文件名的查找模式来查找文件 |
-user<用户名> | 查找属于指定用户名的文件 |
-size<文件大小> | 按照指定的文件大小查找文件 |
- 案例
案例1: 按文件名:根据名称查找/home 目录下的hello.txt 文件
案例2:按拥有者:查找/opt 目录下,用户名称为 nobody 的文件
案例3:查找整个linux 系统下大于20m 的文件(+n 大于 -n 小于 n 等于)
案例4:查询 / 目录下,所有 .txt 的文件
1.4.2.locate 指令
locaate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate 时刻。
- 基本语法
locate 搜索文件
-
特别说明
由于locate 指令基于数据库进行查询,所以第一次运行前,必须使用updatedb 指令创建locate 数据库。 -
应用实例
案例1: 请使用locate 指令快速定位 hello.txt 文件所在目录。
1.4.3.grep 指令和 管道符号 |
grep 过滤查找 , 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
- 基本语法
grep [选项] 查找内容 源文件
- 常用选项
选项 | 功能 |
---|---|
-n | 显示匹配行及其行号 |
-i | 忽略字母大小写 |
- 应用实例
案例1: 请在 hello.txt 文件中,查找 “yes” 所在行,并且显示行号。
1.5.压缩和解压类
1.5.1.gzip/gunzip 指令
gzip 用于压缩文件, gunzip 用于解压的
- 基本语法
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
- 应用实例
案例1: gzip 压缩, 将 /home 下的 hello.txt 文件进行压缩
案例2: gunzip 压缩, 将 /home 下的 hello.txt.gz 文件进行解压缩。
注意:当我们使用gzip 对文件进行压缩后,不会保留原来的文件。
1.5.2.zip/unzip 指令
zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
- 基本语法
zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
- zip 常用选项
-r:递归压缩,即压缩目录 - unzip 的常用选项
-d<目录> :指定解压后文件的存放目录 - 应用实例
案例1: 将 /home 下的 所有文件进行压缩成 mypackage.zip
案例2: 将 mypackge.zip 解压到 /opt/tmp 目录下
1.5.3.tar 指令
tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。
- 基本语法
tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
- 选项说明
选项 | 功能 |
---|---|
-c | 产生.tar的打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar文件 |
- 应用实例
案例1: 压缩多个文件,将 /home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz
案例2: 将/home 的文件夹 压缩成 myhome.tar.g
案例3: 将 a.tar.gz 解压到当前目录
案例4: 将myhome.tar.gz 解压到 /opt/ 目录下
注:指定解压到的那个目录,事先要存在才能成功,否则会报错。
二.组管理和权限管理
2.1.Linux 组基本介绍
在linux 中的每个用户必须属于一个组,不能独立于组外。在linux 中每个文件
有所有者、所在组、其它组的概念。
a.所有者
b.所在组
c.其它组
d.改变用户所在的组
2.2.文件/目录 所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
2.2.1.查看文件的所有者
指令:ls -ahl
应用实例:创建一个组police,再创建一个用户tom,将tom 放在police 组 ,然后使用 tom 来创建一个文件 ok.txt,
2.2.2.修改文件所有者
指令:chown 用户名 文件名
应用案例:使用root 创建一个文件apple.txt ,然后将其所有者修改成 tom。
2.3.组的创建
2.3.1.基本指令
groupadd 组名
2.3.1.应用实例
创建一个组monster
创建一个用户 fox ,并放入到 monster 组中
2.4.文件/目录 所在组
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。
2.4.1.查看文件/目录所在组
基本指令:ls –ahl
2.4.2.修改文件所在的组
基本指令:chgrp 组名 文件名
应用实例:使用root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 police 组。
2.5.其它组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。
2.6.改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root 的管理权限可以改变某个用户所在的组。
2.6.1.改变用户所在组
- usermod -g 组名 用户名
- usermod –d 目录名 用户名 改变该用户登陆的初始目录。
2.6.2.应用实例
创建一个土匪组(bandit)将 tom 这个用户从原来所在的police 组,修改到 bandit(土匪) 组
2.7.权限的基本介绍
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
1)第0 位确定文件类型(d, - , l , c , b)
2)第1-3 位确定所有者(该文件的所有者)拥有该文件的权限。—User
3)第4-6 位确定所属组(同用户组的)拥有该文件的权限,—Group
4)第7-9 位确定其他用户拥有该文件的权限 —Other
2.8.rwx 权限详解
2.8.1.rwx 作用到文件
- [ r ]代表可读(read): 可以读取,查看。
- [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。
- [ x ]代表可执行(execute):可以被执行。
2.8.2.rwx 作用到目录
- [ r ]代表可读(read): 可以读取,ls 查看目录内容。
- [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录。
- [ x ]代表可执行(execute):可以进入该目录。
dr-xr-xr-x. 5 root root 4096 11月 9 19:52 boot
10 个字符确定不同用户能对文件干什么
第一个字符代表文件类型: 文件 (-),目录(d),链接(l)
其余字符每3 个一组(rwx) 读® 写(w) 执行(x)
第一组rwx : 文件拥有者的权限是读、写和执行
第二组rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行
第三组r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行。
可用数字表示为: r=4,w=2,x=1 因此rwx=4+2+1=7
2.9.修改权限-chmod
2.9.1.基本说明
通过chmod 指令,可以修改文件或者目录的权限。
2.9.2.第一种方式:+ 、-、= 变更权限
- chmod u=rwx,g=rx,o=x 文件目录名
- chmod o+w 文件目录名
- chmod a-x 文件目录名
案例演示:
a.给abc 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。
b.给abc 文件的所有者除去执行的权限,增加组写的权限
3.给abc 文件的所有用户添加读的权限
2.9.3.第二种方式:通过数字变更权限
规则:r=4 w=2 x=1 ,rwx=4+2+1=7;
chmod u=rwx,g=rx,o=x 文件目录名相当于 chmod 751 文件目录名。
a.将 /test/abc.txt 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现:
2.10.修改文件所有者-chown
- 基本介绍
chown newowner file 改变文件的所有者。
chown newowner:newgroup file 改变用户的所有者和所有组。
-R 如果是目录 则使其下所有子文件或目录递归生效 - 案例演示
1)请将 /test/abc .txt 文件的所有者修改成 tom
2).请将 /home/kkk 目录下所有的文件和目录的所有者都修改成tom。
2.11.修改文件所在组-chgrp
- 基本介绍
chgrp newgroup file 改变文件的所有组 - 案例演示
1).请将 /test/abc .txt 文件的所在组修改成 bandit (土匪)
2).请将 /home/kkk 目录下所有的文件和目录的所在组都修改成 bandit(土匪)
三.实操篇 crond 任务调度
3.1.原理示意图
crontab 进行 定时任务的设置,
3.2.概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等。
2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql 数据库的备份。
3.3.基本语法
crontab [选项]
选项 | 解释 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab定时任务 |
-r | 删除所有的crontab定时任务 |
3.4.快速入门
3.4.1.任务的要求
设置任务调度文件:/test/crontab
设置个人任务调度。执行crontab –e 命令。
接着输入任务到调度文件:
*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行ls –l /etc/ > /tmp/to.txt 命令
3.4.2.参数细节说明
项目 | 含义 | 范围 |
---|---|---|
第一个* | 一小时中的第几分钟 | 0-59 |
第二个* | 一天当中的第几小时 | 0-23 |
第三个* | 一个月当中的第几天 | 1-31 |
第四个* | 一年当中的第几个月 | 1-12 |
第五个* | 一星期当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号的说明:
事件 | 含义 |
---|---|
* | 代表任何时间,比如第一个*就代表一个小时的每一秒都执行。 |
, | 代表不连续的时间。比如“0 8,12,16 * * * * *就代表每天的8点0分,12点0分,16点0分都执行一次。 |
- | 代表连续的时间段,比如"0 5 * * 1-6"。代表在周一到周五的5点0分执行 |
*/n | 表示没隔多久执行一次,比如"*/10 * * * *"代表每隔10分钟执行一次 |
特定时间执行案例:
时间 | 含义 |
---|---|
45 22 * * * | 在22点45分执行命令 |
0 17 * * 1 | 每周1的17点0分执行命令 |
0 5 1,15 * * | 每月的1号到15号的5点执行 |
40 4 * * 1-5 | 在每个月的周一到周五的4点40分执行命令 |
*/40 4 * * * | 每天的4点每隔10分钟执行命令 |
0 0 1,15 * 1 | 每月的1号和15号,每周一的0点0分都会执行:注意:星期几和几号最好不要同时出现,因为他们都代表的是天,容易让管理员混乱。 |
3.5.任务调度的几个应用实例
- 案例 1:每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件
中
-
先编写一个文件 /home/mytask1.sh
date >> /tmp/mydate -
给mytask1.sh 一个可以执行权限
chmod 744 /home/mytask1.sh -
crontab -e
-
*/1 * * * * /home/mytask1.sh
-
成功
2. 案例 2:每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件
中 -
先编写一个文件 /home/mytask2.sh
date >> /tmp/mycal
cal >> /tmp/mycal -
给mytask1.sh 一个可以执行权限
chmod 744 /home/mytask2.sh -
crontab -e
-
*/1 * * * * /home/mytask2.sh
-
成功
四.Linux 磁盘分区、挂载
4.1.分区基础知识
4.1.1.分区的方式
- mbr 分区:
1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.MBR 最大只支持2TB,但拥有最好的兼容性 - gtp 分区:
1.支持无限多个主分区(但操作系统可能限制,比如 windows 下最多128 个分区)
2.最大支持18EB 的大容量(1EB=1024 PB,1PB=1024 TB )
3.windows7 64 位以后支持gtp
4.1.2.windows 下的磁盘分区
4.2.Linux 分区
4.2.1.原理介绍
1)Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且。
唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。
2)Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
4.2.2.硬盘说明
1)Linux 硬盘分IDE 硬盘和SCSI 硬盘,目前基本上是SCSI 硬盘。
2)对于IDE 硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指IDE 硬盘了。“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“ ~”代表分区,前四个分区用数字1 到4 表示,它们是主分区或扩展分区,从5 开始就是逻辑分区。例,hda3 表示为第一个IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个IDE 硬盘上的第二个主分区或扩展分区。
3)对于SCSI 硬盘则标识为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE 硬盘的表示方法一样。
4.2.3.使用 lsblk 指令查看当前系统的分区情况
4.3.挂载的经典案例
需求是给我们的Linux 系统增加一个新的硬盘,并且挂载到/home/newdisk2上
1.虚拟机添加硬盘
在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别)!
注意:一定要重启才能看到!!!!!!!
2. 虚拟机增加硬盘步骤
分区命令 fdisk /dev/sdc
开始对/sdc 分区
•m 显示命令列表
•p 显示磁盘分区 同 fdisk –l
•n 新增分区
•d 删除分区
•w 写入并退出
说明: 开始分区后输入n,新增分区,然后选择p ,分区类型为主分区。两次回车默认剩余全部空间。最后输入w 写入分区并退出,若不保存退出输入q。
3. 格式化磁盘
4. 挂载
挂载: 将一个分区与一个目录联系起来,
•mount 设备名称 挂载目录
5. 永久挂载: 通过修改/etc/fstab 实现挂载
添加完成后 执行mount –a 即刻生效
4.4.磁盘情况查询
4.4.1.查询系统整体磁盘使用情况
- 基本语法
df -h - 应用实例
查询系统整体磁盘使用情况
4.4.2.查询指定目录的磁盘占用情况
- 基本语法
du -h /目录
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值 - 应用实例
查询 /opt 目录的磁盘占用情况,深度为1
4.5.磁盘情况-工作实用指令
- 统计/home 文件夹下目录的个数
2)统计/home 文件夹下文件的个数
- 统计/home 文件夹下文件的个数,包括子文件夹里的
4) 统计文件夹下目录的个数,包括子文件夹里的
5) 以树状显示目录结构