文章目录
欢迎访问笔者个人技术博客:http://rukihuang.xyz/
三、实用命令
3.5 组管理和权限管理
- Linux组基本介绍:在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其他组的概念。
- 文件:
- 所有者
- 所在组
- 其他组:除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
- 文件:
3.5.1 文件/目录所有者
- 一般为文件的创建者,谁创建了文件,就自然成为该文件的所有者。
查看文件的所有者
- 指令:
ls -ahl-
-a:all所有 -
-h:human用户 -
-l:long长列表形式
-
修改文件所有者
- 指令:
chown 用户名 文件名:change owner
组的创建
- 指令:
groupadd- 举例:创建fox用户,并将它放入monster组中
groupadd monsteruseradd -g monster fox
- 举例:创建fox用户,并将它放入monster组中
查看文件/目录的所在组
- 当某个用户创建了一个文件后,默认这个文件的所在组就是该用户的所在的组。
- 基本指令:
ls -ahl
修改文件所在的组
- 基本指令:
chgrp 组名 文件名:change group
改变用户所在组
- 指令
-
usermod -g 组名 用户名:user modify usermod -d 目录名 用户名 改变该用户登陆的初始目录
-
3.5.2 权限介绍
-
- rw- r-- r--- 第1个:文件的类型
-
-:普通文件 -
d:目录 -
l:软链接 -
c:字符设备(鼠标、键盘) -
b:块文件,应盘
-
- 第234个:文件所有者权限
-
r:可读(read) -
w:可写(write),可以修改,但是不代表可以删除该文件。删除文件的前提是有写的权限 -
x:可执行(execute)
-
- 第467个:文件所在组的用户的权限
- 第8910个:文件其他组的用户的权限
- 第1个:文件的类型
-
1- 如果是文件,表示硬链接的数量
- 如果是目录,表示该目录的子目录数量
-
tom:文件所有者 -
police:文件所在组 -
6:- 如果是文件,表示文件的大小
- 如果是目录,则为4096
-
3月18 19:24:文件的最后修改时间 -
ok.txt:文件名
rwx作用到文件
-
r:可读(read) -
w:可写(write),可以修改,但是不代表可以删除该文件。删除文件的前提是有写的权限 -
x:可执行(execute)
rwx作用到目录
-
r:可读(read) -
w:可写(write),可以修改,目录内创建+删除+重命名目录 -
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脚本) - 快速入门:
- 设置个人任务调度:
crontab -e - 输入任务到调度文件:
*/1 * * * * ls -l /etc/ > /tmp/to.txt- 每小时的每分钟执行
ls -l /etc/ >> /tmp/to.txt命令
- 每小时的每分钟执行
- 保存退出后生效:
: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文件中- 编写文件带有指令信息的
/home/mytask1.sh:date >> /tmp/mydate
- 编写文件带有指令信息的
-
2. 给mytask1.sh一个可执行权限
3. 执行命令:crontab -e
4. 编辑指令:*/1 * * * * /home/mytast1.sh
-
每天凌晨2点将mysql数据库testdb,备份到文件mydb.bak中
- 先编写一个文件
/home/mytast.sh,写入指令:/usr/local/mysql/bin/mysqldump -uroot -proot testdb > /tmp/mydb.bak - 给mytask.sh一个可执行权限:
chmod 744 /home/mytask.sh - 开启任务调度:
crontab -e,写入任务:0 2 * * * /home/mytask/sh
- 先编写一个文件
3.7 Linux磁盘分区、挂载
3.7.1 分区基础知识
- mbr分区
- 最多支持4个主分区
- 系统只能安装在主分区
- 扩展分区要占一个主分区
- mbr最大只支持2TB,但拥有最好的兼容性
- gtp分区
- 支持无限多个主分区(但操作系统可能限制,比如windows下最多128个分区)
- 最大支持18EB的大容量(EB=1024PB,PB=1024TB)
- 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 如何增加一块硬盘
- 虚拟机添加硬盘
-
分区:
fdisk /dev/sdb。开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。- m:显示命令列表
- p:显示磁盘分区,同
fdisk -1 - n:新增分区
- d:删除分区
- w:写入并推出
-
格式化:
mkfs -t ext4 /dev/sdb1- 其中
ext4是分区类型
- 其中
-
挂载:将一个分区与一个目录联系起来。基本指令:挂载:
mount 设备名称 挂载目录;卸载:umount 设备名称或挂载目录- 先创建一个
/home/newdisk - 挂载:
mount /dev/sdb1 /home/newdisk
- 先创建一个
-
设置可以自动挂载(永久挂载,重启后挂载关系人存在):通过修改
/etc/fstab实现,添加完成后,执行mount -a即刻生效vim /etc/fstab-
/dev/sdb1 /home/newdisk ext4 defaults 0 0
3.7.4 磁盘情况查询
- 基本语法:
df -h或df -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
- 先要安装:
- 以深度1的形式查询