如何使用 Cygwin 终止 Windows 服务?

如何使用 Cygwin 终止 Windows 服务?

我发现了很多问题/答案该文档如何杀死 Windows过程在 Cygwin 中,但是我问的是 如何关闭 Windows 10服务在 Cygwin 中

如果动词“kill”对于 Windows 服务来说似乎不合适,我指的是通过在任务管理器中突出显示它并按下该delete键所获得的效果。

在此处输入图片描述

(我不知道这是否有任何意义,但正如您从屏幕截图中看到的,这个特定的服务位于任务管理器的“后台进程”部分下,它位于“Program Files”内,并且它是一个独立的服务.exe。我看到的大多数其他服务都在“Windows 进程”部分的“System32”内,并分别通过命令参数运行svchost.exe。)

我可以通过在 cygwin 中运行此命令来找到服务的进程 ID wmic service get ProcessID, Name, State /format:csv | tr -d '\r' | grep -i -- 'service name'

DESKTOP,ServiceNameLoggerService,0,Stopped
DESKTOP,ServiceNameSvc,19724,Running

但如果我尝试杀死它,我会收到一条无用的消息:

$ /bin/kill -f -W 19724
kill: couldn't open pid 19724

可以杀死正常 Windows 进程的命令,但不能杀死这个命令。

在您的回答中,如果 Windows 命令终止服务是可以的,只要该命令在 Cygwin 终端中运行,并且不需要我开始具有管理员访问权限的终端*


*:我不想以管理员权限启动 Cygwin 的原因是,我在 VS Code 中运行 Cygwin 终端。根据我的研究,集成终端具有与 VS Code 相同的权限,我以普通用户身份启动它。我可以以管理员身份启动 VS Code,但这会产生不良的副作用。例如,无法在管理员模式下升级 VS Code

据官方消息称

集成的终端 shell 以 VS Code 的权限运行。如果您需要以提升的权限(管理员)或其他权限运行 shell 命令,请使用平台实用程序(例如runas.exe终端内的实用程序)。

我花了一个小时试图弄清楚如何runas.exe在 Cygwin 中工作,但没有成功。反正运气也不好。它似乎大多数时候都会随机告诉我我的用户名/密码无效。

此外,我经常创建和终止 Cygwin 终端,弹出窗口要求我确认是否要在管理员模式下运行,这会对我的工作效率产生负面影响。(也许有一种方法可以针对每个应用程序禁用此功能,在这种情况下,这将是一个没有实际意义的问题。)

答案1

不确定这在 Cygwin 中是否有效,但是. 从命令提示符或批处理文件中,是net stop <serviceName>. 例如,停止交付优化服务,带有文件名服务端,以下任一方法都可以:

net stop "delivery optimization"

net stop dosvc

笔记:

  • 该命令必须以管理员身份运行。
  • 它不区分大小写。
  • 其他命令可以开始暂停或者继续服务。
  • 使用引号将服务名称括起来并留有空格。

净停止服务

顺便提一句,杀害Windows 服务进程通常效率低下,因为许多服务都设置为在失败时重新启动。

相关内容