磁盘配额(Quota)与进阶文件系统管理
1 磁盘配额的一般用途
针对WWW服务器,如每个人的网页空间的容量限制。
针对邮件服务器,如每个人的邮件空间容量。
针对文件服务器,如每个人最大的可用网络硬盘空间。
在Linux中,用来进行硬盘空间管理的就是磁盘配额。
2 磁盘配额的使用限制
仅针对整个分区
核心必须支持磁盘配额
磁盘配额的记录文件(aquota.user,aquota.group)
只对一般身份用户有效(root就不能设置磁盘配额,因为它拥有整个系统的所有数据)
3 磁盘配额程序对硬盘配额的限制
磁盘配额程序对整个分区的限制主要分为以下几个部分:
最低限制(soft):最低限制容量。
最高限制(hard):这是绝对不能超过的容量。
宽限时间:当用户使用的空间超过最低限制但还没有到最高限制,在这个宽限是时间内必须要把使用磁盘的容量降低到最低限制之下。
一个 Quota 实作范例
坐而言不如起而行啊,所以这里我们使用一个范例来设计一下如何处理 Quota 的设定流程。
目的与账号:现在我想要让我的专题生五个为一组,这五个人的账号分别是 myquota1, myquota2, myquota3, myquota4, myquota5,这五个用户的密码都是 password ,且这五个用户所属的初始群组都是 myquotagrp 。 其他的账号属性则使用默认值。
账号的磁盘容量限制值:我想让这五个用户都能够取得 300MBytes 的磁盘使用量(hard),档案数量则不予限制。 此外,只要容量使用率超过 250MBytes ,就予以警告 (soft)。
群组的限额:由于我的系统里面还有其他用户存在,因此我仅承认 myquotagrp 这个群组最多仅能使用 1GBytes 的容量。 这也就是说,如果 myquota1, myquota2, myquota3 都用了280MBytes 的容量了,那么其他两人最多只能使用 (1000MB - 280x3 = 160MB) 的磁盘容量啰!这就是使用者与群组同时设定时会产生的后果。
宽限时间的限制:最后,我希望每个使用者在超过 soft 限制值之后,都还能够有 14 天的宽限时间。好了,那你怎么规范账号以及相关的 Quota 设定呢?首先,在这个小节我们先来将账号相关的属性与参数搞定再说吧!
# 制作账号环境时,由于有五个账号,因此鸟哥使用 script 来建立环境!
[root@www ~]# vi addaccount.sh
#!/bin/bash
# 使用 script 来建立实验 quota 所需的环境
groupadd myquotagrp
for username in myquota1 myquota2 myquota3 myquota4 myquota5
do
useradd -g myquotagrp $username
echo "password" | passwd --stdin $username
done
[root@www ~]# sh addaccount.sh
[root@www ~]# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/hda3 4.8G 740M 3.8G 17% /home <==鸟哥主机的 /home 确实是独立的!
[root@www ~]# mount | grep home
/dev/hda3 on /home type ext3 (rw)
手动挂载的数据在下次重新挂载就会消失,因此最好写入配置文件中啊!在鸟哥这部主机的案例中, 我可以直接修改 /etc/fstab 成为底下这个样子:
[root@www ~]# vi /etc/fstab
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
# 其他项目鸟哥并没有列出来!重点在于第四字段!于default 后面加上两个参数!
[root@www ~]# umount /home
[root@www ~]# mount -a
[root@www ~]# mount | grep home
/dev/hda3 on /home type ext3 (rw,usrquota,grpquota)
还是要再次的强调,修改完 /etc/fstab 后,务必要测试一下!若有发生错诨得要赶紧处理!
quotacheck :扫瞄文件系统并建立 Quota 的记录文件
[root@www ~]# quotacheck [-avugfM] [/mount_point]
选项与参数:
-a :扫瞄所有在 /etc/mtab 内,含有 quota 支持的 filesystem,加上此参数后,/mount_point 可不必写,因为扫瞄所有的 filesystem 了嘛!
-u :针对用户扫瞄档案与目录的使用情况,会建立 aquota.user
-g :针对群组扫瞄档案与目录的使用情况,会建立 aquota.group
-v :显示扫瞄过程的信息;
-f :强制扫瞄文件系统,并写入新的 quota 配置文件 (危险)
-M :强制以读写的方式扫瞄文件系统,只有在特殊情况下才会使用。
quotacheck 的选项你只要记得『 -avug 』一起下达即可!那个 -f 与 -M 是在文件系统可能已经启动quota 了, 但是你还想要重新扫瞄文件系统时,系统会要求你加入那两个选项啦 (担心有其他人已经使用 quota 中)!平时没必要不要加上那两个项目。好了,那就让我们来处理我们的任务吧!
# 针对整个系统含有 usrquota, grpquota 参数的文件系统进行 quotacheck 扫瞄
[root@www ~]# quotacheck -avug
quotacheck: Scanning /dev/hda3 [/home] quotacheck: Cannot stat old
user quota
file: No such file or directory <==有找到文件系统,但尚未制作记录文件!
quotacheck: Cannot stat old group quota file: No such file or directory
quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Cannot stat old group quota file: No such file or directory
done <==上面三个错误只是说明记录文件尚未建立而已,可以忽略不理!
quotacheck: Checked 130 directories and 107 files <==实际搜寻结果
quotacheck: Old file not found.
quotacheck: Old file not found.
# 若执行这个指令却出现如下的错误讯息,表示你没有任何文件系统有启动 quota 支持!
# quotacheck: Can't find filesystem to check or filesystem not mounted
with
# quota option.
[root@www ~]# ll -d /home/a*
-rw------- 1 root root 8192 Mar 6 11:58 /home/aquota.group
-rw------- 1 root root 9216 Mar 6 11:58 /home/aquota.user
# 在鸟哥的案例中,/home 独立的文件系统,因此搜寻结果会将两个记录文件放在
# /home 底下。这两个档案就是 Quota 最重要的信息了!
Quota 启动、 关闭与限制值设定
制作好 Quota 配置文件之后,接下来就是要启动 quota 了!启动的方式很简单!使用 quotaon ,至于关闭就用 quotaoff 即可
quotaon :启动 quota 的服务
[root@www ~]# quotaon [-avug]
[root@www ~]# quotaon [-vug] [/mount_point]
选项与参数:
-u :针对使用者启动 quota (aquota.user)
-g :针对群组启动 quota (aquota.group)
-v :显示启动过程的相关讯息;
-a :根据 /etc/mtab 内的 filesystem 设定启动有关的 quota ,若不加 -a 的话,则后面就需要加上特定的那个 filesystem 喔!
# 由于我们要启动 user/group 的 quota ,所以使用底下的语法即可
[root@www ~]# quotaon -auvg
/dev/hda3 [/home]: group quotas turned on
/dev/hda3 [/home]: user quotas turned on
# 特殊用法,假如你的启动 /var 的 quota 支持,那么仅启动 user quota 时
[root@www ~]# quotaon -uv /var
quotaoff :关闭 quota 的服务
[root@www ~]# quotaoff [-a]
[root@www ~]# quotaoff [-ug] [/mount_point]
选项与参数:
-a :全部的 filesystem 的 quota 都关闭 (根据 /etc/mtab)
-u :仅针对后面接的那个 /mount_point 关闭 user quota
-g :仅针对后面接的那个 /mount_point 关闭 group quota
edquota :编辑账号/群组的限值与宽限时间
edquota 是 edit quota 的缩写,所以就是用来编辑使用者或者是群组限额的指令啰。我们先来看看edquota 的语法吧, 看完后再来实际操作一下。
[root@www ~]# edquota [-u username] [-g groupname]
[root@www ~]# edquota -t <==修改宽限时间
[root@www ~]# edquota -p 范本账号 -u 新账号
选项与参数:
-u :后面接账号名称。可以进入 quota 的编辑画面 (vi) 去设定 username 的限制值;
-g :后面接组名。可以进入 quota 的编辑画面 (vi) 去设定 groupname 的限制值;
-t :可以修改宽限时间。
-p :复制范本。那个 模板账号 为已经存在并且已设定好 quota 的使用者, 意义为『将 范本账号 这个人的 quota 限制值复制给 新账号 』!
好了,先让我们来看看当进入 myquota1 的限额设定时,会出现什么画面:
范例一:设定 dmtsai 这个使用者的 quota 限制值
[root@www ~]# edquota -u myquota1
Disk quotas for user myquota1 (uid 710):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 80 0 0 10 0 0
上头第一行在说明针对哪个账号 (myquota1) 进行 quota 的限额设定,第二行则是标头行,里面共分为七个字段, 七个字段分别的意义为:
1. 文件系统 (filesystem):说明该限制值是针对哪个文件系统 (或 partition);
2. 磁盘容量 (blocks):这个数值是 quota 自己算出来的,单位为 Kbytes,请不要更改他;
3. soft:磁盘容量 (block) 的 soft 限制值,单位亦为 KB
4. hard:block 的 hard 限制值,单位 KB;
5. 档案数量 (inodes):这是 quota 自己算出来的,单位为个数,请不要更改他;
6. soft:inode 的 soft 限制值;
7. hard:inode 的 hard 限制值;
因此上述的画面我们将他改成如下的模样:
Disk quotas for user myquota1 (uid 710):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 80 250000 300000 10 0 0
设定完成之后,还有其他5个用户要设定,由于设定值都一样,此时可以使用quota复制喔!
# 将 myquota1 的限制值复制给其他四个账号
[root@www ~]# edquota -p myquota1 -u myquota2
[root@www ~]# edquota -p myquota1 -u myquota3
[root@www ~]# edquota -p myquota1 -u myquota4
[root@www ~]# edquota -p myquota1 -u myquota5
这样就方便多了!然后,赶紧更改一下群组的 quota 限额吧!
[root@www ~]# edquota -g myquotagrp
Disk quotas for group myquotagrp (gid 713):
Filesystem blocks soft hard inodes soft hard
/dev/hda3 400 900000 1000000 50 0 0
# 记得,单位为 KB 喔!最后,将宽限时间给他改成 14 天吧!
# 宽限时间原本为 7 天,将他改成 14 天吧!
[root@www ~]# edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda3 14days 7days
# 原本是 7days ,我们将他给改为 14days 喔!
Quota 限制值的报表
quota 的报表主要有两种模式,一种是针对每个个人或群组的 quota 指令,一个是针对整个文件系统的 repquota 指令。 我们先从较简单的 quota 来介绍!你也可以顺道看看你的设定值对不对啊!
quota :单一用户的 quota 报表
[root@www ~]# quota [-uvs] [username]
[root@www ~]# quota [-gvs] [groupname]
选项与参数:
-u :后面可以接 username ,表示显示出该用户的 quota 限制值。若不接 username ,表示显示出执行者的 quota 限制值。
-g :后面可接 groupname ,表示显示出该群组的 quota 限制值。
-v :显示每个用户在 filesystem 的 quota 值;
-s :使用 1024 为倍数来指定单位,会显示如 M 之类的单位!
# 直接使用 quota 去显示出 myquota1 与 myquota2 的限额
[root@www ~]# quota -uvs myquota1 myquota2
Disk quotas for user myquota1 (uid 710):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 80 245M 293M 10 0 0
Disk quotas for user myquota2 (uid 711):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 80 245M 293M 10 0 0
# 这个指显示出来的数据跟 edquota 几乎是一模一样的,只是多了个 grace项目。
# 你会发现 grace 底下没有任何数据,这是因为我们的使用量 (80) 尚未超过 soft
# 显示出 myquotagrp 的群组限额
[root@www ~]# quota -gvs myquotagrp
Disk quotas for group myquotagrp (gid 713):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 400 879M 977M 50 0 0
repquota :针对文件系统的限额做报表
[root@www ~]# repquota -a [-vugs]
选项与参数:
-a :直接到 /etc/mtab 搜寻具有quota标志的filesystem ,并报告quota的结果;
-v :输出的数据将含有 filesystem 相关的细部信息;
-u :显示出用户的 quota 限值 (这是默认值);
-g :显示出个别群组的 quota 限值。
-s :使用 M, G 为单位显示结果
# 查询本案例中所有使用者的 quota 限制情况:
[root@www ~]# repquota -auvs
*** Report for user quotas on device /dev/hda3 <==针对 /dev/hda3
Block grace time: 14days; Inode grace time: 7days <==block 宽限时间为 14 天
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 651M 0 0 5 0 0
myquota1 -- 80 245M 293M 10 0 0
myquota2 -- 80 245M 293M 10 0 0
myquota3 -- 80 245M 293M 10 0 0
myquota4 -- 80 245M 293M 10 0 0
myquota5 -- 80 245M 293M 10 0 0
Statistics: <==这是所谓的系统相关信息,用 -v 才会显示
Total blocks: 9
Data blocks: 2
Entries: 22
Used average: 11.000000
warnquota :对超过限额者发出警告信
warnquota字面上的意义就是 quota 的警告 (warn) 嘛!那么这东西有什么用呢?他可以依据/etc/warnquota.conf 的设定,然后找出目前系统上面 quota 用量超过 soft (就是有 grace time 出现的那些家伙) 的账号,透过 email 的功能将警告信件发送到用户的电子邮件信箱。 warnquota 并不会自动执行,所以我们需要手动去执行他。单纯执行『 warnquota 』之后,他会发送两封信出去, 一封给 myquota1 一封给 root !
[root@www ~]# warnquota
# 完全不会出现任何讯息!没有讯息就是『好讯息』! ^_^
[root@www ~]# mail
N329 root@www.vbird.tsai Fri Mar 6 16:10 27/1007 "NOTE: ....
& 329 <==因为新信件在第 329 封之故
From root@www.vbird.tsai Fri Mar 6 16:10:18 2009
Date: Fri, 6 Mar 2009 16:10:17 +0800
From: root <root@www.vbird.tsai>
Reply-To: root@myhost.com
Subject: NOTE: You are exceeding your allocated disk space limits
To: myquota1@www.vbird.tsai
Cc: root@www.vbird.tsai <==注意这三行,分别是标题、收件者与副本 (CC)。
Your disk usage has exceeded the agreed limits on this server <==问题说明
Please delete any unnecessary files on following filesystems:
/dev/hda3 <==底下这几行为发生磁盘『爆表』的信息啦!
Block limits File limits
Filesystem used soft hard grace used soft hard grace
/dev/hda3 +- 300000 250000 300000 13days 12 0 0
root@localhost <==这个是警告讯息发送者的『签名资料』啦!
& exit <==离开 mail 程序!
不过这个方法并不适用在 /var/spool/mail 也爆表的 quota 控管中,因为如果使用者在这个 filesystem的容量已经爆表,那么新的信件当然就收不下来啦!那么我们怎么让系统自动的执行warnquota 呢? 你可以这样做:
[root@www ~]# vi /etc/cron.daily/warnquota
/usr/sbin/warnquota
# 你没有看错!只要这一行,且将执行文件以绝对路径的方式写入即可!
[root@www ~]# chmod 755 /etc/cron.daily/warnquota
setquota :直接于指令中设定 quota 限额
如果你想要使用 script 的方法来建立大量的账号,并且所有的账号都在建立时就给予 quota ,那该如何是好? 其实有两个方法可以考虑:
· 先建立一个原始 quota 账号,再以『 edquota -p old -u new 』写入 script 中;
· 直接以 setquota 建立用户的 quota 设定值。
不同于 edquota 是呼叫 vi 来进行设定,setquota 直接由指令输入所必项要的各项限制值。 他的语法有点像这样:
[root@www ~]# setquota [-u|-g] 名称 block(soft) block(hard) \
> inode(soft) inode(hard) 文件系统
# 观察原始的 myquota5 限值,并给予 soft/hard 分别为 100000/200000
[root@www ~]# quota -uv myquota5
Disk quotas for user myquota5 (uid 714):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 80 250000 300000 10 0 0
[root@www ~]# setquota -u myquota5 100000 200000 0 0 /home
[root@www ~]# quota -uv myquota5
Disk quotas for user myquota5 (uid 714):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 80 100000 200000 10 0 0
# 看吧!真的有改变过来!这就是 quota 的简单脚本设定语法!
不更动既有系统的 quota 实例
既然 quota 是针对整个 filesystem 来进行限制,假设你又已经有 /home 这个独立的分割槽了, 那么你只要:
1. 将 /var/spool/mail 这个目录完整的移动到 /home 底下;
2. 利用 ln -s /home/mail /var/spool/mail 来建立链接数据;
3. 将 /home 进行 quota 限额设定
只要这样的一个小步骤,嘿嘿!您家主机的邮件就有一定的限额啰!您也可以依据不同的使用者与群组来设定 quota 然后同样的以上面的方式来进行 link 的动作,就有不同的限额针对不同的使用者提出啰! ^_^
例行性工作排程(crontab)
什么是例行性命令
例行性的工作:每年一次的加薪,每月一次的工作报告,每天都需要打卡等。
临时性的工作:刚好要接个电话,大蒜涨价等。
Linux工作任务分配的种类:at、cron
有两种工作任务分配方式:
一种是例行性的,就是每隔一定的周期要办的事项。
一种是突发性的,就是这次做完以后就没有的那一种。
使用at 与 cron
at:工作仅执行一次就从Linux系统的任务分配中取消。
cron:工作将继续下去。
系统常见的例行性命令
Linux本身在后台的工作很多。基本上默认的工作有下面这些:
登录文件的数据轮换(log rotate)。因为登录文件会越来越大,需要适时地适量地备份登录文件,并用新的文件进行记录。这是系统默认的工作之一。
rpm数据库的建立:虽然RPM数据库会在您以RPM安装之后更新到RPM数据库中,但是不能确保会有遗漏,所以将系统设置为每隔一段是时间久自动收集和建立系统上的RPM数据库。
建立locate的数据库:locate命令的搜索速度非常快。使用这个命令的时候直指数据库(/var/lib/slocate/slocate.db),这个文件一天更新一次。
程序分析:每隔一段是时间分析一下程序看看有无僵尸程序,以便删除。
检测登录文件:分析登录文件,以维护主机的安全。
指纹数据库的比较:通常指tripwire套件,可以用来分析最近更改过的文件内容。
仅进行一次的工作任务分配:at
要分配这种工作任务是,Linux系统上必须要有负责任务分配的服务,就是atd。不过很多版本上都默认不打开它。启用它的方法:
命令行界面下敲:/etc/init.d/atd restart然后回车。
设置开机就启动 # chkconfig --level 35 atd on
1 at的工作
任务分配,就要有写入工作的记录文件,用at命令来写入工作记录文件。工作记录默认放在/var/spool/at(这是一个目录)下面,写入这个工作记录后,这个工作便进入任务分配中并等待执行。当然要让/var/spool/at目录下面的工作运行,就需要用到atd服务。
为了安全的考虑,并不是所有的人都可以进行at任务的分配。可以利用/etc/at.allow与/etc/at.deny这个两个文件来限制at的使用。
有了这两个文件之后的at工作情况是这样的:
先去找/etc/at.allow文件,在这个文件里面的用户才能使用at,如果不在则不能使用,即便是没有再at.deny中。
如果没有at.allow就找at.deny这个文件,这个文件中的用户不能使用at,如果不在就可以用。
如果这两个文件都没有,则只有root能使用。
at.allow与at.deny只要有一个就可以了。
一个账号写一行即可。
2 开始使用at
at的语法:
[root@www ~]# at [-mldv] TIME
[root@www ~]# at -c 工作号码
选项与参数:
-m :当 at 的工作完成后,即使没有输出讯息,亦以 email 通知使用者该工作已完成。
-l :at -l 相当于 atq,列出目前系统上面的所有该使用者的 at 排程;
-d :at -d 相当于 atrm ,可以取消一个在 at 排程中的工作;
-v :可以使用较明显的时间格式列出 at 排程中的工作列表;
-c :可以列出后面接的该项工作的实际指令内容。
TIME:时间格式,这里可以定义出『什么时候要进行 at 这项工作』的时间,格式有:
HH:MM ex> 04:00
在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此工作。
HH:MM YYYY-MM-DD ex> 04:00 2009-03-17
强制规定在某年某月的某一天的特殊时刻进行该工作!
HH:MM[am|pm] [Month] [Date] ex> 04pm March 17
也是一样,强制在某年某月某日的某时刻进行!
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex> now + 5 minutes ex> 04pm + 3 days
就是说,在某个时间点『再加几个时间后』才进行。
老实说,这个 at 指令的下达最重要的地方在于『时间』的指定了!喜欢使用『 now + ... 』 的方式来定义现在过多少时间再进行工作,但有时也需要定义特定的时间点来进行!
例子:
范例一:再过五分钟后,将 /root/.bashrc 寄给 root 自己 [root@www ~]# at now + 5 minutes <==记得单位要加 s 喔! at> /bin/mail root -s "testing at job" < /root/.bashrc at> <EOT> <==这里输入 [ctrl] + d 就会出现 <EOF> 的字样!代表结束! job 4 at 2009-03-14 15:38 # 上面这行信息在说明,第 4 个 at 工作将在 2009/03/14 的 15:38 进行! # 而执行 at 会进入所谓的 at shell 环境,让你下达多重指令等待运作!
范例二:将上述的第 4 项工作内容列出来查阅 [root@www ~]# at -c 4 #!/bin/sh <==就是透过 bash shell 的啦! # atrun uid=0 gid=0 # mail root 0 umask 22 ....(中间省略许多的环境变量项目).... cd /root || { <==可以看出,会到下达 at 时的工作目录去执行指令 echo 'Execution directory inaccessible' >&2 exit 1 }
/bin/mail root -s "testing at job" < /root/.bashrc # 你可以看到指令执行的目录 (/root),还有多个环境变量与实际的指令内容啦!
范例三:由于机房预计于 2009/03/18 停电,我想要在 2009/03/17 23:00 关机? [root@www ~]# at 23:00 2009-03-17 at> /bin/sync at> /bin/sync at> /sbin/shutdown -h now at> <EOT> job 5 at 2009-03-17 23:00 # 您瞧瞧! at 还可以在一个工作内输入多个指令呢!不错吧! |
事实上,当我们使用 at 时会进入一个 at shell 的环境来让使用者下达工作指令,此时,建议你最好使用绝对路径,不容易出问题。每个命令都可能有信息输出到屏幕上,但是利用at后的信息都会以电子邮件的方式发送到用户的邮箱里面去。可以使用参数”-m”强制传给自己一个电子邮箱信息。
at的优点是”后台执行”
at要进行工作任务分配,系统会将at工作独立出bash环境中,直接交给atd程序接管,当执行了at的工作之后,就可以立刻离线剩下的工作完全交给Linux管理即可,使用at还可以免除网络断线后的困扰。
“atq”命令可以查看当前主机上有多少at工作任务分配。
利用atrm jobsnumber可以删除工作号为“jobnumber”的工作。
batch:系统有空时才进行背景任务
其实 batch 是利用 at 来进行指令的下达啦!只是加入一些控制参数而已。这个 batch 神奇的地方在于:他会在 CPU 工作负载小于 0.8 的时候,才进行你所下达的工作任务啦! 那什么是负载 0.8 呢?这个负载的意思是: CPU 在单一时间点所负责的工作数量。
那么 batch 如何下达指令呢?很简单啊!与 at 相同啦!
循环执行的例行性命令
用户的设置:crontab
建立例行性命令时使用crontab命令。安全期间,可以限制使用这个命令的用户账号,建立两个文件/etc/cron.allow与/etc/cron.deny.前者要比后者优先,这两个文件夹只选择一个来限制保留一个就可以了。
使用cron命令建立工作任务分配后,该项工作就会被记录到/var/spool/cron中,而且是以账号来识别的。比如说cjw用户使用crontab后,他的工作会记录到/var/spool/cron/cjw里面。
Cron执行的每一项工作都会记录到/etc/log/cron这个登录文件中。
crontab 的语法吧!
[root@www ~]# crontab [-u username] [-l|-e|-r] 选项与参数: -u :只有 root 才能进行这个任务,亦即帮其它使用者建立/移除 crontab 工作排程; -e :编辑 crontab 的工作内容 -l :查阅 crontab 的工作内容 -r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑。
范例一:用 dmtsai 的身份在每天的 12:00 发信给自己 [dmtsai@www ~]$ crontab -e # 此时会进入 vi 的编辑画面让您编辑工作!注意到,每项工作都是一行。 0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc #分 时 日 月 周 |<==============指令串========================>| |
预设情况下,任何使用者只要不被列入 /etc/cron.deny 当中,那么他就可以直接下达『 crontab -e 』去编辑自己的例行性命令!
这六个字段的意义为:
比较有趣的是那个『周』!周的数字为 0 或 7 时,都代表『星期天』的意思!
一些特殊的字符有底下这些:
系统的设置 :/etc/crontab
上面的crontab –e是针对用户的cron来设计的。如果是“系统的例行性任务”,直接编译/etc/crontab这个文件就可以了。
注意:crontab –e中的crontab其实是/etc/bin/crontab执行文件,而/etc/crontab是一个“纯文本文件”。
为了保证crond服务会顺利进行,在修改完/etc/crontab之后重启crond服务
/etc/init.d/crond restart
一些使用特性
资源分配不均的问题
流量
区域内其他PC的流量监测;
CPU使用率;
RAM使用率;
在线人数实时监测。
取消不要的输出项目
安全检验:可以通过检验/var/log/cron的内容来查看时否执行了“非您设置的cron”
周与日月不可同时并存