三、实用命令

3.5 组管理和权限管理

  • Linux组基本介绍:在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其他组的概念。

    • 文件:

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

3.5.1 文件/目录所有者

  • 一般为文件的创建者,谁创建了文件,就自然成为该文件的所有者。

查看文件的所有者

  • 指令:ls -ahl

    • -aall所有
    • -hhuman用户
    • -llong长列表形式

修改文件所有者

  • 指令:chown 用户名 文件名:change owner

组的创建

  • 指令:groupadd

    • 举例:创建fox用户,并将它放入monster组中

      • groupadd monster
      • useradd -g monster fox

查看文件/目录的所在组

  • 当某个用户创建了一个文件后,默认这个文件的所在组就是该用户的所在的组。
  • 基本指令:ls -ahl

修改文件所在的组

  • 基本指令:chgrp 组名 文件名:change group

改变用户所在组

  • 指令

    • usermod -g 组名 用户名:user modify
    • usermod -d 目录名 用户名 改变该用户登陆的初始目录

3.5.2 权限介绍

  • - rw- r-- r--

    • 第1个:文件的类型

      1. -:普通文件
      2. d:目录
      3. l:软链接
      4. c:字符设备(鼠标、键盘)
      5. b:块文件,应盘
    • 第234个:文件所有者权限

      1. r:可读(read)
      2. w:可写(write),可以修改,但是不代表可以删除该文件。删除文件的前提是有写的权限
      3. x:可执行(execute)
    • 第467个:文件所在组的用户的权限
    • 第8910个:文件其他组的用户的权限
  • 1

    • 如果是文件,表示硬链接的数量
    • 如果是目录,表示该目录的子目录数量
  • tom:文件所有者
  • police:文件所在组
  • 6

    • 如果是文件,表示文件的大小
    • 如果是目录,则为4096
  • 3月18 19:24:文件的最后修改时间
  • ok.txt:文件名

rwx作用到文件

  1. r:可读(read)
  2. w:可写(write),可以修改,但是不代表可以删除该文件。删除文件的前提是有写的权限
  3. x:可执行(execute)

rwx作用到目录

  1. r:可读(read)
  2. w:可写(write),可以修改,目录内创建+删除+重命名目录
  3. x:可执行(execute),可以进入该目录

3.5.3 权限管理

修改权限

  • 指令:chmod:可以修改文件或目录的权限
  • 基本方式:

    • chmod u=rwx,g=rx,o=x 文件或目录名:指定文件或目录权限
    • chmod o+w 文件目录名:增加其他人的可读权限
    • chmod a-x 文件目录名:减少所有人的可执行权限
  • 选项介绍

    • u:所有者
    • g:所有组
    • o:其他人
    • a:所有人(u+g+o)
  • 第二种方式

    • 规则:

      • r=4
      • w=2
      • x=1
      • rwx=4+2+1=7
    • chmod u=rwx,g=rx,o=x相当于chmod 751

修改文件所有者

  • 指令:

    • chown 新所有者名 文件名
    • chown 新所有者名:新所在组名 文件名
    • -R:如果是目录,则使其目录下所有子文件夹或目录递归生效

      • chown -R 新所有者名:新所在组名 文件名

修改文件所在组

  • 指令:

    • chgrp 新组名 文件名
    • chgrp -R 新组名 目录名:递归修改

3.6 定时任务调度

3.6.1 任务调度

  • 任务调度:是指系统在某个时间执行的特定的命令或程序
  • 任务调度分类

    • 系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等
    • 个别用户工作:个别用户可能希望执行某些程序,如对mysql数据库的备份

crontab

  • 基本语法:crontab [选项]
  • 常用选项:

    • -e:编辑crontab定时任务
    • -l:查询crontab任务
    • -r:删除当前用户所有的crontab任务
    • service crond restart:重启任务调度
  • 如果只是简单的任务,可以不用写脚本,直接在crontab中加入任务即可;对于比较复杂的任务,需要写脚本(shell脚本)
  • 快速入门:

    1. 设置个人任务调度:crontab -e
    2. 输入任务到调度文件:*/1 * * * * ls -l /etc/ > /tmp/to.txt

      • 每小时的每分钟执行ls -l /etc/ >> /tmp/to.txt命令
    3. 保存退出后生效::wq
  • 5个占位符的说明
项目含义范围
第一个“*”一小时当中的第几个分钟0-59
第二个“*”一天当中的第几个小时0-23
第三个“*”一个月当中的第几天1-31
第四个“*”一年当中的第几月1-12
第五个“*”一周当中的星期几0-7(0和7都代表星期热)
  • 特殊符号的说明
特殊符号含义
*代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思
代表不连续的时间。比如“0 8,,1,16 * * * 命令”,就代表在每天的8点、12点、16点都执行一次命令
-代表连续的时间范围。比如“0 5 1-6 命令”,代表在周一到周六的凌晨5点执行命令
*/n代表每个多久执行一次。比如“/10 * 命令”,代表每隔10分钟就执行一遍命令
  • 特定时间执行任务案例
时间含义
45 33 * 命令在22点45分执行命令
0 17 1 命令每周1的17点0分执行命令
0 5 1,15 命令每月1号和15号的凌晨5点0分执行命令
40 4 1-5 命令每周一到周五的凌晨4点40分执行命令
/10 4 命令每天的凌晨4点,每隔10分钟执行一次命令
0 0 1,15 * 1 命令每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号不要同时出现
  • 应用案例

    • 每隔1分钟,将当前的日期信息,追加到/tmp/mydate文件中

      1. 编写文件带有指令信息的/home/mytask1.shdate >> /tmp/mydate

    1. mytask1.sh一个可执行权限

    1. 执行命令:crontab -e

    1. 编辑指令:*/1 * * * * /home/mytast1.sh

    • 每天凌晨2点将mysql数据库testdb,备份到文件mydb.bak中

      1. 先编写一个文件/home/mytast.sh,写入指令:/usr/local/mysql/bin/mysqldump -uroot -proot testdb > /tmp/mydb.bak
      2. 给mytask.sh一个可执行权限:chmod 744 /home/mytask.sh
      3. 开启任务调度:crontab -e,写入任务:0 2 * * * /home/mytask/sh

3.7 Linux磁盘分区、挂载

3.7.1 分区基础知识

  • mbr分区

    1. 最多支持4个主分区
    2. 系统只能安装在主分区
    3. 扩展分区要占一个主分区
    4. mbr最大只支持2TB,但拥有最好的兼容性
  • gtp分区

    1. 支持无限多个主分区(但操作系统可能限制,比如windows下最多128个分区)
    2. 最大支持18EB的大容量(EB=1024PB,PB=1024TB)
    3. windows7 64位之后支持gtp
  • windows下的磁盘分区

3.7.2 Linux分区

  • 原理介绍:Linux无论有几个分区,分给哪一个目录使用,归根结底只有一个根目录,一个独立且唯一的文件结构。Linux中每个分区都是用来组成整个文件系统的一部分。
  • Linux采用了一个叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录练习起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

  • 硬盘说明:

    • linux硬盘分IDE硬盘和SCSI硬盘,目前基本上都是SCSI硬盘
    • 对于IDE硬盘,驱动器标识符为“hdx~”

      • “hd”表名分区所在设备的类型,这里指IDE硬盘。
      • “x”为盘号:

        • a为基本盘
        • b为基本从属盘
        • c为辅助主盘
        • d为辅助从属盘
      • “~”代表分区,前4个分区用数字1到4表示,是主分区或扩展分区;从5开始就是逻辑分区
    • 对于SCSI硬盘,则表示为“sdx~”,SCSI硬盘使用“sd”来表示分区所在设备的类型,其余和IDE硬盘的标识方法一样。

查看系统的分区和挂载情况

  • 查看系统的分区和挂载情况的指令:lsblk [-f](速记:老师不离开 -f)

3.7.3 如何增加一块硬盘

  1. 虚拟机添加硬盘

  1. 分区:fdisk /dev/sdb。开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。

    1. m:显示命令列表
    2. p:显示磁盘分区,同fdisk -1
    3. n:新增分区
    4. d:删除分区
    5. w:写入并推出
  2. 格式化:mkfs -t ext4 /dev/sdb1

    • 其中ext4是分区类型
  3. 挂载:将一个分区与一个目录联系起来。基本指令:挂载:mount 设备名称 挂载目录;卸载:umount 设备名称或挂载目录

    1. 先创建一个/home/newdisk
    2. 挂载:mount /dev/sdb1 /home/newdisk
  4. 设置可以自动挂载(永久挂载,重启后挂载关系人存在):通过修改/etc/fstab实现,添加完成后,执行mount -a即刻生效

    1. vim /etc/fstab
    2. /dev/sdb1 /home/newdisk ext4 defaults 0 0

3.7.4 磁盘情况查询

  • 基本语法:df -hdf -lh
  • 查询指定目录的磁盘占用情况:du -h /目录

    • -s:指定目录占用大小汇总
    • -h:带计量单位
    • -a:含文件
    • --max-depth=1:子目录深度
    • -c:列出明细的同时,增加汇总值
  • 举例:

    • 以深度1的形式查询/opt目录下的文件大小:

      • du -ach --max-depth=1 /opt
    • 统计/home文件夹下文件的个数

      • ls -l /home | grep "^-" | wc -l,先列出来,再筛选,最后显示
    • 统计/home文件夹下目录的个数

      • ls -l /home | grep "^d" | wc -l
    • 统计/home文件夹下文件的个数,包括子文件夹里的

      • ls -lR /home | grep "^-" | wc -l
    • 统计文件夹下目录的个数,包括子文件夹里的

      • ls -lR /home | grep "^d" | wc -l
    • 以树状形式显示目录

      • 先要安装:yum install tree
      • 再显示:tree
Last modification:November 2nd, 2019 at 04:23 pm