林城愚人 發表於 2022-9-13 10:13:00

linux 调整服务器时间 ntp

<p>新建sh脚本文件</p>
<p>vim checkTime.sh</p>
<p>进入.sh文件目录下,执行sh命令</p>
<p>#授权</p>
<p>chmod +x&nbsp;checkTime.sh</p>
<p>&nbsp;#检查脚本是否有问题</p>
<p>sh -x&nbsp;checkTime.sh</p>
<h1 class="postTitle">&nbsp;执行命令是 ./checkTime.sh 就是 ./ 加上你想执行的shell脚本</h1>
<h3>&nbsp;</h3>
<p>#!/bin/bash<br># NTP网络时间校正脚本<br>#NTP服务器列表<br>ntpServer=(<br>#洲际空间服务器<br>=asia.pool.ntp.org<br>#清华大学<br>=s1e.time.edu.cn<br>#腾讯云NTP时间服务器<br>=ntp1.tencent.com<br>#腾讯云NTP时间服务器<br>=ntp.tencent.com<br>#腾讯云NTP时间服务器<br>=ntp2.tencent.com<br>#Internet 空间服务器<br>=2.pool.ntp.org<br>#Internet 空间服务器<br>=0.pool.ntp.org<br>#国家服务器-中国<br>=cn.pool.ntp.org<br>#中国<br>=cn.ntp.org.cn<br>#苹果<br>=time.asia.apple.com<br>#优质<br>=time.nist.gov<br>#优质<br>=ntp.nict.jp<br>#东北大学<br>=ntp.neu.edu.cn<br>=http://www.bt.cn/api/index/get_time<br>)<br># 时间同步服务器<br>time_server="s1e.time.edu.cn"<br># 时区设置<br>timezone="Asia/Shanghai"<br># 检查ntp服务是否安装<br>if ! rpm -qa | grep ntp &gt; /dev/null; then<br>    if command -v yum &gt; /dev/null; then<br>      yum install ntp -y<br>    elif command -v apt-get &gt; /dev/null; then<br>      apt-get install -y ntp<br>    else<br>      echo "找不到安装包,需手动安装ntp"<br>      exit 1<br>    fi<br>fi</p>
<p>#校验<br>serverNum=${#ntpServer[@]}<br>NUM=0<br>for (( i=0; i&lt;$serverNum; i++ )); do<br>    echo -e "\e}同步时间...]\e} &gt;&gt; /dev/null 2&gt;&amp;1<br>    status=$?<br>    if [ "${ntpServer[$NUM]}" = "http://www.bt.cn/api/index/get_time" ]; then<br>      getBtTime=$(curl -sS --connect-timeout 3 -m 60 ${ntpServer[$NUM]})<br>      if [ "$getBtTime" ]; then<br>            date -s "$(date -d @$getBtTime +"%Y-%m-%d %H:%M:%S")"<br>            echo -e "\e}时间同步成功!]\e}时间同步失败!]\e; then<br>            time_server=${ntpServer[$NUM]}<br>            echo -e "\e}时间同步成功!]\e}时间同步失败!]\e[0m"<br>            NUM=$((NUM+1))<br>      fi<br>    fi<br>    sleep 2<br>done</p>
<p># 修改ntp配置文件<br>sed -i 's/^#\(ntp\)/\1/' /etc/ntp.conf<br>sed -i '/^server/d' /etc/ntp.conf<br>echo "server $time_server iburst" &gt;&gt; /etc/ntp.conf<br># 重启ntp服务 <br>if command -v systemctl &amp;&gt; /dev/null; then<br>    systemctl restart ntpd.service || service ntp restart<br>else<br>    service ntp restart<br>fi<br># 设置系统时区<br>timedatectl set-timezone $timezone<br>echo -e "\e\e\e\e\e\e[0m"</p>
<h3>&nbsp;</h3>
<h3><span style="color: rgba(255, 0, 0, 1)">定时执行脚本</span></h3>
<h3>设置crontab定时任务:使用`crontab -e`命令编辑当前用户的crontab文件。</h3>
<p>&nbsp;添加定时任务配置:在crontab文件中,每行表示一个定时任务。以每天定时运行为例,你可以添加类似以下的配置:</p>
<p>```shell<br>5 10 * * *&nbsp;/gds/checkTime.sh</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>vim start_cron.sh</p>
<p>&nbsp;</p>
<p>#!/bin/bash<br># start_cron.sh</p>
<p># 启动计划任务<br># 判断crond服务是否已经启动<br>if ps -ef | grep -v grep | grep crond &gt;/dev/null; then<br>echo "crond已经启动"<br>sudo systemctl restart crond<br>else<br>echo "crond未启动"<br>sudo systemctl restart start<br>fi</p>
<p># 添加到开机启动项<br>echo "添加到开机启动项"<br>chkconfig crond on<br>sleep 2<br>echo "验证是否已添加到启动项"<br>systemctl is-enabled crond</p>
<p>&nbsp;</p>
<p>#授权</p>
<p>chmod +x start_cron.sh</p>
<p>&nbsp;#检查脚本是否有问题</p>
<p>sh -x start_cron.sh</p>
<h1 class="postTitle">&nbsp;执行命令是 ./start_cron.sh 就是 ./ 加上你想执行的shell脚本</h1>
<p>常用的命令:</p>
<p>crontab -l &nbsp; 查看所有正在运行的所有crontab命令</p>
<p>crontab -r : 删除目前的时程表</p>
<p>crontab file [-u user]-用指定的文件替代目前的crontab</p>
<p>ps –ef|grep crontab 查看crontab是否已经启动</p>
<h3>&nbsp;</h3>
<p>crond服务</p>
<p>/sbin/service crond start # 启动服务<br>/sbin/service crond stop # 关闭服务<br>/sbin/service crond restart # 重启服务<br>/sbin/service crond reload # 重新载入配置</p>
<p>&nbsp;</p>
<p>2.crontab服务启动与关闭。<br>/etc/init.d/crond stop         --关闭服务<br>/etc/init.d/crond start          --启动服务<br>/etc/init.d/crond restart      --重启服务<br>/etc/init.d/crond reload         --重新载入配置</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>`/etc/init.d`和`/sbin/service`都是用于启动和管理系统服务的工具。它们的差异在于操作系统和发行版的不同。</p>
<p>`/etc/init.d`是传统的系统服务启动脚本目录,在许多Linux发行版中都存在。你可以在该目录下找到各个服务的启动脚本,可以使用直接调用脚本的方式来启动、停止、重启或查看服务状态。</p>
<p>例如,使用`/etc/init.d/crond start`命令可以启动`crond`服务,其中`/etc/init.d/crond`是`crond`服务的启动脚本路径。</p>
<p>`/sbin/service`是一个更高级的管理服务的工具,它提供了一个更简洁的命令接口,使服务的管理更加方便。该工具实际上是一个脚本,它会查找并调用`/etc/init.d`目录下对应的服务启动脚本。</p>
<p>因此,使用`/sbin/service crond start`命令与直接调用`/etc/init.d/crond start`命令的效果是一样的,都是用于启动`crond`服务。</p>
<p>需要注意的是,尽管`/sbin/service`是一个更高级的工具,但并不是所有发行版都提供了这个工具,所以在一些发行版中可能无法使用。</p>
<p>在某些Linux发行版中,并不是所有的服务启动脚本都放在`/etc/init.d`目录下。这取决于不同的发行版和其使用的初始化系统。</p>
<p>在一些现代的Linux发行版中,如CentOS 7和Ubuntu 16.04及以上版本,已经采用了Systemd作为默认的初始化系统。Systemd是一个新型的初始化系统,提供了更多的功能和灵活性。</p>
<p>在Systemd中,服务的启动脚本通常位于`/usr/lib/systemd/system`或`/etc/systemd/system`目录中,而不是`/etc/init.d`目录。具体路径可能因发行版而异。</p>
<p>例如,对于CentOS 7来说,`crond`服务的启动脚本通常位于`/usr/lib/systemd/system/crond.service`路径下。</p>
<p>你可以执行以下命令来查找`crond`服务的启动脚本位置:</p>
<p>```shell<br>systemctl status crond<br>```</p>
<p>在输出结果中可以找到`Loaded`行,它会告诉你服务的定义文件路径。</p>
<p>需要注意的是,不同的发行版可能对服务的管理方式有所不同,具体路径和命令可能会有所差异。如果你使用的是其他发行版或有特殊的定制配置,可能需要查阅相关文档或咨询发行版提供商获取更准确的信息。</p>
<p>&nbsp;</p>
<p>在Systemd管理的Linux发行版中,可以使用`systemctl`命令来管理和控制系统服务。若`crond.service`文件位于`/usr/lib/systemd/system/crond.service`路径下,则可以使用以下命令重启`crond`服务:</p>
<p>```shell<br>sudo systemctl restart crond<br>```</p>
<p>执行该命令需要具有管理员权限,因此使用`sudo`进行提权操作。</p>
<p>&nbsp;</p>
<p><br><br>查看crontab服务状态:</p>
<p>systemctl status crond<br><br>手动启动crontab服务:</p>
<p>systemctl start crond<br><br>查看crontab服务是否已设置为开机启动,执行命令:</p>
<p>ntsysv<br><br>加入开机自动启动:</p>
<p>chkconfig –level 35 crond on</p>
<p>或</p>
<p>chkconfig crond on</p>
<p>&nbsp;</p>
<p>你可以使用以下命令来检查一个服务是否已添加到开机启动:</p>
<p>```shell<br>systemctl is-enabled &lt;service-name&gt;<br>```</p>
<p>将`&lt;service-name&gt;`替换为你要检查的服务的名称。例如,如果你想检查`crond`服务是否已添加到开机启动,可以运行以下命令:</p>
<p>```shell<br>systemctl is-enabled crond<br>```</p>
<p>如果服务已添加到开机启动,命令的输出将为`enabled`;如果服务未添加到开机启动,输出将为`disabled`。</p>
<p>希望这对你有帮助!如果还有其他问题,请随时提问。</p>
<p>&nbsp;</p>
<h3 id="linux">linux查看时间命令:</h3>
<pre class="codehilite"><code>date</code></pre>
<p>date "+%Y-%m-%d %H:%M:%S"</p>
<p>date命令可以用来显示或设定系统的日期与时间。</p>
<p>1、获取命令帮助</p>
<pre class="codehilite"><code>date --help</code></pre>
<p>&nbsp;</p>
<p>2、查看命令版本</p>
<pre class="codehilite"><code>date --version</code></pre>
<p>&nbsp;</p>
<p>3、查看系统日期及时间</p>
<pre class="codehilite"><code>date</code></pre>
<p>&nbsp;</p>
<p>4、以YYYY-MM-DD显示日期</p>
<pre class="codehilite"><code>date +%F</code></pre>
<p>&nbsp;</p>
<p>5、以MM/DD/YY显示日期</p>
<pre class="codehilite"><code>date +%D</code></pre>
<p>&nbsp;</p>
<p>6、以MM/DD/YYYY显示日期</p>
<pre class="codehilite"><code>date +%x</code></pre>
<p>&nbsp;</p>
<p>7、获取系统年份、月份、日子</p>
<pre class="codehilite"><code>date +%Y</code></pre>
<p>&nbsp;</p>
<pre class="codehilite"><code>date +%m</code></pre>
<p>&nbsp;</p>
<pre class="codehilite"><code>date +%d</code></pre>
<p>&nbsp;</p>
<p>8、获取系统星期值</p>
<pre class="codehilite"><code>date +%a</code></pre>
<p>&nbsp;</p>
<pre class="codehilite"><code>date +%A</code></pre>
<p>&nbsp;</p>
<pre class="codehilite"><code>date +%u</code></pre>
<p>&nbsp;</p>
<pre class="codehilite"><code>date +%w</code></pre>
<p>&nbsp;</p>
<p>9、获取系统时区</p>
<pre class="codehilite"><code>date +%z</code></pre>
<p>&nbsp;</p>
<pre class="codehilite"><code>date +%Z</code></pre>
<p>&nbsp;</p>
<p>10、查询当前日期是一年中的第几周</p>
<pre class="codehilite"><code>date +%W</code></pre>
<p>&nbsp;</p>
<pre class="codehilite"><code>date +%U</code></pre>
<p>&nbsp;</p>
<p>11、获取系统时间</p>
<pre class="codehilite"><code>date +%T</code></pre>
<p>&nbsp;</p>
<pre class="codehilite"><code>date +%X</code></pre>
<p>&nbsp;</p>
<p>12、显示十二小时制时间</p>
<pre class="codehilite"><code>date +%r</code></pre>
<p>&nbsp;</p>
<p>13、显示24小时制时间</p>
<pre class="codehilite"><code>date +%R</code></pre>
<p>&nbsp;</p>
<p>14、按照指定样式显示时间</p>
<pre class="codehilite"><code>date +%H-%M.%S</code></pre>
<p>&nbsp;</p>
<pre class="codehilite"><code>date +%H.%M.%S</code></pre>
<p>&nbsp;</p>
<p>15、从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数</p>
<pre class="codehilite"><code>date +%s</code></pre>
<p>&nbsp;</p>
<p>16、设置系统时间</p>
<pre class="codehilite"><code>date -s "12:00:00"</code></pre>
<p>&nbsp;</p>
<p>17、设置时间及日期</p>
<pre class="codehilite">date -s "2024-01-04 09:44:00"</pre>
<p>&nbsp;</p>
<p>18、日期和时间分行显示</p>
<pre class="codehilite"><code>date +%F%n%T</code></pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>强制设置当前时间</p>
<p>date -s "2022-12-23 11:11:11"</p>
<p>同步时间</p>
<p>以后不会不一样</p>
<p>Linux服务器时间校准<br>解决方案:<br>1、如果是windows服务器,直接去控制面板,时间管理进行更新即可</p>
<p>2、如果是Linux服务器,则需要执行ssh命令,切换为管理员root账户在进行操作</p>
<p>Linux中执行:su<br>然后输入密码即可<br>根据教程安装ntp,然后连阿里云时间服务器校对即可,命令如下</p>
<p>yum -y install ntp<br>ntpdate -u 0.pool.ntp.org</p>
<p>&nbsp;</p>
<p>Linux中有个ntp包可以自动校准时间,并且非常好用。<br><br>Debian系统安装NTP校时包:<br>1&nbsp;&nbsp; &nbsp;apt-get install ntpdate<br><br>CentOS系统安装NTP校时包:<br>1&nbsp;&nbsp; &nbsp;yum install ntp<br><br>校时命令:<br>1&nbsp;&nbsp; &nbsp;ntpdate cn.pool.ntp.org<br><br>如果想每隔一定时间自动校时,只需将上面的命令加入至Cron就行了:<br>1&nbsp;&nbsp; &nbsp;00 12 * * * /sbin/ntpdate cn.pool.ntp.org<br><br></p>
<p>* cn.pool.ntp.org是ntp网络授时组织的中国授时源</p>
<p>&nbsp;</p>
<p>方法二<br><br>快速校对linux服务器时间至北京时间<br><br>服务器采用ntp更新时间,经常牵扯到UTC是否开启的问题,开启了时间就会快8个小时<br>前段时间朋友给我了下面的命令,一条命令解决之前的所有问题。<br><br>&nbsp;&nbsp;&nbsp; rdate -t 60 -s stdtime.gov.hk<br><br>使用rdate将stdtime.gov.hk服务器的时间抓取回来,然后写入硬件<br><br>&nbsp;&nbsp;&nbsp; hwclock -w<br><br>下面是rdate的命令使用方法介绍<br><br>&nbsp;&nbsp;&nbsp; 功能说明:显示其他主机的日期与时间。<br>&nbsp;&nbsp;&nbsp; 语  法:rdate [-ps][主机名称或IP地址...]<br>&nbsp;&nbsp;&nbsp; 补充说明:执行rdate指令,向其他主机询问系统时间并显示出来。<br>&nbsp;&nbsp;&nbsp; 参  数:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -p  显示远端主机的日期与时间。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -s  把从远端主机收到的日期和时间,回存到本地主机的系统时间。</p>
<p>&nbsp;</p>
<p>一、查看和修改Linux的时区</p>
<p>1. 查看当前时区</p>
<p>命令 : “date -R”</p>
<p>2. 修改设置Linux服务器时区</p>
<p>方法 A</p>
<p>命令 : “tzselect”</p>
<p>方法 B 仅限于RedHat Linux 和 CentOS</p>
<p>命令 : “timeconfig”</p>
<p>方法 C 适用于Debian</p>
<p>命令 : “dpkg-reconfigure tzdata”</p>
<p>3. 复制相应的时区文件,替换系统时区文件;或者创建链接文件</p>
<p>cp /usr/share/zoneinfo/主 时 区 / 主时区/主时区/次时区 /etc/localtime</p>
<p>例如:在设置中国时区使用亚洲/上海(+8)</p>
<p>cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime</p>
<p>二、查看和修改Linux的时间</p>
<p>1. 查看时间和日期</p>
<p>命令 : “date”</p>
<p>2.设置时间和日期</p>
<p>例如:将系统日期设定成2009年11月3日的命令</p>
<p>命令 : “date -s 11/03/2009”</p>
<p>将系统时间设定成下午5点55分55秒的命令</p>
<p>命令 : “date -s 17:55:55”</p>
<p>3. 将当前时间和日期写入BIOS,避免重启后失效</p>
<p>命令 : “hwclock -w”</p>
<p>注:</p>
<p>date</p>
<p>不加参数可以直接看到当前日期时间</p>
<p>cal</p>
<p>不加参数可以直接看到本月月历<br><br></p>
<p>&nbsp;</p>
<h3>一、在Centos8安装ntp出现问题</h3>
<p>centos 8 执行&nbsp;ntpdate&nbsp;会出现以下错误</p>
<pre data-index="0"><code class="hljs language-rust">No <span class="hljs-keyword">match <span class="hljs-keyword">for <span class="hljs-title class_">argument: ntpdate Error: Unable to find a <span class="hljs-keyword">match: ntpdate</span></span></span></span></code></pre>
<blockquote>
<p>原因:在CentOS8.0中默认不再支持ntp软件包,时间同步将由chrony来实现</p>
</blockquote>
<h3>二、解决方法</h3>
<p>1. 通过wlnmp方式</p>
<p>添加wlnmp的yum源</p>
<pre data-index="1"><code class="hljs language-cobol"># rpm -ivh http:<span class="hljs-operator">/<span class="hljs-operator">/mirrors.wlnmp.com<span class="hljs-operator">/centos<span class="hljs-operator">/wlnmp-release-centos.noarch.rpm<br><br>如果报网络不通<br></span></span></span></span></code></pre>
<p>修改一下 vim /etc/resolv<span class="hljs-preprocessor">.conf</span></p>
<p>options timeout:2 attempts:3 rotate single-request-reopen<br>; generated by /usr/sbin/dhclient-script<br>nameserver xxx<br>nameserver xxx</p>
<p>下面这两条是重点<br>nameserver 8.8.8.8<br>nameserver 114.114.114.114</p>
<pre data-index="1"><code class="hljs language-cobol"><span class="hljs-operator"><span class="hljs-operator"><span class="hljs-operator"><span class="hljs-operator">&nbsp;</span></span></span></span></code></pre>
<p>安装ntp服务</p>
<pre data-index="2"><code class="hljs language-csharp"><span class="hljs-meta"># yum -y install wntp</span></code></pre>
<p>时间同步</p>
<pre data-index="3"><code class="hljs language-csharp"><span class="hljs-meta"># ntpdate ntp1.aliyun.com<br>或<br>ntpdate 172.25.54.192<br></span></code></pre>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/wjsqqj/p/16688286.html
頁: [1]
查看完整版本: linux 调整服务器时间 ntp