nohup arka planda bir işlem yürütür. Windows için herhangi bir eşdeğeri var mı?
nohup arka planda bir işlem yürütür. Windows için herhangi bir eşdeğeri var mı?
Yanıtlar:
Komut penceresinin arka planında bir işlemi çalıştırmak için start komutunu kullanabilirsiniz.
command1
command2
start command3
command4
command2, command1 bitene kadar bekler, ancak command4, command3'ün bitmesini beklemez.
ve oturum açmış olan kullanıcıdan bağımsız olarak çalıştırmanız gerekirse, işlemi bir hizmet olarak başlatmanız gerekir ve anysrv.exe'yi kullanabilirsiniz .
exec(<some windows executable>)
. Process Explorer'da ebeveyn-çocuk ilişkisini açıkça görebiliyorum ve içinden ne exec()
başlasam hayatta kalmıyor. Bir cmd.exe
başlat menüsü başlatılırsa, başlatıldığında başlatılan işlemin 'doğru' yetim göründüğü durumlarda işe yarayacak şekilde düzeltin cmd.exe
. Açıkçası bunu daha iyi anlamam gerekiyor. :-(
Windows hizmetlerine bakmak isteyebilirsiniz. Windows hizmeti olarak herhangi bir işlemi barındırmak için indirebileceğiniz bazı araçlar vardır. Bu, işlemin Windows başlangıcında arka planda yüklenmesine neden olur, bu nedenle kullanıcı etkileşimi gerektirmiyorsa, bu şekilde barındırmanız gerekir.
Windows Server 2003 Kaynak Seti
Takip ettiğiniz araca srvany.exe denir.
Windows'da, bir kullanıcı tarafından oturum açtıktan sonra çalışmaya devam edebilmenin tek yolu (yani "nohup" ın yaptığı) ya "zamanlanmış görev" ya da Windows hizmeti olarak başlatmaktır. Kullanıcı oturumu kapattığında oturum açma oturumundaki tüm işlemler öldürülür.
"Zamanlanmış Görevler" yöntemini denemek için oyun oynuyorsanız, bunları programlı olarak nasıl oluşturacağınızı bilmek istersiniz. Win32_ScheduledJob WMI sınıfı yapabilirsiniz. Belgeler burada ayrıntılı olarak verilmiştir: http://www.microsoft.com/technet/scriptcenter/guide/sas_man_rsxs.mspx?mfr=true Temel olarak (Microsoft'tan utanmadan çalınan):
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 kullanıcısına" zamanlanmış görevler oluşturma yeteneği vermek için,% SystemRoot% \ Tasks klasöründeki izni değiştirmeniz gerekir. Bu cephedeki bazı bilgiler için buraya bakın: http://technet.microsoft.com/en-us/library/cc785125(WS.10).aspx
Bu, nihai amacınızın ne olduğuna bağlıdır. Zamanlanmış bir görevi yalnızca kullanıcı oturum açmış durumda DEVRE DIŞI olarak ayarlanmışsa çalıştırma seçeneğiyle çalıştırabilirsiniz. Uzak bir makineden psexec kullanabilirsiniz. Daha da iyisi, süreci bir hizmet olarak çalıştırmak olabilir. Check out bu, Google aramayı , bu diğer Google araması , Konuyu ve bu diğer iplik bir çözüm için arama bazı olası potansiyel müşteri için. Nihayetinde , bir Windows makinesinde nohup'a tam eşdeğer olmadığı anlaşılıyor.
START
komut bir ayırma yapmaz, yani onu hala yaratan sürecin bir çocuğudur. Örneğinizde bu, ana süreç her çıktığında 'command3'ün öleceği anlamına gelir. Unix bunu yaparak atlatıyor 'çatal-iki kez' olarak biliniyordu ama Windows'da bir eşdeğer bilmiyorum.