linux几秒钟同步一次,Linux时间同步配置方法

由于是在做mongoDB的实验中再一次的遇到了mongos路由节点同步时由于ntp时间的问题导致同步非常的慢。故写了个时间同步的语句===>

while :; do rdate -s 192.168.109.129; sleep 2s; done > /dev/null 2>&1 &

rdate: couldn't connect to host 192.168.109.129: Connection refused

3. 同步时间

/usr/bin/rdate -s rdate.darkorb.net

1.查询是否安装ntp,若没有安装的话使用yum进行安装

rpm -q ntp

yum –y install ntp

2.服务器端配置

服务器端需要修改配置文件/etc/ntp.conf

vi /etc/ntp.conf

2.1以互联网的时间服务器为时间服务器的时钟

设置要求:以time.nist.gov 为时间服务器,在ntp.conf中增加或修改以下内容:

restrict default ignore # 关闭所有的 NTP 要求封包

restrict 192.168.1.0 mask 255.255.255.0 notrap nomodify

server time.nist.gov #设置时间服务器

server 127.127.1.1 #开启内部递归网络接口

fudge 127.127.1.1 stratum 10 refid NIST # LCL 不同步

driftfile /etc/ntp.drift

logfile /var/log/ntp.log

Broadcastdelay 0.008 #广播延迟时间#

2.2以内部ntp服务器为数据服务器时钟

设置要求:不对 Internet 提供服务,仅对内部子网提供服务,内部子网的客户端不能修改NTP服务器的时间参数。

在ntp.conf中增加或修改以下内容:

restrict default ignore # 关闭所有的 NTP 要求封包

restrict 127.0.0.1   # 开启内部递归网络接口 lo

restrict 192.168.0.0 mask 255.255.255.0 nomodify #在内部子网里面的客户端可以 进行网络校时,但不能修改NTP服务器的时间参数。

server 198.168.77.170 #198.123.30.132作为上级时间服务器参考

driftfile /var/lib/ntp/drift

broadcastdelay 0.008 #广播延迟时间#

3.启动服务

启动NTP服务

service ntpd start

如果想每次系统启动,NTP服务自动启动,请输入下面命令:

/sbin/chkconfig --add ntpd

/sbin/chkconfig --level 234 ntpd on //配置在开机时运行

打开iptables防火墙123端口

NTP服务的端口是123,使用的是udp协议,所以NTP服务器的防火墙必须对外开放udp 123这个端口。方法如下,使用以下规则:

/sbin/iptables -A INPUT -p UDP -i eth0 -s 192.168.0.0/24

> --dport 123 -j ACCEPT

查看ntp服务器工作情况

通常我们使用命令查看123端口和ntp系统进程判断ntp服务器是否工作正常。命令如下:

netstat -unl | grep 123 #查看123端口

ps -ef|grep ntp #查看ntp进程是否启动

4.监控ntp服务器

ntpq用来监视ntpd操作,使用标准的NTP模式6控制消息模式,并与NTP服务器通信。

ntpq -p查询网络中的NTP服务器,同时显示客户端和每个服务器的关系。

122812_0809_Linux1.png

"* ":响应的NTP服务器和最精确的服务器。

"+":响应这个查询请求的NTP服务器。

"blank(空格)":没有响应的NTP服务器。

"remote" :响应这个请求的NTP服务器的名称。

"refid ":NTP服务器使用的更高一级服务器的名称。

"st":正在响应请求的NTP服务器的级别。

"when":上一次成功请求之后到现在的秒数。

"poll":当前的请求的时钟间隔的秒数。

"offset":主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒(ms)。

5.客户端的配置

在Linux 上面进行网络校时非常简单,执行

ntpdate 192.168.77.170 #192.168.77.170是NTP服务器的IP

注意:Ntpd启动的时候通常需要一段时间大概5分钟进行时间同步,所以在ntpd刚刚启动的时候还不能正常提供时钟服务,报错"no server suitable for synchronization found"。启动时候需要等待5分钟。

如果想定时进行时间校准,可以使用crond服务来定时执行。

编辑 /etc/crontab 文件

vi /etc/crontab

加入下面一行:

00 7 * * * root /usr/sbin/ntpdate 192.168.77.170

>> /root/ntpdate.log 2>&1 #192.168.77.170是NTP服务器的IP地址

然后重启crond服务

service crond restart

这样,每天 7:00 Linux 系统就会自动的进行网络时间校准。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中,我们可以使用pthread_kill函数给线程发送信号。对于匿名线程,我们可以使用其中一个线程来发送信号。 以下是一个示例代码,该代码创建了两个匿名线程,并使用pthread_kill函数给它们发送同步信号: ```c #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <signal.h> void *thread_func(void *arg) { int tid = *(int*)arg; printf("Thread %d started\n", tid); pause(); // 等待信号 printf("Thread %d received signal\n", tid); pthread_exit(NULL); } int main() { pthread_t tid1, tid2; int arg1 = 1, arg2 = 2; if (pthread_create(&tid1, NULL, thread_func, &arg1) != 0) { perror("pthread_create"); exit(EXIT_FAILURE); } if (pthread_create(&tid2, NULL, thread_func, &arg2) != 0) { perror("pthread_create"); exit(EXIT_FAILURE); } sleep(1); // 等待线程启动 pthread_kill(tid1, SIGUSR1); pthread_kill(tid2, SIGUSR1); pthread_join(tid1, NULL); pthread_join(tid2, NULL); return 0; } ``` 在这个示例中,我们使用pthread_create函数创建了两个匿名线程,并分别将1和2作为参数传递给它们。然后我们等待1秒钟,让线程有足够的时间启动。 接下来,我们使用pthread_kill函数给这两个线程发送SIGUSR1信号,这是一个用户定义的信号,可以用于同步线程。 在每个线程的函数中,我们使用pause函数等待信号。当线程收到信号时,它将继续执行,并打印一条消息。 最后,我们使用pthread_join函数等待线程完成。 注意:在这个示例中,我们假设pthread_kill函数不会返回错误。在实际使用中,您需要检查pthread_kill的返回值以确保它成功发送了信号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值