Có cách nào để định cấu hình quy trình dịch vụ Windows (ví dụ: squidNT, SQL Server, v.v.) để bắt đầu tự động với mức độ ưu tiên thấp mà không thay đổi ưu tiên quy trình theo cách thủ công thông qua Trình quản lý tác vụ không?
Có cách nào để định cấu hình quy trình dịch vụ Windows (ví dụ: squidNT, SQL Server, v.v.) để bắt đầu tự động với mức độ ưu tiên thấp mà không thay đổi ưu tiên quy trình theo cách thủ công thông qua Trình quản lý tác vụ không?
Câu trả lời:
Trình quản lý điều khiển dịch vụ, xử lý các dịch vụ khởi động / dừng, không có bất kỳ cơ chế nào (trong bất kỳ phiên bản nào của Windows heretofore) để chỉ định mức độ ưu tiên cho các quy trình mà nó khởi động.
Vì bạn có thể sửa đổi mức độ ưu tiên trong quy trình đã chạy, nên cách tốt nhất của bạn có thể là sử dụng một công cụ để thực hiện điều đó.
Tôi không biết về công cụ dòng lệnh của Microsoft để sửa đổi mức độ ưu tiên của quy trình, nhưng dòng lệnh "PV" cũng vậy, có sẵn tại địa chỉ http://www.teamcti.com/pview/prcview.htmlm có chức năng đặt mức độ ưu tiên .
pv -pb process-name.exe
Điều đó sẽ đặt ưu tiên "process-name.exe" thành "Dưới mức bình thường".
Nếu bạn có thể sống với quy trình bắt đầu ở mức ưu tiên "Bình thường" cho đến khi bạn bắt đầu thay đổi nó, bạn có thể làm như vậy với một tập lệnh chạy dưới dạng "Tác vụ theo lịch trình" để tắt mọi lúc (trong trường hợp dịch vụ được bị trả lại).
Đó là một vụ hack nhanh chóng và bẩn thỉu, nhưng tôi nợ rất nhiều tài sản của mình trong cuộc sống với những vụ hack nhanh chóng và bẩn thỉu để hoàn thành công việc!
Câu trả lời trên không làm việc cho tôi. Tôi đã kết thúc việc tạo tập lệnh powershell sau:
ChangeP Warriority.ps1
Get-WmiObject Win32_process -Filter 'name="ProcessName.exe"' | ForEach-Object {$_.SetPriority(128)}
Và sau đó tôi đã tạo ra một nhiệm vụ theo lịch trình gọi nó cứ sau 5 phút. Từ lời nhắc của Quản trị viên hoặc tập lệnh bó:
schtasks /Create /tn "Process Priority Change" /sc MINUTE /mo 5 /ru SYSTEM /tr "powershell -noprofile -executionpolicy bypass -file \"%cd%\ChangePriority.ps1\""
Đã cố sử dụng wmic
như đã thảo luận ở đây để thực hiện tác vụ theo lịch trình không phụ thuộc vào tệp không thành công. Similary sử dụng tập lệnh powershell: Tôi không thể tạo một lệnh duy nhất mà chỉ tạo một tác vụ với tập lệnh nội tuyến. Đánh giá cao nếu bạn quản lý để làm điều đó và thêm một câu trả lời khác.
Các giá trị ưu tiên trong tập lệnh powershell có thể được tìm thấy ở đây [1].
Sau đây cũng có thể làm việc. Chỉnh sửa khoá đăng ký ImagePath và sử dụng lệnh start từ cmd.exe:
START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [command/program]
[parameters]
ImagePath
phải tôn trọng giao diện cho các dịch vụ Windows và start
không triển khai cũng như không định tuyến điều này đến chương trình thực thi được khởi chạy.
Tôi đã phải làm điều đó để làm cho teamcity mất ít cpu hơn. Và, bởi vì teamcity là ứng dụng java duy nhất chúng tôi đang chạy, giải pháp đó hoạt động hoàn hảo.
Tạo một tệp bó, sẽ bắt đầu dịch vụ của bạn và hạ mức độ ưu tiên, như:
net start tcbuildagent
net start teamcity
wmic process where name = "java.exe" CALL setp Warriority "dưới mức bình thường"
Tôi đã cấu hình trình kích hoạt TaskScheduler với độ trễ 1 phút để không can thiệp vào các dịch vụ khác bắt đầu.
ps bạn cũng có thể đặt tất cả các dịch vụ của mình khởi động thành thủ công và sử dụng tệp bó đó để bắt đầu tất cả chúng theo thứ tự bạn muốn! SQL, IIS, v.v.