现在的位置: 首页 > 综合 > 正文

http://10.1.1.35/ule_basic/ule08.txt

2013年10月10日 ⁄ 综合 ⁄ 共 7210字 ⁄ 字号 评论关闭
--

时间任务

at crontab anaron



at
1,任务是一次性的
2,设置的时间点过了,就不能再执行


/etc/init.d/atd start --启动对应的服务


chkconfig atd on --level 2345


[root@li ~]# at 09:47 042510 --在10年04月25号的09点47分执行
at> echo 'hello'>/dev/pts/2
at> <EOT> --按ctrl+d 结束
job 15 at 2010-04-25 09:47 --这里可以看到什么时间将会执行这个job



at
-l 查看时间job 相当于atq
-d 删除时间job 相当于atrm
-c 显示时间job的内容
-f 后接一个脚本

/var/spool/at 目录下存放的就是你的还没有执行的at任务

[root@li ~]# ls /var/spool/at/
a0000e01bf7989 a00011014b8c0e a00012015396ce --这里看就看出有三个没有执行的at任务

[root@li ~]# file /var/spool/at/a0000e01bf7989
/var/spool/at/a0000e01bf7989: Bourne shell script text executable

[root@li ~]# cat /var/spool/at/a0000e01bf7989 --可以在最后看到这个at任务的内容 与at -c一样

[root@li ~]# atq
18 2012-04-25 09:50 a root
14 2025-10-04 09:45 a root
17 2011-04-25 09:50 a root

--从现在往后推一段时间执行
[root@li ~]# at now + 1 minutes --单位有minutes,hours,days,weeks星期
at> echo 'bbb' > /dev/pts/2
at> <EOT>
job 19 at 2010-04-25 10:00 --这里也是显示它将要执行的时间和任务号


[root@li ~]# at 10:05 042510 -f at.sh --用-f参数接一个将要执行的脚本程序
job 20 at 2010-04-25 10:05


at任务的使用限制:
/etc/at.allow
/etc/at.deny

/etc/at.allow --在这里可以写上允许执行at的普通用户,一个用户一行;存在的话就不用去考虑at.deny
/etc/at.deny --在这里可以定上拒绝执行at的普通用户,一个用户一行;如果at.allow不存在,才生效


--默认系统只有一个/etc/at.deny,并且为空,也就是说默认系统的任何普通用户都可以使用at服务



batch executes commands when system load levels permit; in other words,
when the load average drops below 0.8, or the value specified in
the invocation of atrun.

batch 命令
当负载小于0.8时,才会执行 ;用法与at 一样



--$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$


crontab


crontab特点:
1,能够周期性的运行
2,时间过了就不执行,等下一个周期再执行


[root@li ~]# /etc/init.d/crond start --把对应的服务给启起来,注意服务名是crond不是crontab

配置文件; /etc/crontab --一般设定目录
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts

执行周期时间 执行身份 命令行 目录
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly


时间格式
分 时 日 月 周
01 * * * *

分钟: 0-59
小时: 0-24
日: 1-31 看月份定
月: 1-12
周 0-7 0和7都是代表星期天

时间格式的几种特殊符号写法
* 代表每分钟,每小时,每日,每星期,每月..........
, 代表分隔时间 1,5,6,7
- 代表一个时间范围  7-20
/n 代表每隔n个单位   /3



01 1,5,12,18,23 * * * --每天的1,5,12,18,23点的第一分钟
01 * 5-15 * * --每月的5号到15号的每小时的第一分钟
/2 * * * * --每两分钟
/3 1,3,8 1-5 3-6 7 --每年的3到6月的1到5号的1,3,8点的每三分钟  (只有星期天才行)  



执行身份是用哪个用户去执行,注意他要有执行权限  


run-parts --后面一般接一个目录,表示执行目录下所有
[root@li ~]# which run-parts
/usr/bin/run-parts


例子1;
vim /etc/crontabcrontab -e -u d

* * * * * root echo 'crontab'> /dev/pts/2 --每分钟都会去echo一个crontab到/dev/pts/2终端


例子2;
vim /etc/crontab
* * * * * root run-parts /etc/cron.minutely --做一个每分钟都会执行的目录,把每分钟都要执行的脚本任务放到这个目录里,注意要有执行权限 


注意:
--修改了/etc/crontab的配置后,不需要重启crond服务,但要保证是开启状态


命令设置方法:

crontab
-e --编辑自己的时间任务
-l --列出自己的时间任务
-r --删除时间任务
-i --删除前要求确认

[root@li ~]# crontab -e
30 18 * * * /sbin/init 0 --写上每晚6点30分钟自动关机    注意要root用户写才有效


[root@li ~]# crontab -l --列出自己的时间任务
30 18 * * * /sbin/init 0


[root@li ~]# crontab -r --全删掉自己的时间任务,想要只删除一行或者两行,就要自己去手动删除

crontab任务
/var/spool/cron/*      --*代表用户


用root用户管理普通用户的时间任务
crontab -e -u d --编辑d民的时间任务
crontab -l -u d --列出d用户的时间任务
crontab -r -u d --删除d用户的时间任务


crontab的使用限制: 和atd服务是一样的


/etc/cron.allow --写上允许使用crontab的普通用户名,一行写一个;有些文件的话就不考虑/etc/cron.deny
/etc/cron.deny  --写上拒绝使用crontab的普通用户名,一行写一个;如果/cron.allow不存在,才生效
 



--实际应用时要注意的是:
如果时间任务比较多的情况下,都是周期性执行,根据任务的需求,负载,时间规定,最好是把各项任务给平均分开,防止任务时间点挤在一起,造成服务器的某一时间点负载过高




-----------------------------------------------

anacron 特点:
与crond服务配合使用,保证crond没有执行的任务可以延后执行

配置文件: vim /etc/anacrontab

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

天数 延后时间(分钟) 自定义的名字 执行命令串 目录

1 65 cron.daily run-parts /etc/cron.daily
7 70 cron.weekly run-parts /etc/cron.weekly
30 75 cron.monthly run-parts /etc/cron.monthly


工作原理:是用系统时间与时间标记作对比,从而判断是否有没有完成的crond服务

[root@li ~]# cat /var/spool/anacron/cron.daily
20100425 --这是一个时间标记, anocron服务会拿这个时间标记与你的系统时间作对比,如果时间不是今天的,而是昨天的,说明此服务发现有crond的服务没有完成 ,会延后执行

[root@li ~]# cat /var/spool/anacron/cron.monthly
20100327
[root@li ~]# cat /var/spool/anacron/cron.weekly
20100421

延后时间 一般不用调
自定义的名字自己定义

--此服务一般不用调,想要保证crond服务工作的完整性,把它打开就可以

chkconfig anacron on












--$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$44


nfs 服务
network file system 网络文件系统

是由sun公司提出的 ,用来做网络之间的文件共享,是一种共享式集群文件系统


[root@station218 ~]# mount 10.1.1.35:/share/soft /mnt
mount: mount to NFS server '10.1.1.35' failed: RPC Error: Program not registered.--看到rpc报错,一般就是portmap重启注册一下


RPC remote produrce call


[root@li ~]# netstat -ntlup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:770 0.0.0.0:* LISTEN 6527/rpc.mountd
tcp 0 0 0.0.0.0:49935 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 6447/portmap
tcp 0 0 0.0.0.0:756 0.0.0.0:* LISTEN 6512/rpc.rquotad
tcp 0 0 :::80 :::* LISTEN 2130/httpd
tcp 0 0 :::22 :::* LISTEN 2027/sshd
udp 0 0 0.0.0.0:2049 0.0.0.0:* -
udp 0 0 0.0.0.0:47852 0.0.0.0:* -
udp 0 0 0.0.0.0:111 0.0.0.0:* 6447/portmap
udp 0 0 0.0.0.0:753 0.0.0.0:* 6512/rpc.rquotad
udp 0 0 0.0.0.0:767 0.0.0.0:* 6527/rpc.mountd




portmap 111 端口 功能端口注册
nfs 2049 端口
其他的rpc.xxx 启动的端口是要向111端口注册的


做nfs服务器

[root@li ~]# /etc/init.d/portmap start
[root@li ~]# /etc/init.d/nfs start --把这两个服务启起来


配置文件:
vim /etc/exports

参数:
ro 只读
rw 可读可写
root_squash 代表客户端以nfsnobody用户挂载,默认不写就有
no_root_squash 代表客户端以root用户挂载
sync 同步
async 异步



/share/iso *(ro) --把/share/iso 共享给* (代表所有IP) ro (代表只读)

/share/iso *(rw) --rw代表可读可写

/share/iso 10.1.1.0/24(ro) --只共享给10.1.1的网段的计算机访问
/share/iso 10.1.1.0/255.255.255.0(ro)

/share/iso 10.1.1.218/255.255.255.255(ro) --定义只10.1.1.218这台计算机可以访问
/share/iso 10.1.1.218/32(ro)

/share/iso 10.1.1.218/32(ro) 10.1.1.254/32(ro) --定义只有218和254这两台可以访问


关于nfs权限:
客户端挂载目录的权限为服务端共享目录的权限


nfs服务共享目录的默认权限规定是以nfsnobody这个用户来挂载
在/etc/passwd下有这么一句
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin



/share/iso *(ro) 默认等于 /share/iso *(ro,root_squash)
--root_squash代表客户端以nfsnobody用户挂载


/share/iso 10.1.1.218/32(ro,no_root_squash) 10.1.1.254/32(ro,root_squash)
--no_root_squash代表客户端以root用户挂载,就算是218对/share/iso有w权限,也不能写,因为ro参数确定只读



/share/iso 10.1.1.218/32(rw,anonuid=533,anongid=534) --指定客户端以uid=533,gid=534挂载




--修改了/etc/exports以后,要重启服务使之生效


不用重启服务,使修改过的配置文件生效

exportfs -arv --重新读取/etc/exports文件里的共享,并导入
-auv --卸载/etc/exports文件里的共享,别人showmount -e看不到,也挂载不了

[root@li iso]# cat /var/lib/nfs/etab
/share/install *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
/share/soft *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
/share/iso *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)


cat /var/lib/nfs/xtab



--客户端的操作
showmount -e 10.1.1.35

mount 10.1.1.35:/share/iso /mnt






---------------------------------------------------------------------------------


关于挂载相关的问题:

1,客户端mount了server端的共享目录,但没有umount,但server先关机,会造成客户端正常关机可能会关不了,或者再umount这个目录也umount不了

2,把这一句 mount 10.1.1.35:/share/iso/ /mnt 做成开机自动挂载
第一种方式: vim /etc/fstab
10.1.1.35:/share/iso /mnt nfs defaults 0 0

mount -a命令去验证,验证前先把/mnt给umount

第二种方式:
vim /etc/rc.local
mount 10.1.1.35:/share/iso/ /mnt


第三种方式:
使用autofs自动挂载

/etc/init.d/autofs --服务脚本 ,保证服务是启动状态

/etc/auto.master --主配置文件

vim /etc/auto.master
/nfs /etc/auto.nfs --写上这句配置,表示/nfs目录下的挂载选项是由/etc/auto.nfs配置文件决定的 /nfs目录和/etc/auto.nfs文件都是不存在的,自己自定义建立

mkdir /nfs



vim /etc/auto.nfs
iso - 10.1.1.35:/share/iso
soft - 10.1.1.35:/share/soft
install - 10.1.1.35:/share/install
--这三句表示自动把10.1.1.35上的三个共享目录分别挂载到/nfs/iso, /nfs/soft, /nfs/install三个目录下,中间的-表示挂载参数,这里用-是默认挂载



--挂载的目录默认在/nfs目录下用ls命令看不到, 但可以 cd /nfs/iso 进去, 这时会帮你自动挂载
大概五分钟后,没有使用的话,会自动umount掉







--------------------------------------------------------------------------


题目:

1,并每天打包并用bz2压缩备份/var/log目录到/tmp目录下,以当天时间命名,用crontab做,并保证它的完整性

2,配置nfs服务

共享自己的/share/soft目录,要求客户端以root用户身份挂载
/share/source目录,要求客户端以uid=600,gid=700的身份挂载
并用autofs服务实现自动挂载






抱歉!评论已关闭.