加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网_ASP源码网 (https://www.1asp.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Systemd定时器:三种使用场景

发布时间:2018-12-04 19:17:48 所属栏目:建站 来源:Paul Brown
导读:副标题#e# 继续 systemd 教程,这些特殊的例子可以展示给你如何更好的利用 systemd 定时器单元。 在这个 systemd 系列教程中,我们已经在某种程度上讨论了 systemd 定时器单元。不过,在我们开始讨论 sockets 之前,我们先来看三个例子,这些例子展示了如何

在你完美的 Minetest 设置中,还有最后一点涟漪:你下班晚了,错过了服务器的开机时间,可当你开机的时候游戏时间还没结束,这该怎么办?Persistent= 指令(如上所述)在错过开始时间后仍然可以运行服务,但这个方案还是不行。如果你在早上十一点把服务器打开,它就会启动 Minetest,而这不是你想要的。你真正需要的是一个确保 systemd 只在晚上五到七点启动 Minetest 的方法:

  1. # minetest.timer
  2.  
  3. [Unit]
  4. Description= 在下午五到七点内的每分钟都运行 minetest.service
  5.  
  6. [Timer]
  7. OnCalendar= *-*-* 17..19:*:00
  8. Unit= minetest.service
  9.  
  10. [Install]
  11. WantedBy= basic.target

OnCalendar= *-*-* 17..19:*:00 这一行有两个有趣的地方:(1) 17..19 并不是一个时间点,而是一个时间段,在这个场景中是 17 到 19 点;以及,(2) 分钟字段中的 * 表示服务每分钟都要运行。因此,你会把它读做 “在下午五到七点间的每分钟,运行 minetest.service”

不过还有一个问题:一旦 minetest.service 启动并运行,你会希望 minetest.timer 不要再次尝试运行它。你可以在 minetest.service 中包含一条 Conflicts= 指令:

  1. # minetest.service
  2.  
  3. [Unit]
  4. Description= 运行 Minetest 服务器
  5. Conflicts= minetest.timer
  6.  
  7. [Service]
  8. Type= simple
  9. User= <your user name>
  10.  
  11. ExecStart= /usr/bin/minetest --server
  12. ExecStop= /bin/kill -2 $MAINPID
  13.  
  14. [Install]
  15. WantedBy= multi-user.targe

上面的 Conflicts= 指令会保证在 minstest.service 成功运行后,minetest.timer 就会立即停止。

(编辑:安卓应用网_ASP源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读