mdserver-web/plugins/clean/tool_task.py

130 lines
3.3 KiB
Python
Raw Normal View History

2022-10-02 03:05:13 -04:00
# coding:utf-8
import sys
import io
import os
import time
import json
2024-11-23 16:48:35 -05:00
web_dir = os.getcwd() + "/web"
if os.path.exists(web_dir):
sys.path.append(web_dir)
os.chdir(web_dir)
import core.mw as mw
from utils.crontab import crontab as MwCrontab
2022-10-02 03:05:13 -04:00
app_debug = False
if mw.isAppleSystem():
app_debug = True
def getPluginName():
return 'clean'
def getPluginDir():
return mw.getPluginDir() + '/' + getPluginName()
def getServerDir():
return mw.getServerDir() + '/' + getPluginName()
def getTaskConf():
conf = getServerDir() + "/task_config.json"
return conf
def getConfigData():
2024-11-23 16:48:35 -05:00
conf = getTaskConf()
if os.path.exists(conf):
2022-10-02 03:05:13 -04:00
return json.loads(mw.readFile(getTaskConf()))
2024-05-07 13:13:34 -04:00
return {
2022-10-02 03:05:13 -04:00
"task_id": -1,
2024-05-07 12:52:51 -04:00
"period": "day-n",
2024-05-08 00:58:55 -04:00
"where1": "7",
2024-05-07 12:52:51 -04:00
"hour": "0",
"minute": "15",
2022-10-02 03:05:13 -04:00
}
def createBgTask():
removeBgTask()
2024-05-07 12:52:51 -04:00
createBgTaskByName(getPluginName())
2022-10-02 03:05:13 -04:00
2024-05-07 12:52:51 -04:00
def createBgTaskByName(name):
args = getConfigData()
2022-10-02 03:05:13 -04:00
_name = "[勿删]日志清理[" + name + "]"
res = mw.M("crontab").field("id, name").where("name=?", (_name,)).find()
if res:
return True
2024-05-07 13:13:34 -04:00
if "task_id" in args and args["task_id"] > 0:
2022-10-02 03:05:13 -04:00
res = mw.M("crontab").field("id, name").where(
2024-05-07 13:13:34 -04:00
"id=?", (args["task_id"],)).find()
if res and res["id"] == args["task_id"]:
2022-10-02 03:05:13 -04:00
print("计划任务已经存在!")
return True
2024-11-23 17:04:37 -05:00
mw_dir = mw.getPanelDir()
2022-10-02 03:05:13 -04:00
cmd = '''
2022-10-08 06:12:45 -04:00
mw_dir=%s
2022-10-02 03:05:13 -04:00
rname=%s
plugin_path=%s
script_path=%s
logs_file=$plugin_path/${rname}.log
2022-10-08 06:12:45 -04:00
''' % (mw_dir, name, getServerDir(), getPluginDir())
2022-10-02 03:05:13 -04:00
cmd += 'echo "★【`date +"%Y-%m-%d %H:%M:%S"`】 STSRT★" >> $logs_file' + "\n"
cmd += 'echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" >> $logs_file' + "\n"
cmd += 'echo "python3 $script_path/index.py clean >> $logs_file 2>&1"' + "\n"
2022-10-08 06:08:38 -04:00
cmd += 'cd $mw_dir && python3 $script_path/index.py clean >> $logs_file 2>&1' + "\n"
2022-10-02 03:05:13 -04:00
cmd += 'echo "【`date +"%Y-%m-%d %H:%M:%S"`】 END★" >> $logs_file' + "\n"
cmd += 'echo "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" >> $logs_file' + "\n"
params = {
'name': _name,
2024-05-07 12:52:51 -04:00
'type': args['period'],
2022-10-02 03:05:13 -04:00
'week': "",
2024-05-07 12:52:51 -04:00
'where1': args['where1'],
'hour': args['hour'],
'minute': args['minute'],
2022-10-02 03:05:13 -04:00
'save': "",
'backup_to': "",
'stype': "toShell",
'sname': '',
'sbody': cmd,
2024-11-23 17:05:18 -05:00
'url_address': '',
2022-10-02 03:05:13 -04:00
}
2024-11-23 16:48:35 -05:00
task_id = MwCrontab.instance().add(params)
2022-10-02 03:05:13 -04:00
if task_id > 0:
2024-05-07 13:13:34 -04:00
args["task_id"] = task_id
args["name"] = name
mw.writeFile(getTaskConf(), json.dumps(args))
2022-10-02 03:05:13 -04:00
def removeBgTask():
2024-05-07 13:13:34 -04:00
cfg = getConfigData()
if "task_id" in cfg and cfg["task_id"] > 0:
res = mw.M("crontab").field("id, name").where(
"id=?", (cfg["task_id"],)).find()
if res and res["id"] == cfg["task_id"]:
2024-11-23 16:48:35 -05:00
data = MwCrontab.instance().delete(cfg["task_id"])
2025-09-15 12:18:07 -04:00
if data["status"]:
2024-05-07 13:13:34 -04:00
cfg["task_id"] = -1
2024-06-26 06:06:22 -04:00
mw.writeFile(getTaskConf(), json.dumps(cfg))
2024-05-07 13:13:34 -04:00
return True
2022-10-02 03:05:13 -04:00
return False
if __name__ == "__main__":
if len(sys.argv) > 1:
action = sys.argv[1]
if action == "remove":
removeBgTask()
elif action == "add":
createBgTask()