|
在你完美的 Minetest 设置中,还有最后一点涟漪:你下班晚了,错过了服务器的开机时间,可当你开机的时候游戏时间还没结束,这该怎么办?Persistent= 指令(如上所述)在错过开始时间后仍然可以运行服务,但这个方案还是不行。如果你在早上十一点把服务器打开,它就会启动 Minetest,而这不是你想要的。你真正需要的是一个确保 systemd 只在晚上五到七点启动 Minetest 的方法:
# minetest.timer-
[Unit]Description= 在下午五到七点内的每分钟都运行 minetest.service-
[Timer]OnCalendar= *-*-* 17..19:*:00Unit= minetest.service-
[Install]WantedBy= basic.target
OnCalendar= *-*-* 17..19:*:00 这一行有两个有趣的地方:(1) 17..19 并不是一个时间点,而是一个时间段,在这个场景中是 17 到 19 点;以及,(2) 分钟字段中的 * 表示服务每分钟都要运行。因此,你会把它读做 “在下午五到七点间的每分钟,运行 minetest.service”
不过还有一个问题:一旦 minetest.service 启动并运行,你会希望 minetest.timer 不要再次尝试运行它。你可以在 minetest.service 中包含一条 Conflicts= 指令:
# minetest.service-
[Unit]Description= 运行 Minetest 服务器Conflicts= minetest.timer-
[Service]Type= simpleUser= <your user name>-
ExecStart= /usr/bin/minetest --serverExecStop= /bin/kill -2 $MAINPID-
[Install]WantedBy= multi-user.targe
上面的 Conflicts= 指令会保证在 minstest.service 成功运行后,minetest.timer 就会立即停止。 (编辑:安卓应用网_ASP源码网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|