linux基础20课09,时间有关服务 晓桂科技
sinye56 2024-10-03 00:35 8 浏览 0 评论
一.时间有关服务
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重启服务,客户端重新获取验证
相关推荐
- 程序员:JDK的安装与配置(完整版)_jdk的安装方法
-
对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...
- Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置
-
一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...
- 麒麟系统安装JAVA JDK教程_麒麟系统配置jdk
-
检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...
- 学习笔记-Linux JDK - 安装&配置
-
前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...
- Linux新手入门系列:Linux下jdk安装配置
-
本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...
- 测试员必备:Linux下安装JDK 1.8你必须知道的那些事
-
1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...
- Linux 下安装JDK17_linux 安装jdk1.8 yum
-
一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...
- 在Ubuntu系统中安装JDK 17并配置环境变量教程
-
在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...
- 如何在 Linux 上安装 Java_linux安装java的步骤
-
在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...
- Windows和Linux环境下的JDK安装教程
-
JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...
- linux安装jdk_linux安装jdk软连接
-
JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...
- linux安装jdk,全局配置,不同用户不同jdk
-
jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...
- 运维大神教你在linux下安装jdk8_linux安装jdk1.7
-
1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...
- window和linux安装JDK1.8_linux 安装jdk1.8.tar
-
Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...
- 最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?
-
默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)