วิธีสร้างบริการที่รันไฟล์. bat บน Windows 2008 Server


21

ฉันได้สร้างบริการโดยใช้

sc create myService binpath=myservice.bat

แต่เมื่อฉันเริ่มมันล้มเหลวด้วยข้อความแสดงข้อผิดพลาดต่อไปนี้:

[SC] StartService FAILED 1053:
    The service did not respond to the start or control request in a timely fashion.

บน Win2k3 ฉันใช้ srvany.exe จากชุดทรัพยากร แต่ไม่มีชุดทรัพยากรสำหรับ win2k8 ในขณะที่ฉันติดตั้ง srvany.exe บนเครื่องของฉัน แต่ฉันไม่คิดว่ามันเป็นวิธีที่ดีที่สุดที่จะทำ

ขอบคุณ!


1
คุณสามารถเรียกใช้ไฟล์แบตช์เป็นบริการหรือไม่? ภารกิจตามกำหนดเวลาจะไม่ดีกว่านี้หรือ ฉันรู้ว่าคุณใช้บริการ Windows จริงหรือไม่เหตุการณ์ OnLoad ต้องกลับมาภายในไม่กี่วินาที
tsilb

คำตอบ:


9

แน่นอนคุณไม่สามารถเรียกใช้บริการเช่นนั้นได้ คุณลองใช้ srvany ใน server 2008 หรือไม่? เท่าที่ฉันรู้ว่าไม่มี srvany รุ่น 'ทางการ' สำหรับ s2k8 แต่คุณสามารถลองได้หรือไม่?

แก้ไข: โอ้ฉันลืม! นอกจากนี้เรายังใช้ FireDaemon เพื่อเรียกใช้แอปพลิเคชันที่ไม่ใช่บริการเป็นบริการ แม้ว่ามันจะไม่ฟรีและฟังก์ชั่นมันค่อนข้างมากเกินไปสำหรับความต้องการของคุณ


นี่คือสิ่งที่ฉันเขียน
abyx

อืม .. นี่มันแปลก มันกรองผ่านสมองของฉัน ขอโทษ ทั้งสองวิธี srvany ดูเหมือนว่าสิ่งที่ดีที่สุดที่จะทำในสถานการณ์นี้
shylent

srvany ทำงานได้ในปี 2008 (ฉันใช้เพื่อติดตั้งและเรียกใช้ Winamp.exe เป็นบริการบนเซิร์ฟเวอร์ภายในบ้าน) ... แต่คุณไม่สามารถเรียกใช้ไฟล์แบ็ตได้
Oskar Duveborn

24

ใช้ NSSM เพื่อเรียกใช้. BAT หรือไฟล์. EXE เก่าใด ๆ เป็นบริการ มันเกือบจะทดแทน SRVANY และเป็นแอพพลิเคชั่นที่ไม่ยุ่งยากไม่ยุ่งยาก

http://iain.cx/src/nssm/

ฉันมีปัญหาเดียวกับคุณและ NSSM เป็นยูทิลิตี้เดียวที่ใช้งานได้


3
ฉันไม่เคยได้ยินเรื่องนี้มาก่อน แต่ดูเหมือนจะเป็นเครื่องมือที่มีค่า ขอบคุณสำหรับทิป.
Skyhawk

ขอบคุณมันใช้งานได้สำหรับฉัน แม้ว่าฉันจะยังคงมองหาตัวเลือกเพื่อหยุดบริการในเวลาที่กำหนด
Ankit

8

เราใช้Task Schedulerเพื่อเรียกใช้งานเมื่อใดก็ตามที่คอมพิวเตอร์เริ่มทำงาน (ไม่ว่าผู้ใช้จะเข้าสู่ระบบหรือไม่ก็ตาม)


1
เพื่อซ่อนหน้าต่างอ่านบทความนี้หรือนี้ถ้าคุณไม่ได้มีความสุขทำงานเป็นระบบ
JonnyRaa

7

คุณไม่สามารถเรียกใช้ไฟล์. BAT หรือไฟล์. EXE เก่าใด ๆ เป็นบริการได้ บริการ Windows ไม่ทำงานที่คุณ คุณสามารถใช้ยูทิลิตีเช่นNon-Sucking Service Manager (NSSM) หรือยูทิลิตี SRVANY ที่ไม่ต้องเสียค่าใช้จ่ายของ Microsoft เพื่อเรียกใช้โปรแกรมโดยพลการเป็นบริการ แต่คุณอาจพบว่าคุณไม่ได้หยุดพฤติกรรม "สง่างาม" มากนัก


3

คำสั่ง SC จะเพิ่มรายการรีจิสตรีที่จำเป็นสำหรับบริการ - หากไฟล์ที่คุณระบุไม่ใช่ exe บริการที่ถูกต้องมันจะไม่เปลี่ยนเป็นไฟล์เดียว


2

จาก: โพสต์นี้ในฟอรัม technet: http://social.technet.microsoft.com/Forums/en-US/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

นี่คือสิ่งที่ต้องทำ ...

ในช่วงเวลาของการโพสต์นี้ไม่มีเครื่องมือ Kit ทรัพยากรของ Windows Server 2008 ดังนั้นรับ "srvany.exe" จาก "เครื่องมือ Kit ทรัพยากรของ Windows Server 2003" และคัดลอกไปยังตำแหน่งที่เหมาะสมบนเซิร์ฟเวอร์ Win2008 ของคุณ (เช่น C: \ Windows \ System32 \) ใช้ "sc" เพื่อสร้างบริการใหม่ที่เปิดตัว "srvany" (เช่น sc สร้าง MyService binPath = C: \ Windows \ System32 \ srvany.exe DisplayName = "My Custom Service") โดยใช้ RegEdit: สร้างคีย์ "พารามิเตอร์" สำหรับคุณ บริการ (เช่น HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MyService \ Paramaters \) การใช้ RegEdit: ภายในคีย์ "พารามิเตอร์" ที่สร้างขึ้นใหม่ให้สร้างค่าสตริงที่เรียกว่า "แอปพลิเคชัน" และป้อนเส้นทางแบบเต็มไปยังแอปพลิเคชันที่คุณต้องการเรียกใช้ บริการ (ไม่ต้องใช้เครื่องหมายคำพูด)

และควรทำเช่นนั้น

หมายเหตุ: บางแอปพลิเคชันเก็บการตั้งค่าไว้ในกลุ่มผู้ใช้ไม่ใช่ภายใต้ HKEY_LOCAL_MACHINE ดังนั้นคุณจะต้องเรียกใช้แอปพลิเคชันเพื่อกำหนดค่าจากนั้นกำหนดค่าบริการเพื่อให้ทำงานแบบผู้ใช้นั้น


2

ลองนี่สิ ... มันใช้งานได้สำหรับฉัน ..

sc create ServiceTest binpath= "C:\Windows\System32\cmd.exe /C C:\ServiceTest\Jenkins-Slave.bat"

มันไม่ทำงานสำหรับฉันเช่นกัน! ข้อผิดพลาดเดียวกับ OP - ไม่เริ่มในเวลาที่เหมาะสม
Ravindra HV

Ditto - ไม่ทำงาน
Spedge

0

ฉันสะดุดกับสิ่งนี้ นี่คือเครื่องมือที่เรียกว่า Bat_To_Exe_Converter มันง่ายมากที่จะแปลงไฟล์. bat ใด ๆ ให้เป็นไฟล์. exe ลองมัน. ดาวน์โหลดตัวดาวน์โหลดก่อนแล้วมันจะทำการดาวน์โหลด Bat_To_Exe_Converter โดยอัตโนมัติ มันช่วยให้ฉันสร้างบริการที่รันไฟล์. bat ผ่าน. exe http://download.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad0


ยินดีต้อนรับสู่ Server Fault! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Scott Pack


0

ฉันพบตัวเลือกอื่นสองตัวที่จะไม่ทำให้คุณเข้าถึงกระเป๋าเงิน

คุณสามารถscเปิดตัวsrvanyซึ่งชี้ไปที่โปรแกรมของคุณ (มีโพสต์ฟอรัมที่ฉันไม่สามารถเชื่อมโยงได้เพราะฉันมีตัวแทนไม่เพียงพอที่นี่แม้ว่าฉันจะทำใน StackOverflow - บ่น)

นี่คือขั้นตอนที่ใช้โปสเตอร์ต้นฉบับ:

  1. ใช้scเพื่อสร้างบริการใหม่ที่เปิดตัวsrvany(เช่นsc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service")
  2. ใช้ RegEdit: สร้างParametersคีย์สำหรับบริการของคุณ (เช่นHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\)
  3. ใช้ RegEdit: ภายในParametersคีย์ที่สร้างขึ้นใหม่ให้สร้างค่าสตริงที่เรียกApplicationและป้อนพา ธ เต็มไปยังแอปพลิเคชันที่คุณต้องการเรียกใช้เป็นบริการ (ไม่ต้องใช้เครื่องหมายคำพูด)

หากดูเหมือนว่าแฮ็คเล็กน้อยคุณสามารถสร้างบริการ. NET เพื่อเริ่มกระบวนการของคุณ หากคุณต้องการข้ามขั้นตอนต่อไปนี้เป็นบริการ. NET แบบโอเพ่นซอร์สที่สามารถเปิดใช้งานกระบวนการทั่วไป:

http://www.codeproject.com/KB/system/xyntservice.aspx

ปรับแต่งตามความต้องการของคุณ แต่มันจะทำสิ่งที่คุณต้องการให้มากที่สุด


และ srvany ที่คุณพูดถึงนั้นมาจาก Win2k3 ที่ไม่มีเวอร์ชั่นที่รองรับสำหรับ Win2k8 หรือไม่?
LarsH
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.