-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcronConfig.py
53 lines (44 loc) · 1.71 KB
/
cronConfig.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
"""
author:zyr
function:运行程序时,自动添加定时任务
notice:None
"""
from crontab import CronTab
import subprocess
import yaml
import argparse
import os
# 读取yaml配置文件
def read_config(path):
with open(path, 'r', encoding='utf-8') as f:
config = yaml.load(f, Loader=yaml.FullLoader)
return config
if __name__ == '__main__':
# 读取命令行参数
parser = argparse.ArgumentParser(description='cron config')
parser.add_argument('--program_path', '-p', help='program_path 程序所在路径 必要参数')
parser.add_argument('--log_path', '-l', help='log_path,非必要参数,但是有默认值',
default="/home/zyr/test/UESTC-LogAnalysis/forensics.log")
program_path = parser.parse_args().program_path
log_path = parser.parse_args().log_path
# print(program_path)
# print(log_path)
# 读取配置文件
path = os.path.abspath(os.path.join(program_path, r'./config/cronConfig.yaml'))
config = read_config(path)
user = config['user']
cron_interval = config['cron_interval']
# print(config)
# print(type(config))
# 添加定时任务
with CronTab(user=user) as cron:
# 测试用
# job = cron.new(command=rf'echo "hello world,`date`" >> {program_path}cron.log')
job = cron.new(
command=rf'python3 {program_path}/updateDB.py -p {program_path} -l {log_path} >> '
rf'{program_path}/cron.log 2>&1 </dev/null &')
job.minute.every(cron_interval)
print("restarting cron service")
subprocess.call("sudo service cron restart", shell=True)
print('cron.write() was just executed')
# python cronConfig.py -p /home/zyr/test/UESTC-LogAnalysis