【发布时间】:2022-02-08 15:02:45
【问题描述】:
当我们中止在 windows slave 上运行的 Jenkins Job 构建之一,然后尝试重新触发时,新触发的构建失败并出现以下错误:
该进程无法访问该文件,因为它正被另一个进程使用。
同时删除工作区。
【问题讨论】:
当我们中止在 windows slave 上运行的 Jenkins Job 构建之一,然后尝试重新触发时,新触发的构建失败并出现以下错误:
该进程无法访问该文件,因为它正被另一个进程使用。
同时删除工作区。
【问题讨论】:
可能当构建作业被终止时,它产生的某些进程并未随之终止,并且该进程正在保持打开的文件。
该进程通常会自行完成运行,当它完成时,文件上的锁定将被释放。
如果进程没有自行消失(例如,如果它打开了一个窗口,例如当进程崩溃时您看到的弹出窗口 - 并且您将无法看到此类窗口在 Jenkins 服务会话中运行) 并且您可以访问从机,您可以登录它并使用诸如 SystemInternals 的 Process Explorer(可在 https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer 获得)之类的工具来查找并终止该进程。 ProcExp 是一个非常易于使用的工具,众所周知,非常适合此类情况。
如果您无权访问,您可能需要让系统管理员重新启动从属服务器 - 这很可能是矫枉过正,但如果您无权访问从属服务器,您需要寻求帮助的人可能不会有太多帮助是时候帮助调试了。
【讨论】:
这个错误可能是由于性能问题,在这种情况下我们只需要使用循环来避免这种情况,因为当前线程必须关闭才能被另一个进程访问。
您可以使用给定的方法来访问要与邮件一起附加的文件,如下所示:
using(Attachment attpath = new Attachment(filepath))
{
//your code to access the attached filepath
mail.Attachment(attpath);
}
【讨论】: