如何在windows上运行和忘记php中的命令



我要做的是在Windows上运行一个命令,该命令启动带有特定参数的putty.exe,这将启动连接并运行一些命令,这些命令是在txt文件中指定的putty会话其他服务器上。我只需要在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上不起作用

如果你想在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 !)

请尝试一下,阅读更多内容:

关于

的更多信息

不是答案,但是太长了

了解> /dev/null 2>/dev/null &在做什么是很重要的。

在Linux/Unix操作系统中,/dev/null是一个表示"nothing"的模拟设备,它丢弃所有写入的内容。/dev/null在Windows中不存在。更多信息请访问:https://en.wikipedia.org/wiki/Null_device

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

最新更新