nohup はバックグラウンドでプロセスを実行します。Windows に相当するものはありますか?
答え1
start コマンドを使用すると、コマンド ウィンドウのバックグラウンドでプロセスを実行できます。
command1
command2
start command3
command4
command2 は command1 が完了するまで待機しますが、command4 は command3 が完了するまで待機しません。
ログオンしたユーザーとは独立して実行する必要がある場合は、プロセスをサービスとして起動する必要があり、任意のsrv.exe
答え2
Windows サービスを調べてみるとよいでしょう。任意のプロセスを Windows サービスとしてホストするためにダウンロードできるツールがいくつかあります。これにより、プロセスは Windows の起動時にバックグラウンドで読み込まれるため、ユーザーの操作を必要としない場合は、このようにホストできるはずです。
必要なツールは srvany.exe と呼ばれます。
答え3
Windows で、ユーザーが開始したプロセスをログオフ後も実行し続ける唯一の方法 (つまり、「nohup」が行うこと) は、そのプロセスを「スケジュールされたタスク」または Windows サービスとして開始することです。ユーザーがログオフすると、ログオン セッション内のすべてのプロセスが終了します。
「スケジュールされたタスク」方式を試してみたい場合は、プログラムでタスクを作成する方法を知っておく必要があります。Win32_スケジュールジョブWMI クラスでそれができます。詳細なドキュメントはここにあります:http://www.microsoft.com/technet/scriptcenter/guide/sas_man_rsxs.mspx?mfr=true 基本的には、次の操作を行うことになります (Microsoft から恥ずかしげもなく盗用しました)。
Set objService = GetObject("winmgmts:\\.")
Set objNewJob = objService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create("Program-to-execute.exe", "ugly-formatted-time-string-per-Microsoft-docs",True ,1 OR 4 OR 16, , ,JobID)
If Err.Number = 0 Then
Wscript.Echo "New Job ID: " & JobID
Else
Wscript.Echo "An error occurred: " & errJobCreated
End If
「joe ユーザー」にスケジュールされたタスクを作成する権限を与えるには、%SystemRoot%\Tasks フォルダの権限を変更する必要があります。この点については、こちらを参照してください。http://technet.microsoft.com/en-us/library/cc785125(WS.10).aspx
答え4
これはすべて、最終的な目的によって異なります。ユーザーがログオンしている場合にのみ実行するオプションを無効にして、スケジュールされたタスクを実行することができます。リモートマシンから psexec を使用することもできます。さらに良いのは、プロセスをサービスとして実行することです。このGoogle検索、この他のGoogle検索、このスレッド、 そしてこの他のスレッド解決策を探すための手がかりとなるものをいくつか探してみてください。結局のところ、解決策はないようです。ちょうどWindows マシンの nohup に相当します。