前言:
目前我们对“oracledayofweek”大体比较关心,姐妹们都需要分析一些“oracledayofweek”的相关内容。那么小编同时在网摘上网罗了一些对于“oracledayofweek””的相关资讯,希望小伙伴们能喜欢,朋友们快快来学习一下吧!一.时间有关服务
atd crond anacrond(此服务rhel6没有,整合到了crond里)
1. atd 服务,一次性时间定时服务(只能定时在某一个分钟的0秒,不能定时某一秒;如果你想精确定时在某时某分某秒,可以使用shell脚本来做)
# /etc/init.d/atd restart
# chkconfig atd on
# at 14:18 072414 --定时的时间 后面是14年7月24号
at> echo "haha" > /dev/pts/1
at> <EOT> --ctrl+d结束
job 1 at 2014-07-24 14:18 --job 1表示一个编号,我这里是系统的第一次at任务所以为1.后面是定时的时间
如果你要做的事步骤比较多,则先写成脚本,然后调用
at -f xxx.sh
# vim /tmp/1.sh
#!/bin/bash
echo 1 > /dev/pts/1
echo 2 > /dev/pts/1
echo 3 > /dev/pts/1
# at now + 1 minutes -f /tmp/1.sh
job 2 at 2014-07-24 14:26
# at now + 1 hours -f /tmp/1.sh
job 3 at 2014-07-24 15:25
# at now + 1 days -f /tmp/1.sh
job 4 at 2014-07-25 14:25
# at now + 1 months -f /tmp/1.sh
job 5 at 2014-08-24 14:25
# at now + 1 years -f /tmp/1.sh
job 6 at 2015-07-24 14:25
其他at命令支持的格式:
# at 6.45 am May 12
# at 11.10 pm
# at 9am tomorrow
# at 15:00 May 24
at
-l 列出at任务 等于atq
-d 删除at任务 等于atrm
-c 查看任务内容
# at -l
3 2014-07-24 15:25 a root
4 2014-07-25 14:25 a root
6 2015-07-24 14:25 a root
# ls /var/spool/at/ --这个目录会看到有三个可执行文件, cat去看与at -c 任务号看到的结果一样
a0000301659c9d a000040165a201 a00006016da181 spool
/etc/at.allow --此文件默认不存在,但可以手动创建,白名单
/etc/at.deny --拒绝,黑名单
--这两个文件控制哪些普通用户可以使用at服务
batch --当负载值低于0.8时,则执行你的任务;但是不太靠谱,建议有此类需求,还是自己写shell来做
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
atd.
# batch
at> echo hehe > /dev/pts/1
at> <EOT>
job 10 at 2014-07-24 14:42
2. crond
周期性执行时间任务
/etc/init.d/crond start --启动服务
chkconfig crond on --开机启动服务
配置文件:
# vim /etc/crontab --下面四行是rhel5里的配置,rhel6里看不到了,但还是在生效
01 * * * * root run-parts /etc/cron.hourly/
02 04 * * * root run-parts /etc/cron.daily/
22 04 * * 7 root run-parts /etc/cron.weekly/
42 04 1 * * root run-parts /etc/cron.monthly/
执行周期 执行用户 特殊命令 执行的对象
分 时 日 月 周
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
*代表每分,每小时,每天。。。。。。
,代表分隔的时间,如1,3,7
-代表连续的时间,如2-10
*/2代表每2分,每2小时........
run-parts 后面接的是目录,表示执行目录里所有的脚本,脚本要有执行权限
* * * * * --每分钟执行
3-7 2,4,8 * * * --每天的2点,4点,8点的3到7分执行
05 */3 * * * --每三小时的05分执行
05 3-5 5-10 1-4 7 --这里主要是5-10号和星期天这两个条件的关系为或关系(or),而不是和关系(and)。也就是说两个条件只需要满足其一就执行。
例1:
vim /etc/crontab
* * * * * root echo heihei > /dev/pts/5
例2:
* * * * * root sh /path/1.sh --如果执行的事情比较复杂,先写在脚本里,这样去执行
例3:
# vim /etc/crontab
* * * * * root run-parts /etc/cron.minutely
# mkdir /etc/cron.minutely
# vim /etc/cron.minutely/1.sh
#!/bin/bash
echo haha > /dev/pts/5
# vim /etc/cron.minutely/2.sh
#!/bin/bash
echo hehe > /dev/pts/5
# chmod 755 /etc/cron.minutely/*
例4:
crontab命令的一般形式为:
crontab [-u user] -e -l -r
-u 用户名。
-e 编辑crontab文件。
-l 列出crontab文件中的内容。
-r 删除crontab文件。
(1)创建一个新的crontab文件
# touch /tmp/cronfile
# echo "* * * * * echo 1 > /dev/pts/2" >> /tmp/cronfile
# crontab /tmp/cronfile
(2)列出crontab文件
# crontab -l
(3)编辑crontab文件
# crontab -e --每个用户都可以这样创建自己的时间任务
01 21 * * * /sbin/init 0 --因为用什么用户操作就是什么用户的身份,所以这里不用写用户身份
# crontab -u user1 -e --编辑user1用户的时间任务
你不使用crontab -e,直接去修改下面的目录里的对应的用户名的文件也是一样
/var/spool/cron/
(4)删除crontab文件
# crontab -r
(5)允许和拒绝
/etc/cron.allow
/etc/cron.deny --这两个文件的作用参考at.allow和at.deny就可以了
最后,记住一个小常识:如果你要执行多个时间任务,尽量分散到不同的时间点,不让它们重合,会造成一个负载的峰值。
3. anacrond 此服务rhel6没有,整合到了crond里,就是表示crond服务启来了,那么这个服务也起来了
当crond里的执行服务因为关机等原因造成没有执行,anacrond就帮你补上执行。
# vim /etc/anacrontab
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
下面这句话意思为:发现1天内/etc/cron.daily里的脚本有没有执行过的crond服务,就会延迟5分钟加一个随机分钟数(可以看日志/var/log/cron来确定)帮你做,然后把时间记录到/var/spool/anacron/cron.daily文件里
1 5 cron.daily nice run-parts /etc/cron.daily
一般来说,此服务不用修改,知道原理就可以了。
如果我现在用crontab写了晚上23点关机,但是我在18点就手动关了,第二天9点来开机,它会不会延迟一段时间把我又关了呢?
如果你是用crontab -e写的关机,则不会
如果你把关机写了一个脚本放到/etc/cron.daily里面,则是可以的
测试步骤:
1,把关机写了一个脚本放到/etc/cron.daily里面,然后给执行权限
2,你可以尝试到延迟的时间改短点,也把随机的RANDOM_DELAY的参数范围改小
3,直接把系统时间改到2天后,这样就可以模拟你的关机任务1天以上的时间没有做
4,可以把crond服务重启一下,查看日志并等待结果
二. nfs network file system
它是一种集群式文件系统,类似于gfs2(global file system ),ocfs(oracle cluster file system)等。它不同单机文件系统(如fat32,ntfs,ext2,ext3,ext4等)
如果同一个存储被挂载到多个机器上,格式化成文件系统需要用集群式文件系统
nfs现在一般来说就是只做linux to linux间的文件共享
/etc/init.d/rpcbind start --在nfs共享时候负责通知客户端,服务器的nfs端口号的
/etc/init.d/nfs start
chkconfig rpcbind on
chkconfig nfs on
# showmount -e 10.0.0.2 --客户端查看服务端的共享,使用此命令
Export list for 10.0.0.2:
/yum *
# /etc/init.d/rpcbind stop --服务器关闭此服务
# showmount -e 10.0.0.2 --客户端就会报下面的错误
clnt_create: RPC: Port mapper failure - Unable to receive: errno 111 (Connection refused)
RPC remote produre call 远程程序调用,使用的端口为111
# /etc/init.d/rpcbind start
# showmount -e 10.0.0.2 --启动rpcbind后,客户端还是不能访问
clnt_create: RPC: Program not registered
# /etc/init.d/nfs restart --重启此服务后,就OK了
# showmount -e 10.0.0.2
Export list for 10.0.0.2:
/yum *
配置nfs
# vim /etc/exports
/test *(ro)
/test 10.0.0.0/24(ro)
/test 10.0.0.11(ro) 10.0.0.12(rw)
--更多写法,man exports去查看
# /etc/init.d/nfs restart
# showmount -e 10.0.0.2
# mount 10.0.0.2:/test /mnt --客户端要访问nfs,就是远程挂载过来
# iptables -F --需要把防火墙规则给清除;这样做是临时清除
# chkconfig iptables off
# setup --使用此命令图形配置,把firewall前的*去掉,确认保存
问题1
客户端挂载后,挂载的目录权限还是原来的权限吗?
不是,它的权限是nfs服务端的挂载目录的权限
问题2
客户端访问挂载的目录,它是以什么样的身份去访问,这个身份用户是客户端的还是服务端的?
nfs客户端默认是以nfsnobody的身份去访问,这个身份是服务端的,哪怕你客户端使用root用户,访问时还是用的nfsnobody的身份
问题3
我把nfs服务端的ro参数换成rw,客户端挂载后能写吗?
还是不能写,因为服务配置rw只表示服务允许写,但系统权限还是不允许
解决方法:
1,在nfs服务端chmod o+w /test,给一个写权限,客户端重新挂载,再写,也可以看到写的文件的owner和group为nfsnobody
2,改客户端访问的身份
# vim /etc/exports
/test *(rw,no_root_squash) --加一个no_root_squash表示让客户端以root的身份来访问服务端
# vim /etc/exports
/test *(rw,anonuid=501,anongid=501) --指定客户端以501这个uid和gid的身份来访问我
三. autofs
自动挂载 (这个与U盘的自动挂载没有关系)
U盘的自动挂载与haldaemon和messagebus和图形界面有关
比如对于nfs的远程挂载,下面命令经常要做,什么方法可以简化此操作
mount 10.0.0.2:/share/soft /share
1,/etc/fstab
2,/etc/rc.local
3,做别名
4.autofs
--上面四种方式,前两种不建议用,因为nfs的挂载有个问题,你做了开机自动挂载我的nfs共享,如果我关机了,而你没有去umount我的挂载,那么你的挂载目录会卡死(造成df -h等命令都用不了),这里建议用第四种
# vim /etc/auto.master
/misc /etc/auto.misc
# vim /etc/auto.misc
cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
--上面的意思表示/dev/cdrom(光驱)会以iso9660,ro,nosuid,nodev参数自动挂载到/misc/cd目录
--测试,用虚拟机来测试
# /etc/init.d/autofs restart
在虚拟机光驱里填上iso的路径
然后
ls /misc --为空
ls /misc/cd --看到就是iso的内容,表示自动挂载了
ls /misc --过五分钟左右,你不使用它,这个cd目录会消失
挂载samba的配置:
backup -fstype=cifs,username=smbuser1%asdf ://192.168.1.99/pub
挂载iso的配置:
iso -loop,fstype=iso9660,ro :/root/rhel-server-6.0-x86_64-boot.iso
挂载nfs的配置:
nfs -fstype=nfs 192.168.1.99:/test_nfs
实验:
把10.0.0.2:/share/soft /share/soft做成自动挂载,方便自己以后的操作
比如我做下面的命令,你们也可以直接复制这条命令就可以成功了
# tar xf /share/xxx/xxxxxx.tar.gz -C /usr/src/
步骤:
1,mkdir /share
2,vim /etc/auto.master
/share /etc/auto.share
3.vim /etc/auto.share --手动建立此文件
soft - 10.0.0.2:/share/soft --这里挂载参数没有特殊需求就不用指定了,默认就行
iso - 10.0.0.2:/share/iso
4,/etc/init.d/autofs restart --服务可以不用重启,但最好重启一下
总结:此服务的用处范围较小,还可以用于nis或ldap这种用户集中化管理。用户集中化就是可以类似windows域一样,把所有的服务器的用户和密码信息只存放于其中一台server上,其它服务器要登录使用用户名和密码需要去这台server上验证,也就是说其它服务器的/etc/passwd里并没有用户信息。
那么这样就会产生一个问题,其它服务器没有用户信息,你却可以使用server上的用户,但其它服务器上并没有用户家目录,所以你可以用autofs把server上的用户家目录自动挂载到其它服务器对应的家目录路径。
四.dhcp服务
dhcp = dynamic host configuration protocol 动态主机配置协议
可以动态分配IP,网关,DNS指向,主机名(需要DNS支持,也只能简单分配,不能做主机名绑定,所以实际生产环境也不建议这么做,以后可以使用象puppet这种软件来实现)
哪些方式可以指定客户端使用dhcp来获取IP?
方法一:
/etc/sysconfig/network-scripts/ifcfg-eth0这个配置里指定IP获取方式为dhcp,然后/etc/init.d/network restart重启网络就可以
方法二:
# dhclient eth0 --使用这个命令指定eth0网卡用dhcp获取IP(但这个命令只能用一次,用第二次需要kill掉上一次的进程)
dhcp原理
客户端在局域网广播发dhcp discover广播包
收到广播包的dhcp服务端回dhcp offer包
客户端收到offer包后,再发dhcp request广播包
服务端回dhcp ack包
实验,使用宿主机模拟dhcp服务器,虚拟机模拟客户端,但是不要用bridge网络;建议使用hostonly网络(防止同一个网络内多个dhcp冲突)
第一步:
虚拟机(dhcp客户端)指定网卡连接vmnet1网络(并可以通过vmware-netcfg命令,把vmware自带的dhcp关闭);
然后配置网卡通过dhcp获取IP;使用/etc/init.d/network restart或者 dhclient eth0命令来动态获取IP;
结果是获取不成功(因为vmware自带的dhcp关闭,自己要配置的dhcp服务器还没有开始配置)
第二步:
在宿主机(dhcp服务器端)先确认vmnet1网卡的地址和网段(我这里是192.168.62.1)
# yum install dhcp* -y
# vim /etc/dhcp/dhcpd.conf
然后配置下面一段,并启动服务
# rm -f /etc/dhcp/dhcpd.conf
# vim /etc/dhcp/dhcpd.conf
subnet 1.1.1.0 netmask 255.255.255.0 {
range 1.1.1.10 1.1.1.20;
option domain-name-servers 8.8.8.8;
option routers 1.1.1.1;
option broadcast-address 1.1.1.255;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
}
subnet 2.2.2.0 netmask 255.255.255.0 { --网段和掩码
range 2.2.2.100 2.2.2.200; --地址池
option domain-name-servers 114.114.114.114; --dns
option routers 2.2.2.1; --网关或路由
option broadcast-address 2.2.2.255; --广播地址
default-lease-time 600; --默认组约
max-lease-time 7200; --最大组约
log-facility local7; --日志级别
}
# /etc/init.d/dhcpd restart
第三步:
再次回到虚拟机(dhcp客户端)使用/etc/init.d/network restart或者 dhclient eth0命令来动态获取IP;
这次就可以成功了
第四步:
验证
1,客户端上ifconfig 查看IP是否获取的是服务器指定的范围
2,客户端cat /etc/resolv.conf和route -n查看是否成功获取DNS指向和网关
3,客户端cat /var/lib/dhclient/dhclient-eth0.leases或者cat /var/log/messages |grep dhcp查看相关信息
4,服务端cat /var/lib/dhcpd/dhcpd.leases查看分配情况
在配置里加上下面一段,指定客户端MAC地址为00:0c:29:f4:4c:de的会获取IP为192.168.62.77
host vmware { --这个名字随意,有主机名就写主机名
hardware ethernet 00:0c:29:df:da:d4;
fixed-address 2.2.2.188;
}
然后服务端/etc/init.d/dhcpd restart重启服务,客户端重新获取验证
标签: #oracledayofweek