08-常用指令(2)
组管理
在 Linux 中的每个用户必须属于一个组,不能独立于组外。在 Linux 中每个文件有所有者、所在组、其它组的概念。
组的创建
- 指令:
groupadd 组名
- 创建指定组的用户:
useradd -g 组名 用户名
相关概念
所有者
- 查看文件的所有者:
ls –ahl
- 修改文件所有者:
chown 用户名 文件名
- 示例:将 finch 创建的文件 machine 的所有者修改成 liujiaqi
所在组
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。
- 查看文件/目录所在组:
ls –ahl
- 修改文件所在的组:
chgrp 组名 文件名
使用 finch 用户创建文件helper,看看当前这个文件属于哪个组,然后将这个文件所在组修改为 liujiaqi 组。
其他组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。
修改用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用 root 的管理权限可以改变某个用户所在的组。
- 改变用户所在组:
usermod –g 组名 用户名
- 改变该用户登陆的初始目录:
usermod –d 目录名 用户名
权限管理
查看文件权限
以 ls -ahl
结果中的一条记录为例:
- 第 0 位确定文件类型
- d:目录
- l:软链接
- c:字符设备(键盘、鼠标)
- b:块文件(硬盘)
- 第 1~3 位确定所有者(该文件的所有者)拥有该文件的权限 --- User
- 第 4~6 位确定所属组(同用户组的)拥有该文件的权限 --- Group
- 第 7~9 位确定其他用户拥有该文件的权限 --- Other
rwx 权限详解
- rwx 作用到文件
[r]
代表可读(read):可以读取,查看[w]
代表可写(write):可以修改,但是不代表可以删除该文件!删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件[x]
代表可执行(execute):可以被执行
- rwx 作用到目录
[r]
代表可读(read):可以读取,ls 查看目录内容[w]
代表可写(write):可以修改,目录内:创建+删除+重命名目录[x]
代表可执行(execute):可以进入该目录
修改权限
通过chmod指令,可以修改文件或者目录的权限。
方式一:算符
+ 、-、=
变更权限- u:所有者 | g:所有组 | o:其他人 | a:所有人(ugo总和)
- 示例
chmod u=rwx,g=rx,o=x 文件目录名
给所有者赋予 rwx 权限,所有组用户赋予 rx 权限,其他组用户赋予 x 权限chmod o+w 文件目录名
:给其他组用户增加 w 权限chmod a-x 文件目录名
:给所有用户去除 x 权限
- 练习、
- 给 abc 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
- 给 abc 文件的所有者除去执行的权限,增加组写的权限
- 给 abc 文件的所有用户添加读的权限
- 给 abc 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限
方式二:数和
- r=4,w=2,x=1,rwx=4+2+1=7
- 算符赋权的
chmod u=rwx,g=rx,o=x 文件目录名
相当于chmod 751 文件目录名
修改文件所有者
- 指令格式
chown newowner file
改变文件的所有者chown newowner:newgroup file
改变文件的所有者和所有组
- 常用参数:
[-R]
若是目录,则使其下所有子文件和目录递归生效
修改文件所在组
- 指令格式:
chgrp newgroup file
改变文件的所有组 - 示例
练习题
- 前置准备
- 2 个组:straight,curly
- 2 个 straight 组员:finch,reese
- 2 个curly 组员:groves,shaw
- finch 创建一个文件 machine,自己可以读写,本组人可以读,其它组没有任何权限
- finch 修改该文件,让其它组人可以读,本组人可以读写
- shaw 投靠 straight,看看是否可以读写
任务调度
概述
- 任务调度:是指系统在某个时间执行的特定的命令或程序。
- 任务调度分类
- 系统工作:有些重要的工作必须周而复始地执行。比如病毒扫描等
- 个别用户工作:个别用户可能希望执行某些程序。比如对 MySQL 数据库的备份
- 基本语法:
crontab [选项]
- 功能描述:crontab 进行定时任务的设置;通过
service crond restart
重启任务调度。 - 常用选项
- 图示
Quick Start
- 键入命令:
crontab -e
- 编辑脚本:
*/1 * * * * ls -l /etc >> /tmp/to.txt
- 保存退出后的每一分钟都会自动地调用该脚本
参数细节
- 5 个占位符的说明
- 特殊符号的说明
- 特定时间执行任务案例
应用实例
- 每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
- 编写脚本文件 /home/mytask1.sh,写入内容:
date >> /tmp/mydate
- 给 mytask1.sh 可执行权限:
chmod 744 mytask1.sh
- 执行命令:
crontab -e
,继而将*/1 * * * * /home/mytask1.sh
写入 - 每个 1 min 查看 mydate 文件内容
- 编写脚本文件 /home/mytask1.sh,写入内容:
- 每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中
- 编写脚本文件 /home/mytask2.sh,写入内容:
date >> /tmp/mycal cal >> /tmp/mycal
- 给 mytask2.sh 可执行权限:
chmod 744 mytask2.sh
- 执行命令:
crontab -e
,继而将*/1 * * * * /home/mytask2.sh
写入 - 每个 1 min 查看 mycal 文件内容
- 编写脚本文件 /home/mytask2.sh,写入内容:
- 每天凌晨 2:00 将 MySQL 数据库 testdb ,备份到文件中
- 编写脚本文件 /home/mytask3.sh,写入内容:
/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
- 给 mytask3.sh 可执行权限:
chmod 744 mytask3.sh
- 执行命令:
crontab -e
,继而将0 2 * * * * /home/mytask3.sh
写入 - 每天凌晨 2 点 起来查看 mycal 文件内容(哈哈哈哈哈哈
- 编写脚本文件 /home/mytask3.sh,写入内容:
磁盘分区
分区基础
分区的方式
- MBR 分区
- 最多支持 4 个主分区(因为分区表只能记录 4 条分区记录)
- 系统只能安装在主分区
- 扩展分区要占一个主分区;在扩展分区里面,还可以再分逻辑分区
- MBR 最大只支持 2TB,但拥有最好的兼容性
- GTP 分区
- 支持无限多个主分区 (但 OS 可能限制,比如 Windows 下最多 128 个分区)
- 最大支持 18EB 的大容量 (1EB=1024 PB,1PB=1024 TB)
- Windows7 64 位以后支持 GTP
Win 磁盘分区
Linux 分区
原理简述
- Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。
- Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来 [挂载(Mount)]。这时要载入的一个分区将使它的存储空间在一个目录 [挂载点(Mount Point)] 下获得。
硬盘说明
- Linux 硬盘分为 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘。
- 对于 IDE 硬盘,驱动器标识符为 "hdx~"。其中 "hd" 表明分区所在设备的类型,这里是指 IDE 硬盘了。"x" 为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),"~" 代表分区,前 4 个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。
- hda3 表示为第 1 个 IDE 硬盘上的第 3 个主分区或扩展分区
- hdb2 表示为第 2 个 IDE 硬盘上的第 2 个主分区或扩展分区
- 对于 SCSI 硬盘则标识为 "sdx~",SCSI 硬盘是用 "sd" 来表示分区所在设备的类型的,其余则和 IDE 硬盘的表示方法一样。
VM 增加硬盘案例
步骤:
- VM [设置] 中添加硬盘
- 分区
- 格式化
- 挂载
- 设置可以自动挂载
VM 添加硬盘
分区
格式化
格式化之后分区就有 UUID 了。
临时挂载
分区格式化完之后,还是用不了。必须先得将一个分区与一个目录联系起来 —— 挂载。
这种方式的挂在是临时挂在,系统重启之后就没了。
自动挂载
卸载
- 挂载:将一个分区与一个目录联系起来
- 命令:
mount 设备名称 挂载目录
- 例如:
mount /dev/sdb1 /newdisk
- 命令:
- 卸载:将一个分区与一个目录断开联系
- 命令:
umount 设备名称 | 挂载目录
- 例如:
umount /dev/sdb1
|umount /newdisk
- 命令:
磁盘情况查询
系统整体磁盘使用情况
基本语法:df -h
指定目录的磁盘占用情况
- 基本语法:
du -h /目录
- 功能描述:查询指定目录的磁盘占用情况,默认为当前目录
- 常用选项:
[-s]
指定目录占用大小汇总[-h]
带计量单位[-a]
含文件[--max-depth=n]
子目录深度[-c]
列出明细的同时,增加汇总值
- 示例:查询 /opt 目录的磁盘占用情况,深度为 1
工作实用指令
- 统计 /home 文件夹下文件的个数
- 统计 /home 文件夹下目录的个数
- 统计 /home 文件夹下文件的个数,包括子文件夹里的
- 统计 /home 文件夹下目录的个数,包括子文件夹里的
- 以树状显示 /home 文件夹目录结构