diff --git a/README.md b/README.md index 1bfc4dcc9c653d2cba57637534b0045b1e732dd4..46854ac7cad3235b41c631ba303d9accd165f3ae 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ rpm -ivh ~/rpmbuild/RPMS/xxxx/kyclassifier-1.1-0.xxxx.rpm 依赖安装: yum install python3-hawkey -pip3 install pycdlib Jinja2 MarkupSafe +pip3 install pycdlib Jinja2 MarkupSafe psutil #### 使用说明 diff --git a/main.py b/main.py index 7df2419693c16d384a5115451384ec7534e816eb..fca544ab2bc9025906b0290ebf101d39999b99a6 100644 --- a/main.py +++ b/main.py @@ -26,13 +26,13 @@ from src.utils import depparse from src.utils import util from src.utils.util import ISOUtils from src.utils.config import BaseConfig +from src.utils.programcheck import find_processes_with_cmdline_keyword from src.main.alglayer import AlgLayer from src.main.algclassify import AlgClassify from src.log.logger import logger, LOGGER from src.report.report_generator import ReportGenerator from src.rpmquery.querylayeriniso import QueryLayerInIso - class kyClassifier(object): @classmethod @@ -119,6 +119,9 @@ if __name__ == '__main__': if args.console_log: LOGGER.update_console_log(logger) + + #进程检查函数 + find_processes_with_cmdline_keyword('kyclassifier') logger.info("Start run kyclassifier...") if args.iso: diff --git a/src/utils/programcheck.py b/src/utils/programcheck.py new file mode 100644 index 0000000000000000000000000000000000000000..44e74d079976a55dfd20fae2181fb827c9fe1b97 --- /dev/null +++ b/src/utils/programcheck.py @@ -0,0 +1,17 @@ +import psutil +import sys +import os + +from src.log.logger import logger + +def find_processes_with_cmdline_keyword(keyword): + + for proc in psutil.process_iter(['pid', 'name', 'cmdline']): + try: + cmdline = proc.info['cmdline'] + if keyword in ' '.join(cmdline).lower() and proc.info['pid'] != os.getpid(): + #print(f"PID: {proc.info['pid']}, Name: {proc.info['name']}, Cmdline: {' '.join(cmdline)}") + logger.error("Another kyclassifier process is running, the pid = %s " %proc.info['pid']) + sys.exit(-1) + except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess) as e: + logger.error("Encountered an exception for PID {proc.info.get('pid', 'unknown')}: {e}") \ No newline at end of file