我有多个相同的进程正在运行,所有进程都由不同的用户名运行。是否有可能杀死所述进程的所有实例,但仅限1个用户名?
例如,你可以看到: http://gyazo.com/85a627dfb9c775841047c4feaca3c8cf
说我只想杀死用户拥有的进程:TCAGame_Svc50 这可能吗?
由于
答案 0 :(得分:0)
如果您有权访问Cygwin(我认为这是一个Windows问题),那么pkill将处理此问题。
pgrep查看当前正在运行的进程并列出 将选择条件与stdout匹配的进程ID。一切 标准必须匹配。例如,
pgrep -u root sshd
将仅列出由root拥有的名为sshd AND的进程。
pkill会将指定的信号(默认为SIGTERM)发送到每个进程,而不是将它们列在stdout上。
另见here
答案 1 :(得分:0)
已编辑我无法在我的XP上获得以下代码(文档说它应该可以工作,也许是我的电脑),但在Windows 7中它可以正常工作
taskkill /im arma2oaserver.exe /fi "username eq TCAGame_Svc50" /f
原始回答更详细,但在XP上为我工作
@echo off
setlocal enableextensions disabledelayedexpansion
set "executable=arma2oaserver.exe"
set "user=TCAGame_Svc50"
for /f "tokens=2 delims=," %%a in ('
tasklist /fi "imagename eq %executable%" /v /fo:csv /nh 2^>nul
^| find /i "%user%"
') do taskkill /pid %%~a /f
任务列表将以csv格式(/fi
),无标题(/fo:csv
)和详细模式({{1)检索基于可执行文件名(/nh
)的进程列表})包含用户名。通过v
命令过滤进程列表,仅检索所需用户的进程列表。生成的列表通过find
命令处理,该命令将使用逗号作为分隔符,对于每个记录,将检索第二个字段(processID)。 for
将使用检索到的pid终止进程。