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 文件的所有用户添加读的权限

方式二:数和

  • 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 文件内容
  • 每隔 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 文件内容
  • 每天凌晨 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 文件内容(哈哈哈哈哈哈

磁盘分区

分区基础

分区的方式

  • 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 增加硬盘案例

步骤:

  1. VM [设置] 中添加硬盘
  2. 分区
  3. 格式化
  4. 挂载
  5. 设置可以自动挂载

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

工作实用指令

  1. 统计 /home 文件夹下文件的个数
  2. 统计 /home 文件夹下目录的个数
  3. 统计 /home 文件夹下文件的个数,包括子文件夹里的
  4. 统计 /home 文件夹下目录的个数,包括子文件夹里的
  5. 以树状显示 /home 文件夹目录结构
原文地址:https://www.cnblogs.com/liujiaqi1101/p/13556252.html