CROND 任务调度
crond是linux系统中用来定期执行命令或者指定程序任务的一种服务或者软件。
任务调度分为系统工作和用户工作。系统工作是指linux系统中某些重要的工作必须周而复始地执行,比如病毒扫描。而用户工作是指个别用户希望执行的某些程序,比如数据的备份等。
-
语法:
crontab [选项]
-
常用选项:
选项 | 解释 |
---|---|
-e | 编辑定时任务 |
-r | 删除当前用户的所有crontab任务 |
-l | 查询当前用户的所有crontab任务 |
linux中设置任务调度两种方法:/etc/crontab文件和crontab -e命令。修改/etc/crontab这种方法只有root用户能用,功能更加强大和方便。普通用户使用crontab -e命令即可。
- 快速入门
设置个人任务调度。执行crontab –e命令。输入任务到调度文件,如: */1 * * * * ls –l /etc/ >> /tmp/to.txt 意思说每小时的每分钟执行ls –l /etc/ >> /tmp/to.txt命令。
- 输入
crontab -e
进入编辑页面(vim模式) - 按 i 进入编辑模式,输入
/1 * * * * ls –l /etc/ >> /tmp/to.txt
,Esc:wq退出保存。 - 任务调度完成。可以进入/tmp目录查看文件。
-
参数细节说明
首先要明确,crontab -e 进入编辑模式后,关键是对与定时的编辑,上述的*/1 * * * *
代表的意思就是每分钟执行一次后面的命令或脚本(脚本要提前写好)。从左到右分别代表分钟,小时,日,月,周。注意,日和周最好不要同时出现,它们都是精确到日的,很容易引起混乱。
还有一些特殊符号也是为了编写定时任务而制定的:
举几个例子:
-
案例
案例1:每隔1分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中
- 新建/home/doDate.sh文件,写入
date >> /tmp/mydate
,退出保存 - 修改doDate.sh文件使其拥有可执行权限:
chmod 770 /home/doDate.sh
- 输入
crontab -e
输入*/1 * * * * /home/doDate.sh
,退出保存
案例2:每隔1分钟, 将当前日期和日历都追加到 /home/mycal 文件中
- 参照上个案例,在shell文件中修改。
案例3: 每天凌晨2:00 将mysql数据库 testdb ,备份到文件中。
- 参照上个案例,shell中写
/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak
- 修改文件权限,拥有x
- 输入
crontab -e
输入0 2 * * * /home/doMysql.sh
,退出保存。
案例做完之后记得执行crond -r
删除调度任务。service crond restart
重启调度任务。
Linux磁盘分区,挂载
磁盘分区基础知识
磁盘分区方式主要有两种:
- mbr分区:
1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.MBR最大只支持2TB,但拥有最好的兼容性 - gtp分区:
1.支持无限多个主分区(但操作系统可能限制,比如 windows下最多128个分区)
2.最大支持18EB的大容量(1EB=1024 PB, 1PB=1024 TB )
3.windows7 64位以后支持gtp
相对而言,gtp分区更加先进强大,也是现在主流的磁盘分区方式,它支持无限分区,并且支持更大的容量。
对于linux来说,无论有几个分区,分给哪个目录使用,归根到底都属于一个根目录。linux的根目录是一个独立且唯一的文件结构,每个分区只能组成整个文件系统的一部分。
对于存储设备,linux使用了一种“载入”的处理方法,即将存储设备和一个目录联系起来,通过这个目录去访问存储设备内部,这个过程称为挂载。相反的过程叫做卸载。
linux 硬盘分为IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘。
驱动器标识符为四位_ _ _ _。前两位表示分区所在设备的类型,hd表示IDE硬盘,sd表示SCSI硬盘。第三位表示盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘……),第四位表示分区,用数组1,2,3……表示。比如:hda3
就表示第一块(a)IDE硬盘(hd)上的第三个主分区或扩展分区。
查看分区和挂载情况 lsblk
这个命令有些长,list block,可以简记为‘老师不离开’:
NAME就是驱动器标识符,sr0表示光驱。加上-f
选项可以列出文件系统信息。
使用这个命令就可以详细显示当前电脑的磁盘分区情况,可以看到,这台电脑上只有一块磁盘sda,两个主分区sda1和sda2,sda2下有有两个逻辑分区,列表的最后一项也可以看到分区的挂载点。UUID是不重复的40位字符,是分区的唯一标识。FSTYPE是分区类型。
为linux添加硬盘
在lliux下添加一块磁盘并不容易,大概有一下几个步骤:
-
添加硬盘
注意,重启系统才能识别新硬盘。新装入的硬盘一般会被 /dev 目录识别,并为其自动添加标识符,标识符的添加规则参照上面。比如我之前只有一块硬盘是sda,那么新添加的硬盘就叫sdb。重启后使用lsblk -f
命令查看详情。也可以切换到/dev下查看:
-
分区
fdisk 是linux的磁盘分区表工具,使用命令fdisk 装置名称
就可以进入操作页面。分区命令fdisk /dev/sdb
,输入后进入:
按下n
新增一块分区:
按p表示新增主分区,e表示扩展分区。按p:
之后分别是分区号,以及使用空间的设置,一路回车使用默认即可。最后按下w写入分区然后退出,分区结束。
-
格式化
磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用 mkfs(make filesystem) 命令。
语法是:mkfs [-t 文件系统格式] 装置文件名
。我们上面使用了默认命令,只分了一个区,那么标识符就是 sdb1,不信可以lsblk -f 查看:
输入mkfs -t ext4 /dev/sdb1
格式化,ext4表示第四代扩展文件系统,不要更改:
-
挂载
格式化之后就可以将硬盘挂载到某个目录上,之后就可以进行操作了。挂载分为临时挂载和永久挂载。
使用命令挂载:mount 设备 挂载目录
,对应的过程叫卸载,使用umount 设备 挂载目录
即可。仅本次开机有效,机器重启后会失效。
修改文件挂载:这种修改方式为永久挂载,开机会自动执行,不需要我们再输入命令挂载。使用vim /etc/fstab
对文件进行编辑实现挂载,添加完成后 执行mount –a
即刻生效。加入我们把这个设备要挂载到/home/newdisk目录下,就要先创建这个目录。
如图更改文件即可,退出保存后执行mount -a
,大功告成。通过lsblk -f
查看,可以发现已经成功挂载上了:
Linux磁盘管理
Linux磁盘管理常用三个命令为df、du和fdisk。
df [选项] [目录]
:检查整个文件系统的磁盘空间占用情况
选项与参数:
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k :以 KBytes 的容量显示各文件系统;
-m :以 MBytes 的容量显示各文件系统;
-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H :以 M=1000K 取代 M=1024K 的进位方式;
-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
-i :不用硬盘容量,而以 inode 的数量来显示
du
:Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;
-c :添加汇总值
示例:查询 /opt 目录的磁盘占用情况,深度为1
du -ach --max-depth=1 /opt
实际中比较常用的查看命令:
- 统计/home文件夹下文件的个数
ls -l /home | grep "^-" | wc -l
解释一下,这里使用了两个管道符,ls -l /home
先查询,再用 grep 过滤, "^-"
表示以-
打头(即文件),过滤后再统计,即wc -l
。
- 统计/home文件夹下目录的个数
ls -l /home | grep "^d" | wc -l
把-
改为d
即可。
- 统计/home文件夹下文件的个数,包括子文件夹里的
ls -lR /home | grep "^-" | wc -l
加上-R
选项。
-
统计文件夹下目录的个数,包括子文件夹里的
ls -lR /home | grep "^d" | wc -l
-
以树状显示目录结构
tree
这里要先下载yum install tree
,ubantu使用apt-get tree
。