如何在Windows

时间:2015-08-12 15:32:37

标签: php windows exec background-process putty

我正在尝试做的是在Windows上运行一个命令,该命令使用specyfic参数启动putty.exe,这将启动连接并运行一些命令,这些命令位于putty会话中指定的txt文件中服务器。我只需要从linux上的其他服务器运行一些脚本,而这个主脚本将在Windows服务器上运行。

看起来像那样:

$putty_exe_path = 'C:\\putty\\putty.exe';
$linux_command_txt_file_path = 'C:\\putty\\commands_to_run_on_linux.txt';
$putty_session_name = 'puttysessionname';
$linux_user = 'root'; 
$linux_password = 'password';

$cmd = "\"\"".$putty_exe_path."\" -load ".$putty_session_name." -l ".$linux_user." -pw ".$linux_password." -m \"".$linux_command_txt_file_path."\"\"";             

shell_exec($cmd);  

并且它有效,但是当我使用这种方式运行的linux上的脚本运行很长时间时会出现问题,因为我的脚本正在输出。我想用exec()/ shell_exec()或以某种方式在Windows服务器上运行该命令并退出。我不需要输出。我需要解雇并忘记。我一直在寻找解决方案,但我发现的只有:

> /dev/null 2>/dev/null &

但我觉得它在Windows上不起作用。

2 个答案:

答案 0 :(得分:2)

如果要在Windows中执行控制台命令并且不等待其输出,则将输出重定向到> NUL

例如,在php中执行:

var_dump(system("cmd.exe > NUL"));// will output inmediately string(0)""
var_dump(system("cmd.exe"));// will wait for the prompt result and write something like Microsoft Windows bla bla bla ...

另外,如果您想知道这是否确实在做某事,请尝试:

  system("echo SOME TEXT > C:\SOME_FILE.txt"); // tHIS WILL Create a text file in the C disk of windows (but we dont add > NUL because there is already an output path !)

请尝试使用它,请阅读以下内容:

more info about

答案 1 :(得分:1)

不是答案,但评论时间太长

理解> /dev/null 2>/dev/null &正在做什么很重要。

在Linux / Unix操作系统中,/ dev / null是一个模拟设备,用于"没有",它会丢弃写入它的任何内容。它/ / dev / null,在Windows中不存在。在此处进行更多研究:https://en.wikipedia.org/wiki/Null_device

在linux中,运行命令stdout和stderr时有两个主要的输出流。 >/dev/null将stdout重定向到/ dev / null,2>/dev/null将stderr重定向到/ dev / null,&将命令发送到后台。现在,您可以使用它在Windows中查找等效项。