mirror of
				https://github.com/whyour/qinglong.git
				synced 2025-10-31 17:06:07 +08:00 
			
		
		
		
	增加停止指定命令接口
This commit is contained in:
		
							parent
							
								
									8db997abe8
								
							
						
					
					
						commit
						0af687f781
					
				|  | @ -161,7 +161,6 @@ export default (app: Router) => { | |||
|       }), | ||||
|     }), | ||||
|     async (req: Request, res: Response, next: NextFunction) => { | ||||
|       const logger: Logger = Container.get('logger'); | ||||
|       try { | ||||
|         const systemService = Container.get(SystemService); | ||||
|         const uniqPath = await getUniqPath(req.body.command); | ||||
|  | @ -188,4 +187,22 @@ export default (app: Router) => { | |||
|       } | ||||
|     }, | ||||
|   ); | ||||
| 
 | ||||
|   route.put( | ||||
|     '/command-stop', | ||||
|     celebrate({ | ||||
|       body: Joi.object({ | ||||
|         command: Joi.string().required(), | ||||
|       }), | ||||
|     }), | ||||
|     async (req: Request, res: Response, next: NextFunction) => { | ||||
|       try { | ||||
|         const systemService = Container.get(SystemService); | ||||
|         const result = await systemService.stop(req.body); | ||||
|         res.send(result); | ||||
|       } catch (e) { | ||||
|         return next(e); | ||||
|       } | ||||
|     }, | ||||
|   ); | ||||
| }; | ||||
|  |  | |||
|  | @ -496,10 +496,9 @@ export async function killTask(pid: number) { | |||
| } | ||||
| 
 | ||||
| export async function getPid(name: string) { | ||||
|   let taskCommand = `ps -ef | grep "${name}" | grep -v grep | awk '{print $1}'`; | ||||
|   const execAsync = promisify(exec); | ||||
|   let pid = (await execAsync(taskCommand)).stdout; | ||||
|   return Number(pid); | ||||
|   const taskCommand = `ps -eo pid,command | grep "${name}" | grep -v grep | awk '{print $1}' | head -1 | xargs echo -n`; | ||||
|   const pid = await promiseExec(taskCommand); | ||||
|   return pid ? Number(pid) : undefined; | ||||
| } | ||||
| 
 | ||||
| interface IVersion { | ||||
|  |  | |||
|  | @ -9,7 +9,12 @@ import ScheduleService, { TaskCallbacks } from './schedule'; | |||
| import { spawn } from 'child_process'; | ||||
| import SockService from './sock'; | ||||
| import got from 'got'; | ||||
| import { parseContentVersion, parseVersion } from '../config/util'; | ||||
| import { | ||||
|   getPid, | ||||
|   killTask, | ||||
|   parseContentVersion, | ||||
|   parseVersion, | ||||
| } from '../config/util'; | ||||
| import { TASK_COMMAND } from '../config/const'; | ||||
| 
 | ||||
| @Service() | ||||
|  | @ -178,4 +183,17 @@ export default class SystemService { | |||
|     } | ||||
|     this.scheduleService.runTask(`real_time=true ${command}`, callback); | ||||
|   } | ||||
| 
 | ||||
|   public async stop({ command }: { command: string }) { | ||||
|     if (!command.startsWith(TASK_COMMAND)) { | ||||
|       command = `${TASK_COMMAND} ${command}`; | ||||
|     } | ||||
|     const pid = await getPid(command); | ||||
|     if (pid) { | ||||
|       await killTask(pid); | ||||
|       return { code: 200 }; | ||||
|     } else { | ||||
|       return { code: 400, message: '任务未找到' }; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  |  | |||
|  | @ -42,6 +42,6 @@ echo -e "\npython3依赖安装成功...\n" | |||
| echo -e "4、启动bot程序...\n" | ||||
| make_dir $dir_log/bot | ||||
| cd $dir_data | ||||
| ps -ef | grep "python3 -m jbot" | grep -v grep | awk '{print $1}' | xargs kill -9 2>/dev/null | ||||
| ps -eo pid,command | grep "python3 -m jbot" | grep -v grep | awk '{print $1}' | xargs kill -9 2>/dev/null | ||||
| nohup python3 -m jbot >$dir_log/bot/nohup.log 2>&1 & | ||||
| echo -e "bot启动成功...\n" | ||||
|  |  | |||
|  | @ -38,7 +38,7 @@ pm2_log() { | |||
| } | ||||
| 
 | ||||
| check_nginx() { | ||||
|   local nginxPid=$(ps -ef | grep nginx | grep -v grep) | ||||
|   local nginxPid=$(ps -eo pid,command | grep nginx | grep -v grep) | ||||
|   echo -e "=====> 检测nginx服务\n$nginxPid" | ||||
|   if [[ $nginxPid ]]; then | ||||
|     echo -e "\n=====> nginx服务正常\n" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 whyour
						whyour