-- 检查文件名 functiontimer.checkTaskName(scfg, servercfg, ttaskname) local cmds = {} table.insert(cmds, "crontab -l") local dupname = false -- 第三个参数是回调函数, res中存储了执行 cmds 后, 服务器的输出 -- 使用 crontab -l 查看了当前已有的任务, 如果找到了任务名, 则说明任务名重复 inc.popen_server_cmds(scfg, cmds, function(res) for i, v inpairs(res) do if (string.find(v, ttaskname)) then dupname = true return end end end, true)
-- 检测记录, 筛选信息 functiontimer.regex(orisrc, servercfg) for i, v inpairs(orisrc) do -- 获取任务时间戳 local taskstamp; for v2 instring.gmatch(v, "%d+%s%d+%s%d+%s%d+") do taskstamp = v2 end
-- 获取任务名 local taskname; for v3 instring.gmatch(v, "echo.*"..timer.filenamemask..';') do v3 = string.sub(v3, 6, #v3 - #timer.filenamemask - 1) taskname = v3 end
-- 获取服务器名 local hostname; for v4 instring.gmatch(v, "CRONTAB_TASK.*;cd%s/data/server/") do v4 = string.sub(v4, 14, #v4 - 17) hostname = v4 end
-- 如果这条信息是任务信息, 格式化打印出来 if (taskstamp ~= niland taskname ~= niland hostname == timer.servername) then local timetab = {} for i instring.gmatch(taskstamp, "%d+") do table.insert(timetab, i); end
inc.p("服务器: "..hostname.." ======== 任务名: "..taskname.. " ======== 时间: ".. timetab[4].."月"..timetab[3].."日".. timetab[2].."时"..timetab[1].."分", 14) end end end
deleteTimerTask
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-- 删除定时器 functiontimer.deleteTimerTask(scfg, servercfg) inc.p("请输入任务名(暂不支持中文)", 10) local taskname = io.stdin:read() local dir = timer.getFullPath(servercfg) local cmds = {} table.insert(cmds, "cd "..dir) local ttaskname = taskname..timer.filenamemask -- 执行一条 sed 命令, 删除一个任务 table.insert(cmds, "sed -i "..'/'..ttaskname.."/d".. ' '..timer.fullName); inc.popen_server_cmds(scfg, cmds, nil, true) -- 同步一次 timer.syncTask(scfg, servercfg) end