• 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 文件夹目录结构
  • 相关阅读:
    编程实现Windows系统自动登录
    IOS开发笔记
    所有的GUI Toolkit,类型之多真开眼界
    文件保护DEP
    Delphi 重启应用程序(创建Bat文件的Process)
    Linux的几个概念,常用命令学习
    Delphi内存操作API函数(备查,并一一学习)
    Servle中的会话管理
    Windows软件在Linux上的等价/替代/模仿软件列表 (抄一个)
    Go 的文件系统抽象 Afero
  • 原文地址:https://www.cnblogs.com/liujiaqi1101/p/13556252.html
Copyright © 2020-2023  润新知