没有这方面的经验,请问该如何下手去写
![]() | 1 Gothack 2017-11-17 09:36:26 +08:00 via iPhone crontab |
![]() | 2 wataxiwax 2017-11-17 09:38:11 +08:00 可以看下 crontab 命令 |
![]() | 4 xiaoz 2017-11-17 09:44:31 +08:00 via Android win 任务计划 linux crontab |
![]() | 5 ceyes 2017-11-17 09:48:05 +08:00 真正的问题是什么呢,为什么需要“每天 12 点重启一下”? |
![]() | 7 calming 2017-11-17 09:50:53 +08:00 你要是 spring 的话直接上 Scheduled |
![]() | 8 cy97cool 2017-11-17 09:50:58 +08:00 via Android 定时任务即可。。。准备两个 exe,定时启动 a.exe a.exe 先调用 taskkill /f /im b.exe 强制结束 b.exe ,然后启动 b.exe b.exe 是执行任务的主体 |
![]() | 9 airyland 2017-11-17 09:53:15 +08:00 ![]() 楼主头像。。 |
![]() | 11 fuyufjh 2017-11-17 10:00:19 +08:00 应该在醒目位置写上“ windows 环境” |
![]() | 12 Aliencn 2017-11-17 10:01:02 +08:00 一个批处理循环检测进程不存在就启动。 再加一个计划任务指定时间杀进程。 |
![]() | 13 daemonghost 2017-11-17 10:26:00 +08:00 @BadCat 为什么要定时重启,而不是做成服务监控,然后再重启呢? |
![]() | 14 BadCat OP @daemonghost 不是一样吗 -.= |
![]() | nbsp; 15 snip 2017-11-17 10:43:43 +08:00 写个批处理,先结束进程,再启动。最后用计划任务定时执行 |
![]() | 16 BadCat OP start /max "" "d:\Debug\DVIComparison.exe" 这么写启动有问题吗,为什么启动不了,只有手动双击 bat 才能启动的了,定时任务启动不了 |
![]() | 17 noe132 2017-11-17 10:52:09 +08:00 via Android 定时任务用户非当前用户 |
![]() | 18 UnknownR 2017-11-17 11:42:58 +08:00 windows 的 task scheduler 就能解决你的问题,定时重启, trigger 里填时间,也可以定义多个 trigger |
![]() | 19 oott123 2017-11-17 11:50:08 +08:00 via Android 装个 AlwaysUp 完美解决 |
![]() | 20 fy 2017-11-17 11:55:47 +08:00 等等,7x24 小时运行是这样的吗…… ![]() |
![]() | 21 hakim 2017-11-17 11:56:26 +08:00 task scheduler 偶尔会出毛病,可能是我配置的有问题 然后我用 Java 写了个脚本。。定时调用 bat 文件,bat 会先关闭程序,再启动程序 |
![]() | 24 BadCat OP 我想写一个 windows server 来控制程序 重启,不知道能行吗 time.Interval 只能给间隔时间,好像不能控制在几点啊 |
25 jzj 2017-11-17 12:38:11 +08:00 写个服务端 service 用定时器不就 O 了 |
27 pkaq 2017-11-17 12:55:24 +08:00 找个员工 然后把他发到太平洋某个岛上 每天晚上十二点必须起来输入 4815162342 |
![]() | 28 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 |
![]() | 29 BadCat OP 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" 现在是想写个服务来实现这个功能,不知道怎么写 |
30 notreami 2017-11-17 13:18:20 +08:00 为啥要重启呢?为啥没有集群呢?为啥没有分布式定时任务呢? |
![]() | 31 cabing 2017-11-17 13:37:27 +08:00 为啥要重启呢? |
![]() | 32 BadCat OP ?????? 都是只看标题进来就问 为啥要重启?? |
![]() | 33 forcecharlie 2017-11-17 14:16:56 +08:00 大多数语言的网络框架都有定时器,当然也可以用系统 API 或者系统调用, 比如 Boost Asio 就有 steady_timer, async_wait 等到时间到了就执行,crontab 实际上是不断的 sleep 然后唤醒后检查任务队列里面的任务,执行对应的命令。如果是服务程序,使用了网络框架完全可以使用内置的定时器区执行任务的。 源码: https://github.com/systemd-cron/crontab |
35 CFO 2017-11-17 15:29:52 +08:00 via Android 这是 7x24 小时?重启不得花好几秒吗?那么这几秒哪去了? 续了? |
37 loveCoding 2017-11-17 15:54:37 +08:00 设计 cron 的人真是个人才... 太灵活好用了. |
![]() | 38 Theo14 2017-11-17 16:22:26 +08:00 考虑做成 windows 服务吧,在服务里管理,记得服务的属性里面可以设置。 如果了解 supervisord 的话,你看下这个 https://stackoverflow.com/questions/7629813/is-there-windows-analog-to-supervisord |
![]() | 39 BadCat OP @Theo14 有试着做了一下,但是发现调用不了 winform 程序,而且要给定时间去调用就有些复杂 ,timer 只能设置多少 ms 延迟。没写过服务 突然上手还有一些难的 |