【问题标题】:Changing a Unix server date with a scheduled job使用计划作业更改 Unix 服务器日期
【发布时间】:2017-06-27 10:21:30
【问题描述】:

我正在寻找一种在 unix 服务器上安排一组命令的方法。 服务器时间采用 UTC。我基本上想在英国时间每周三下午 4 点自动执行以下步骤:

  • 将服务器日期更改为下一次英国午夜(以避免时区更改问题)
  • 重启tomcat服务器
  • 如果tomcat正在运行,运行一个jar
  • 将服务器日期更改为正确的当前 UTC 时间
  • 重启tomcat服务器
  • 如果 Tomcat 正在运行,我们就完成了

以下命令是我目前手动运行的:

date -s "Thu Feb 09 00:01:00 UTC 2017" (represents the next day at 1 minute past midnight)
service tomcat restart
sudo -u tomcat java -jar Test.jar -type "Major" -status "Active"
date -s "<the current UTC time>"
service tomcat restart

我知道我们可以使用 cron 来安排脚本的运行,但不确定如何执行此操作。任何帮助表示赞赏。

【问题讨论】:

    标签: date unix cron scheduled-tasks crontab


    【解决方案1】:

    创建一个名为 unix-server-date.sh 的文件并将其保存在 /opt 中。该脚本将包含以下内容:

    #!/bin/bash
    date -s "Thu Feb 09 00:01:00 UTC 2017" (represents the next day at 1 minute past midnight)
    service tomcat restart
    sudo -u tomcat java -jar Test.jar -type "Major" -status "Active"
    date -s "<the current UTC time>"
    service tomcat restart
    

    使脚本可执行:

    chmod +x /opt/unix-server-date.sh
    

    然后发出 crontab -e 来编辑 crontab 条目并添加如下条目:

    00 16 * * 3 /opt/unix-server-date.sh
    

    根据您的编辑器,添加 crontab 条目后,请保存文件,crontab 将自动安装。

    这就是基础!

    如果您从特定用户帐户运行这些命令,您应该将 cronjob 添加到该用户的 crontab。将 crontab -e 更改为 crontab -e -u 用户

    【讨论】:

    • 感谢 crontab 的帮助!在脚本上,有没有办法让它智能地知道午夜过后 1 分钟的第二天会是什么?我会将 cronjob 设置为每周的同一天,但它也需要适应夏令时的变化。
    • 为什么不使用 NTP 或 Chronyd 以便服务器自动调整时间?
    • 因为我们只想更改要执行 JAR 的日期,也就是我们需要将服务器时间向前移动的日期,然后再将其放回正确的 UTC 时间。 JAR 必须在午夜 1 分钟后执行,但我们只在工作时间运行 JAR,以便有人可以监控它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多