如何使用shutdown -m远程关机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用shutdown -m远程关机相关的知识,希望对你有一定的参考价值。

我用别人电脑关自己的电脑怎么关啊..?
用shutdown -m这个关机>>?举个列子

在WindowsXP中实现远程关机

在Windows XP中,新增了一条命令行工具“shutdown”,其作用是“关闭或重新启动本地或远程计算机”。利用它,我们不但可以注销用户,关闭或重新启动计算机,还可以实现定时关机、远程关机。

该命令的语法格式如下:

shutdown [-i |-l|-s |-r |-a] [-f] [-m [\\ComputerName]] [-t xx] [-c "message"] [-d[u][p]:xx:yy]

其中,各参数的含义为:

-i 显示图形界面的对话框。
-l 注销当前用户,这是默认设置。
-m ComputerName优先。
-s 关闭计算机。
-r 关闭之后重新启动。
-a 中止关闭。除了-l 和ComputerName 外,系统将忽略其它参数。在超时期间,您只可以使用-a。
-f 强制运行要关闭的应用程序。
-m [\\ComputerName] 指定要关闭的计算机。
-t xx 将用于系统关闭的定时器设置为 xx 秒。默认值是20秒。
-c "message" 指定将在“系统关闭”窗口中的“消息”区域显示的消息。最多可以使用127 个字符。引号中必须包含消息。
-d [u][p]:xx:yy 列出系统关闭的原因代码。

首先,我们来看一下该命令的一些基本用法:

1、注销当前用户
shutdown - l
该命令只能注销本机用户,对远程计算机不适用。

2、关闭本地计算机
shutdown - s

3、重启本地计算机
shutdown - r

4、定时关机
shutdown - s -t 30
指定在30秒之后自动关闭计算机。

5、中止计算机的关闭

有时我们设定了计算机定时关机后,如果出于某种原因又想取消这次关机操作,就可以用 shutdown - a 来中止。如:

shutdown -s – t 300 设定计算机在5分钟后关闭。
Shutdown – a 取消上述关机操作。

以上是shutdown命令在本机中的一些基本应用。前面我们已经介绍过,该命令除了关闭、重启本地计算机外,更重要的是它还能对远程计算机进行操作,但是如何才能实现呢?

在该命令的格式中,有一个参数[-m [\\ComputerName],用它可以指定将要关闭或重启的计算机名称,省略的话则默认为对本机操作。您可以用以下命令来试一下:

shutdown –s –m \\sunbird -t 30

在30秒内关闭计算机名为sunbird的机器;注:sunbird为局域网内一台同样装有Windows XP的电脑。

但该命令执行后,计算机sunbird一点反应都没有,但屏幕上却提示“Access is denied (拒绝访问)”。

为什么会出现这种情况呢?原来在Windows XP默认的安全策略中,只有管理员组的用户才有权从远端关闭计算机,而一般情况下我们从局域网内的其他电脑来访问该计算机时,则只有guest用户权限,所以当我们执行上述命令时,便会出现“拒绝访问”的情况。

找到了问题的根源之后,解决的办法也很简单,您只要在客户计算机(能够被远程关闭的计算机,如上述的sunbird)中赋予guest用户远程关机的权限即可。这可利用Windows XP的“组策略”或“管理工具”中的“本地安全策略”来实现。下面以“组策略”为例进行介绍:

1、单击“开始”按钮,选择“运行”,在对话框中输入“gpedit.msc”,然后单击“确定”,即可打开组策略编辑器。

2、在“组策略”窗口的左侧窗格中逐级展开“计算机配置”→“Windows 设置”→“安全设置”→“本地策略”→“用户权利指派”。

3、在“组策略”窗口的右侧窗格中选择“从远端系统强制关机”,通过双击将其打开。
4、在弹出的对话框中显示目前只有“Administrators”组的成员才有权从远程关机;单击对话框下方的“添加用户或组”按钮,然后在新弹出的对话框中输入“guest”,再单击“确定”按扭。如图9所示。

5、这时在“从远端系统强制关机”的属性中便添加了一个“guest”用户,单击“确定”即可。

6、关闭“组策略”窗口。

通过上述操作后,我们便给计算机sunbird的guest用户授予了远程关机的权限。以后,倘若您要远程关闭计算机sunbird,只要在网络中其他装有Windows XP的计算机中输入以下命令即可:

shutdown -s –m \\sunbird -t 30 (其他参数用法同上)

图9

这时,在sunbird计算机的屏幕上将显示一个“系统关机”的对话框,提示“系统即将关机。请保存所有正在运行的工作,然后注销。未保存的改动将会丢失。关机是由sunbird\guest初始的。”在对话框下方还有一个计时器,显示离关机还有多少时间。在等待关机的时间里,用户还可以执行其他的任务,如关闭程序、打开文件等,但无法关闭该对话框,除非你用shutdown –a命令来中止关机任务。
参考技术A 要对方开启了才行的。不然的话也关不了对方的机子 参考技术B 这个早就不行了,现在系统越来越安全了,安全软件又那么多,怎么可能凭一句命令就让你随随便便关闭别人的电脑,除非你特别精通的黑客 参考技术C 推荐的回答者是弱智 题目都读不懂

如何在app.on(“before-quit”)中使用shutdown.bat停止Tomcat?

我尝试使用Electron在Windows上启动和停止Tomcat实例。

我修改了electron-quick-start项目以使用批处理文件停止我的Tomcat实例,该文件在所有Electron窗口关闭或应用程序退出之前调用Tomcat的shutdown.bat

但是,当我关闭我的应用程序时,shutdownTomcat.on ("data", ...)shutdownTomcat.on ("exit", ...)听众没有输出。唯一的输出来自我的console.log ("Hello world")app.on ("before-quit", ...)

我选择这种方法是因为我是Electron的新手,想要测试NodeJS的spawn的行为。

当我在app.on ()侦听器之外使用我的代码时,会显示输出,但我的Tomcat实例未被停止。但是,我的startTomcat.bat文件,它调用Tomcat的startup.bat,没有任何问题。

我已经阅读过NodeJS'childProcess'文档(“在Windows上生成.bat和.cmd文件”),但我无法让它工作;这导致了我的问题,即问题出在哪里以及我做错了什么。

我用于主要过程的Main.js文件:

const { app, BrowserWindow } = require('electron');
const { spawn } = require('child_process');
const path = require('path');

const start = path.resolve("./start.bat");
const startTomcat = spawn('cmd.exe', ['/c', start], {
   cwd: process.cwd(),
   detached: true,
});

// ...

app.on('before-quit',()=> {
  const shutdownTomcat = spawn('cmd.exe', ['/c', stop], {
    detached: true
    //  stdio: 'ignore' 
  });

  shutdownTomcat.stdout.on('data', (data) => {
    console.log("This data won't show up...", data);

  });

  shutdownTomcat.stderr.on('data', (data) => {
    console.log(data.toString());
  });

  shutdownTomcat.on('exit', (code) => {
    console.log(`Child Shutdown Tomcat exited with code ${code}`);
  });

  console.log("Hello World");
});

最后,我用来调用Tomcat的stop.bat的批处理文件(shutdown.bat):

cd /D "%~dp0"
cd "..\apache-tomcat\bin"
call shutdown.bat
答案

很可能您的电子申请已经在您的活动被解雇时终止。因此,不再引用您生成的进程和侦听器。

您可以尝试event.preventDefault()取消应用程序退出。然后你可以在完成后明确地使用app.quit()(但要注意无限循环通过你之前退出的监听器;你可以删除它或app.exit(0))。

以上是关于如何使用shutdown -m远程关机的主要内容,如果未能解决你的问题,请参考以下文章

register_shutdown_function() 和 die()

Shutdown Hook 中的日志去哪了?log4j2 shutdown hook 机制探究

Linux内核中shutdown系统调用

register_shutdown_function 函数详解

socket.shutdown 与 socket.close

Linux上TCP的shutdown/close