我正在尝试做的是在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上不起作用。
答案 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 !)
请尝试使用它,请阅读以下内容:
答案 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中查找等效项。