/// <summary> /// 检查作业和进程是否匹配 /// </summary> /// <returns><c>true</c>, if job and process match was checked, <c>false</c> otherwise.</returns> /// <param name="osProcess">Os process.</param> /// <param name="jobName">Job name.</param> /// <param name="jobId">Job identifier.</param> /// <param name="method">Method.</param> public static bool CheckJobAndProcessMatch(Process osProcess, string jobName, string jobId, string method) { SwiftProcessCommandLine commandLine = null; try { commandLine = SwiftProcessCommandLine.Get(osProcess, EnumExecutableFileType.DirectExe | EnumExecutableFileType.DotNet); } catch (Exception ex) { LogWriter.Write(string.Format("获取并格式化进程命令行异常:{0}", osProcess.Id), ex, LogLevel.Info); } if (commandLine == null) { return(false); } if (!commandLine.Paras.TryGetValue("-jn", out string cJobName)) { return(false); } if (!commandLine.Paras.TryGetValue("-jr", out string cJobRecordId)) { return(false); } if (method == "SplitJob" && !commandLine.Paras.ContainsKey("-d")) { return(false); } if (method == "CollectTaskResult" && !commandLine.Paras.ContainsKey("-m")) { return(false); } if (jobName == cJobName && jobId == cJobRecordId) { return(true); } return(false); }
/// <summary> /// 检查任务和进程是否匹配 /// </summary> /// <returns><c>true</c>, if task and process match was checked, <c>false</c> otherwise.</returns> /// <param name="osProcess">Process.</param> /// <param name="jobName">Job name.</param> /// <param name="jobId">Job identifier.</param> /// <param name="taskId">Task identifier.</param> public static bool CheckTaskAndProcessMatch(Process osProcess, string jobName, string jobId, int taskId) { SwiftProcessCommandLine commandLine = null; try { commandLine = SwiftProcessCommandLine.Get(osProcess, EnumExecutableFileType.DirectExe | EnumExecutableFileType.DotNet); } catch (Exception ex) { LogWriter.Write(string.Format("获取并格式化进程命令行异常:{0}", osProcess.Id), ex, LogLevel.Info); } if (commandLine == null) { return(false); } if (!commandLine.Paras.TryGetValue("-jn", out string cJobName)) { return(false); } if (!commandLine.Paras.TryGetValue("-jr", out string cJobRecordId)) { return(false); } if (!commandLine.Paras.TryGetValue("-t", out string cTaskId)) { return(false); } if (jobName == cJobName && jobId == cJobRecordId && taskId == int.Parse(cTaskId)) { return(true); } return(false); }
/// <summary> /// 检查进程和任务是否匹配 /// </summary> /// <returns>The task and process match.</returns> /// <param name="task">Task.</param> /// <param name="process">Process.</param> private static bool CheckTaskAndProcessMatch(JobTask task, Process process, out SwiftProcessCommandLine commandLine) { commandLine = null; if (task == null || process == null) { return(false); } var job = task.Job; try { if (job.ExeType == "exe") { LogWriter.Write("将按照DirectExe格式解析进程命令行", LogLevel.Debug); commandLine = SwiftProcessCommandLine.Get(process, EnumExecutableFileType.DirectExe); } else if (job.ExeType == "dotnet") { LogWriter.Write("将按照DotNet格式解析进程命令行", LogLevel.Debug); commandLine = SwiftProcessCommandLine.Get(process, EnumExecutableFileType.DotNet); } else { throw new NotSupportedException("not supported executable file type: " + job.ExeType); } if (commandLine == null) { return(false); } LogWriter.Write("已经成功解析进程命令行:" + JsonConvert.SerializeObject(commandLine), LogLevel.Trace); if (!commandLine.Paras.TryGetValue("-jn", out string jobName)) { jobName = string.Empty; } if (!commandLine.Paras.TryGetValue("-jr", out string jobRecordId)) { jobRecordId = string.Empty; } if (!commandLine.Paras.TryGetValue("-t", out string taskId)) { taskId = string.Empty; } if (jobName == job.Name && jobRecordId == job.Id && task.Id.ToString() == taskId) { LogWriter.Write("进程命令和任务匹配", LogLevel.Debug); return(true); } LogWriter.Write("进程命令和任务不匹配", LogLevel.Debug); } catch (Exception ex) { LogWriter.Write("analysis process commndline go exception.", ex, LogLevel.Info); } return(false); }