【问题标题】:Finding PID responsible for "ERROR: A lock is not available for"查找负责“错误:锁不可用”的 PID
【发布时间】:2019-02-12 20:11:27
【问题描述】:

在 UNIX 系统上,如果持有文件锁,则错误消息包含一个 PID,例如:

ERROR: A lock is not available for XXX.XXXX.

ERROR: Lock held by process 4653302.

对于windows,没有提供有罪进程。有没有办法查出是谁锁了桌子?我无法登录机器,但是服务器确实启用了 XCMD。

FWIW,FILELOCKWAIT 选项在这里没有用(这是一个长时间运行的锁)。

编辑:我不是管理员,我无法下载第三方工具

【问题讨论】:

  • 您是否考虑过herehere 中的任何一个选项?
  • 感谢您的建议,但是我无法下载第三方工具并且我的帐户不是管理员帐户。不过,powershell 方法可能会奏效 - 会检查并回复您,干杯
  • 这是在服务器环境中(用户可能登录到同一服务器)?还是带有网络共享的桌面?这些是存储在网络文件共享和/或本地服务器磁盘上的 SAS 数据集?
  • 好点 - 这是在 SAS Windows Server (2012) 上,数据集在网络文件共享上。错误消息是通过企业指南浮出水面的。

标签: sas


【解决方案1】:

wmic 提供了几乎所有你想要的关于 Windows 中发生的事情。

win32_process 将告诉您(如果您的帐户具有正确的策略设置)有关谁在运行什么的所有信息。找到 SASers 并打电话给他们?

示例:Proc IMPORT 无法读取管道,因此请先将 wmic 输出保存到文件中。

%let wmic_cmd = wmic path win32_process where "description like '%nrstr(%%sas.exe%%)'";

filename whosas pipe 
   "%superq(wmic_cmd) get /format:csv | findstr /r /v ""^$"" > c:\temp\wmic_whosas.txt"
;

data _null_;
  infile whosas;
  input;
run;

proc import dbms=csv datafile="c:\temp\wmic_whosas.txt" replace out=whosas;
run;

应该为您提供有关每个 SAS 流程的 47 条信息。

如果您没有权限,IT 将不得不授予他们,或者经常与您打交道,他们最终会这样做:)

【讨论】:

  • 注意:wmic csv 格式输出连续的逗号 (,,) 并且 IMPORT 过程不会像 DLM 和 DSD 的 INPUT 一样选择它。因此,当 wmic 输出中出现,, 时,IMPORT 数据会进行列移位。
  • 确实找到了正在运行的sas服务的PID,谢谢!不幸的是,似乎不可能找出谁拥有该 pid :-( 至少没有管理员权限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多