Có cách nào để chạy các tiến trình trong nền trong Windows không? tương đương với cửa sổ


Câu trả lời:


8

Bạn có thể sử dụng lệnh start để chạy một tiến trình trong nền của cửa sổ lệnh.

command1
command2
start command3
command4

lệnh2 đợi cho đến khi lệnh1 kết thúc nhưng lệnh4 không đợi lệnh3 kết thúc.

và nếu bạn cần chạy độc lập với người dùng đã đăng nhập, bạn cần bắt đầu quá trình dưới dạng dịch vụ và bạn có thể sử dụng anysrv.exe


Theo như tôi hiểu thì STARTlệnh không thực hiện tách rời, tức là nó vẫn là một phần tử con của quá trình tạo ra nó. Trong ví dụ của bạn, điều đó có nghĩa là 'lệnh3' sẽ chết bất cứ khi nào quá trình mẹ thoát ra. Unix cắt ngang điều này bằng cách làm được gọi là 'fork-hai lần' nhưng tôi không biết tương đương trong Windows.
unixhacker2010

ít nhất là trên Windows 7, lệnh 3 sẽ KHÔNG chết, ví dụ như bạn có thể vào một dấu nhắc cmd "start notepad" sau đó thoát và notepad vẫn sẽ chạy
Aragorn

Đúng, bạn đúng. Tuy nhiên tôi đã thử nghiệm từ một ngôn ngữ khác, nơi tất cả những gì tôi có thể exec(<some windows executable>). Tôi có thể thấy rõ trong Process Explorer mối quan hệ cha-con và bất cứ điều gì tôi bắt đầu từ bên trong exec()không tồn tại. Chính xác là nó có vẻ hoạt động nếu tôi bắt đầu cmd.exetừ Menu bắt đầu trong đó quá trình bắt đầu dường như mồ côi 'chính xác' khi cmd.exethoát. Rõ ràng tôi cần hiểu điều này tốt hơn. :-(
unixhacker2010

6

Bạn có thể muốn xem các dịch vụ windows. Có một số công cụ bạn có thể tải xuống để lưu trữ bất kỳ quy trình nào dưới dạng dịch vụ windows. Điều này khiến quá trình tải nền sau khi khởi động windows, do đó, với điều kiện không yêu cầu tương tác người dùng, bạn sẽ có thể lưu trữ nó như thế này.

Bộ tài nguyên Windows Server 2003

Công cụ mà bạn theo đuổi được gọi là srvany.exe.


5

Cách duy nhất, trong Windows, bạn có thể bắt đầu một quá trình bởi người dùng tiếp tục chạy sau khi đăng xuất (nghĩa là "nohup" làm gì) là bắt đầu nó thông qua "tác vụ theo lịch trình" hoặc như một dịch vụ Windows. Khi người dùng đăng xuất tất cả các quy trình trong phiên đăng nhập của họ sẽ bị giết.

Nếu bạn đang chơi thử phương pháp "Nhiệm vụ theo lịch trình", bạn sẽ muốn biết cách tạo chúng theo chương trình. Lớp WMI Win32_SchediatedJob có thể làm điều đó. Tài liệu được cung cấp chi tiết tại đây: http://www.microsoft.com/technet/scriptcenter/guide/sas_man_rsxs.mspx?mfr=true Về cơ bản, bạn đang xem (bị đánh cắp một cách đáng xấu hổ từ 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

Để cấp cho "người dùng joe" khả năng tạo các tác vụ theo lịch trình, bạn sẽ phải sửa đổi quyền trên thư mục% SystemRoot% \ T task. Xem ở đây để biết một số thông tin ở mặt trước đó: http://technet.microsoft.com/en-us/l Library / cc785125 (WS.10) .aspx


Lợi thế của việc này so với việc sử dụng scht task.exe hoặc GUI Lập lịch tác vụ là gì?
Helvick

Không có nhiều sự khác biệt về chức năng giữa API này và scht task.exe. Ưu điểm của GUI là bạn có thể thực hiện việc này theo chương trình.
Evan Anderson

0

Tất cả điều này phụ thuộc vào mục đích cuối cùng của bạn là gì. Bạn có thể chạy một tác vụ theo lịch trình với tùy chọn chỉ chạy nếu người dùng đã đăng nhập được đặt thành DISABLED. Bạn có thể có thể sử dụng psexec từ một máy từ xa. Tốt hơn nữa có thể là chạy quá trình như một dịch vụ. Kiểm tra tìm kiếm Google này , tìm kiếm Google khác , chủ đề nàychủ đề khác này để biết một số khách hàng tiềm năng có thể tìm kiếm giải pháp của bạn. Cuối cùng, có vẻ như không có chính xác tương đương với nohup trên máy Windows.


Mục đích cuối cùng của tôi là để ẩn quá trình từ người dùng. Ẩn các cửa sổ mà nó sinh sản.
Jader Dias
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.