มีวิธีกำหนดค่ากระบวนการบริการ Windows (เช่น squidNT, SQL Server ฯลฯ ) ให้เริ่มโดยอัตโนมัติโดยมีลำดับความสำคัญต่ำโดยไม่เปลี่ยนลำดับความสำคัญของกระบวนการด้วยตนเองผ่านทาง Task Manager หรือไม่
มีวิธีกำหนดค่ากระบวนการบริการ Windows (เช่น squidNT, SQL Server ฯลฯ ) ให้เริ่มโดยอัตโนมัติโดยมีลำดับความสำคัญต่ำโดยไม่เปลี่ยนลำดับความสำคัญของกระบวนการด้วยตนเองผ่านทาง Task Manager หรือไม่
คำตอบ:
Service Control Manager ซึ่งจัดการการเริ่ม / หยุดบริการไม่มีกลไกใด ๆ (ใน Windows รุ่นก่อนหน้านี้) เพื่อระบุลำดับความสำคัญของกระบวนการที่เริ่มต้น
เนื่องจากคุณสามารถปรับเปลี่ยนลำดับความสำคัญในกระบวนการที่รันอยู่แล้วทางออกที่ดีที่สุดของคุณคือการใช้เครื่องมือในการทำเช่นนั้น
ฉันไม่ทราบว่าเครื่องมือบรรทัดคำสั่งของ Microsoft เพื่อปรับเปลี่ยนลำดับความสำคัญของกระบวนการ แต่บรรทัดคำสั่ง "PV" ก็มีให้ที่http://www.teamcti.com/pview/prcview.htmมีฟังก์ชั่นเพื่อกำหนดลำดับความสำคัญ .
pv -pb process-name.exe
ที่จะตั้งค่า "process-name.exe" เป็น "ต่ำกว่าปกติ" ลำดับความสำคัญ
หากคุณสามารถใช้ชีวิตกับกระบวนการที่เริ่มต้นที่ "ปกติ" ลำดับความสำคัญจนกว่าคุณจะได้รับการเปลี่ยนแปลงคุณสามารถทำได้ด้วยสคริปต์ที่เรียกใช้เป็น "งานตามกำหนดเวลา" เพื่อดับทุก ๆ ครั้ง (ในกรณีที่บริการได้รับ เด้ง)
มันเป็นการแฮ็คที่รวดเร็วและสกปรก แต่ฉันติดหนี้โชคลาภมากมายในชีวิตเพื่อแฮ็กที่รวดเร็วและสกปรกที่ทำงานให้เสร็จ!
คำตอบข้างต้นไม่ได้ผลสำหรับฉัน ฉันสิ้นสุดการสร้างสคริปต์ powershell ต่อไปนี้:
ChangePriority.ps1
Get-WmiObject Win32_process -Filter 'name="ProcessName.exe"' | ForEach-Object {$_.SetPriority(128)}
จากนั้นฉันก็สร้างงานตามกำหนดเวลาที่เรียกมันว่าทุกๆ 5 นาที จากพรอมต์ผู้ดูแลระบบหรือชุดสคริปต์:
schtasks /Create /tn "Process Priority Change" /sc MINUTE /mo 5 /ru SYSTEM /tr "powershell -noprofile -executionpolicy bypass -file \"%cd%\ChangePriority.ps1\""
พยายามใช้wmic
ตามที่กล่าวไว้ที่นี่เพื่อทำให้ภารกิจที่กำหนดไว้ไม่ขึ้นกับไฟล์ล้มเหลว Similary ใช้สคริปต์ PowerShell: ฉันไม่สามารถสร้างคำสั่งเดียวที่เพิ่งสร้างงานด้วยสคริปต์แบบอินไลน์ เห็นคุณค่าถ้าคุณพยายามที่จะทำและเพิ่มคำตอบอื่น
ค่าของลำดับความสำคัญในสคริปต์ powershell สามารถพบได้ที่นี่ [1]
ต่อไปนี้อาจใช้งานได้ แก้ไขคีย์รีจิสทรี ImagePath และใช้คำสั่ง start จาก cmd.exe:
START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [command/program]
[parameters]
ImagePath
ต้องเคารพอินเทอร์เฟซสำหรับบริการของ Windows และstart
ไม่ได้ดำเนินการและจะไม่นำสิ่งนี้ไปสู่การปฏิบัติการ
ฉันต้องทำอย่างนั้นเพื่อให้ teamcity ใช้ cpu น้อยลง และเนื่องจาก teamcity เป็นแอปพลิเคชันจาวาเดียวที่เรากำลังเรียกใช้โซลูชั่นดังกล่าวทำงานได้อย่างสมบูรณ์แบบ
สร้างไฟล์แบตช์ที่จะเริ่มบริการของคุณและลดความสำคัญเช่น:
เริ่มต้น
สุทธิ tcbuildagent
กระบวนการเริ่มต้นสุทธิทีมwmic โดยที่ name = "java.exe" CALL setpriority "ต่ำกว่าปกติ"
ฉันกำหนดค่าทริกเกอร์ TaskScheduler ด้วยความล่าช้า 1 นาทีเพื่อไม่รบกวนการทำงานของบริการอื่น ๆ ที่เริ่มต้น
ป.ล. คุณยังสามารถตั้งค่าการเริ่มต้นบริการทั้งหมดของคุณด้วยตนเองและใช้ไฟล์ชุดนั้นเพื่อเริ่มต้นทั้งหมดตามลำดับที่คุณต้องการ SQL, IIS และอื่น ๆ
คุณสามารถสคริปต์ PowerShell ต่อไปนี้วางไว้ในงานที่กำหนดเวลาไว้ที่ทำงานเมื่อเริ่มต้น
do {
start-sleep -s 5
$obj = Get-WmiObject Win32_process -Filter 'name="processname"'
} while ($obj -eq $null)
$obj.SetPriority(16384)