在linux中你可以使用 command**&**在后台运行命令,同样的在shell离线后会继续。我想知道在windows中有没有类似的东西...
lyfkaqu11#
我认为您要查找的命令是start /b *command*对于unix,nohup表示“no hangup”,这与后台作业(应该是*command* &)略有不同。我相信上面的命令应该与windows的后台作业类似。
start /b *command*
nohup
*command* &
vhmi4jdf2#
我假设你想运行一个没有界面的命令(可能是自动的?)。在windows上有很多选项可以满足你的需求:
Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run("C:\yourbatch.bat"), 0, True
你仍然需要手动启动命令或者写一个任务来启动命令。这是这个策略最大的福尔斯之一。
希望这对你有所帮助!
00jrzges3#
使用带有/b标志的start命令可以运行命令/应用程序,而无需打开新窗口。例如,以下命令在后台运行dotnet run:
/b
start
dotnet run
start /b dotnet run
您也可以向命令/应用程序传递参数。例如,我启动了这个C#项目的3个示例,参数值分别为x、y和z:
x
y
z
CTRL + BREAK
根据我的经验,这会停止您在该cmd示例中启动的所有后台命令/程序。按Microsoft docs:除非应用程序启用CTRL+ C行程,否则会忽略CTRL+ C行程。请使用CTRL+BREAK中断应用程序。
cmd
thtygnil4#
你还应该看看Windows中的at命令。它会在后台的某个时间启动一个程序,在这种情况下是有效的。另一个选择是使用nssm服务管理器软件。这将把你正在运行的任何命令 Package 为windows服务。最新消息:nssm不是很好。您应该转而查看WinSW项目。https://github.com/kohsuke/winsw
at
nssm
suzh9iv85#
如果您花5分钟下载visual studio并为此制作一个控制台应用程序,您的问题就解决了。
using System; using System.Linq; using System.Diagnostics; using System.IO; namespace BgRunner { class Program { static void Main(string[] args) { Console.WriteLine("Starting: " + String.Join(" ", args)); String arguments = String.Join(" ", args.Skip(1).ToArray()); String command = args[0]; Process p = new Process(); p.StartInfo = new ProcessStartInfo(command); p.StartInfo.Arguments = arguments; p.StartInfo.WorkingDirectory = Path.GetDirectoryName(command); p.StartInfo.CreateNoWindow = true; p.StartInfo.UseShellExecute = false; p.Start(); } } }
用法示例:
BgRunner.exe php/php-cgi -b 9999 BgRunner.exe redis/redis-server --port 3000 BgRunner.exe nginx/nginx
0ejtzxu16#
这是不可想象的,十年后,Windows仍然没有一个体面的方式来运行命令在后台。start /B command是最常给出的答案,但当终端关闭时,该命令也会关闭。现在,Windows 10有一个内置的ssh服务器(虽然你必须手动安装)。
start /B command
ssh username@localhost "my_backgroud_command --params"
然后CTRL C,关闭终端,命令将继续在后台运行。这是目前为止我找到的最体面的方式。虽然还不够体面,因为你必须先安装和配置ssh服务器。
0ve6wy6x7#
当我需要在后台运行一个简单的命令或一组命令,然后注销时,我经常使用的一个选项是编写命令脚本(秒)(BAT、CMD、PowerShell、等....全部正常工作),然后使用Windows本机任务计划程序执行脚本。从任务计划程序执行的作业不会在您注销时消失。任务计划程序作业可以配置为以“隐藏”方式运行(即e.命令提示符窗口将不会显示。当手头的任务很简单,编写一个控制台应用程序来执行一两个简单的命令会“矫枉过正”,即比它的价值更多的工作时,这个脚本+任务调度程序是一个很好的替代方案,而不是在你喜欢的开发环境(如Visual Studio)中开发一个可执行文件(如yadda.exe)。就我的意见。干杯!干杯!
qmelpv7a8#
在这里的Windows服务器上,使用一个标题(在双括号中),否则它不会“释放”:启动“”“chrome.exe --参数”&& echo truc
8条答案
按热度按时间lyfkaqu11#
我认为您要查找的命令是
start /b *command*
对于unix,
nohup
表示“no hangup”,这与后台作业(应该是*command* &
)略有不同。我相信上面的命令应该与windows的后台作业类似。vhmi4jdf2#
我假设你想运行一个没有界面的命令(可能是自动的?)。在windows上有很多选项可以满足你的需求:
你仍然需要手动启动命令或者写一个任务来启动命令。这是这个策略最大的福尔斯之一。
希望这对你有所帮助!
00jrzges3#
使用带有
/b
标志的start
命令可以运行命令/应用程序,而无需打开新窗口。例如,以下命令在后台运行dotnet run
:您也可以向命令/应用程序传递参数。例如,我启动了这个C#项目的3个示例,参数值分别为
x
、y
和z
:要停止在后台运行的程序:
CTRL + BREAK
根据我的经验,这会停止您在该
cmd
示例中启动的所有后台命令/程序。按Microsoft docs:
除非应用程序启用CTRL+ C行程,否则会忽略CTRL+ C行程。请使用CTRL+BREAK中断应用程序。
thtygnil4#
你还应该看看Windows中的
at
命令。它会在后台的某个时间启动一个程序,在这种情况下是有效的。另一个选择是使用
nssm
服务管理器软件。这将把你正在运行的任何命令 Package 为windows服务。最新消息:
nssm
不是很好。您应该转而查看WinSW项目。https://github.com/kohsuke/winswsuzh9iv85#
如果您花5分钟下载visual studio并为此制作一个控制台应用程序,您的问题就解决了。
用法示例:
0ejtzxu16#
这是不可想象的,十年后,Windows仍然没有一个体面的方式来运行命令在后台。
start /B command
是最常给出的答案,但当终端关闭时,该命令也会关闭。现在,Windows 10有一个内置的ssh服务器(虽然你必须手动安装)。
然后CTRL C,关闭终端,命令将继续在后台运行。
这是目前为止我找到的最体面的方式。虽然还不够体面,因为你必须先安装和配置ssh服务器。
0ve6wy6x7#
当我需要在后台运行一个简单的命令或一组命令,然后注销时,我经常使用的一个选项是编写命令脚本(秒)(BAT、CMD、PowerShell、等....全部正常工作),然后使用Windows本机任务计划程序执行脚本。从任务计划程序执行的作业不会在您注销时消失。任务计划程序作业可以配置为以“隐藏”方式运行(即e.命令提示符窗口将不会显示。当手头的任务很简单,编写一个控制台应用程序来执行一两个简单的命令会“矫枉过正”,即比它的价值更多的工作时,这个脚本+任务调度程序是一个很好的替代方案,而不是在你喜欢的开发环境(如Visual Studio)中开发一个可执行文件(如yadda.exe)。
就我的意见。
干杯!干杯!
qmelpv7a8#
在这里的Windows服务器上,使用一个标题(在双括号中),否则它不会“释放”:
启动“”“chrome.exe --参数”&& echo truc