请教,程序要 7x24 小时的运行,要写一个定时启动的任务,每天 12 点重启一下

2017-11-17 09:32:26 +08:00
 BadCat

没有这方面的经验,请问该如何下手去写

7186 次点击
所在节点    程序员
39 条回复
hakim
2017-11-17 11:56:26 +08:00
task scheduler 偶尔会出毛病,可能是我配置的有问题
然后我用 Java 写了个脚本。。定时调用 bat 文件,bat 会先关闭程序,再启动程序
sicifus
2017-11-17 12:18:12 +08:00
@BadCat #16 任务计划程序里给了最高权限吗?
BadCat
2017-11-17 12:35:05 +08:00
@sicifus 改成本地用户就好了
BadCat
2017-11-17 12:36:49 +08:00
我想写一个 windows server 来控制程序 重启,不知道能行吗
time.Interval 只能给间隔时间,好像不能控制在几点啊
jzj
2017-11-17 12:38:11 +08:00
写个服务端 service 用定时器不就 O 了
BadCat
2017-11-17 12:38:17 +08:00
@fy 不是,是程序要 7x24 小时的运行,在后台做运算,但怕承受不了压力 崩溃掉,所以打算在凌晨重启一下
pkaq
2017-11-17 12:55:24 +08:00
找个员工 然后把他发到太平洋某个岛上 每天晚上十二点必须起来输入 4815162342
lsido
2017-11-17 13:00:57 +08:00
crontab 第一个脚本 每晚 12 点 kill 你的程序

crontab 第二个脚本

#!/bin/sh
Tag=`ps -ef|grep '程序名'|grep -v grep|wc -l|awk '{printf $1"\n"}'`
if [ $Tag = 0 ]
then
echo '未检测到程序,正在重启...'
启动命令
fi
BadCat
2017-11-17 13:16:27 +08:00
emmmm 批处理的已经写出来了,添加到任务计划里了
%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
taskkill /im DVIComparison.exe /f
@echo off
echo
ping localhost -n 10 > nul
echo
start /max "" "d:\Debug\DVIComparison.exe"

现在是想写个服务来实现这个功能,不知道怎么写
notreami
2017-11-17 13:18:20 +08:00
为啥要重启呢?为啥没有集群呢?为啥没有分布式定时任务呢?
cabing
2017-11-17 13:37:27 +08:00
为啥要重启呢?
BadCat
2017-11-17 13:38:34 +08:00
??????
都是只看标题进来就问 为啥要重启??
forcecharlie
2017-11-17 14:16:56 +08:00
大多数语言的网络框架都有定时器,当然也可以用系统 API 或者系统调用, 比如 Boost Asio 就有 steady_timer, async_wait 等到时间到了就执行,crontab 实际上是不断的 sleep 然后唤醒后检查任务队列里面的任务,执行对应的命令。如果是服务程序,使用了网络框架完全可以使用内置的定时器区执行任务的。

源码:
https://github.com/systemd-cron/crontab
860670496
2017-11-17 15:04:10 +08:00
@pkaq #27 哈哈哈哈而且一定要用有那种老式翻页计时器
CFO
2017-11-17 15:29:52 +08:00
这是 7x24 小时?重启不得花好几秒吗?那么这几秒哪去了?
续了?
lonelygo
2017-11-17 15:47:05 +08:00
@airyland
好巧,我们的关注点一样。
loveCoding
2017-11-17 15:54:37 +08:00
设计 cron 的人真是个人才... 太灵活好用了.
Theo14
2017-11-17 16:22:26 +08:00
考虑做成 windows 服务吧,在服务里管理,记得服务的属性里面可以设置。
如果了解 supervisord 的话,你看下这个 https://stackoverflow.com/questions/7629813/is-there-windows-analog-to-supervisord
BadCat
2017-11-17 16:28:34 +08:00
@Theo14 有试着做了一下,但是发现调用不了 winform 程序,而且要给定时间去调用就有些复杂 ,timer 只能设置多少 ms 延迟。没写过服务 突然上手还有一些难的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/407120

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX