Bagaimana cara membuat layanan yang menjalankan file .bat di Windows 2008 Server?

21

Saya telah membuat layanan menggunakan

sc create myService binpath=myservice.bat

Tetapi ketika saya memulainya, itu gagal dengan pesan kesalahan berikut:

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

Pada Win2k3 saya menggunakan srvany.exe dari Resource kit, tetapi tidak ada resource kit untuk win2k8. Untuk saat ini saya telah menginstal srvany.exe di komputer saya, tetapi saya rasa itu bukan cara terbaik untuk melakukannya.

Terima kasih!

abyx
sumber
1
Anda dapat menjalankan file batch sebagai layanan? Bukankah tugas yang dijadwalkan lebih baik? Saya tahu jika Anda menggunakan Layanan Windows yang sebenarnya, acara OnLoad perlu kembali dalam beberapa detik.
tsilb

Jawaban:

9

Tentu saja Anda tidak dapat menjalankan layanan seperti itu. Apakah Anda mencoba menggunakan srvany di server 2008? Sejauh yang saya tahu tidak ada versi 'resmi' dari srvany untuk s2k8, tetapi Anda selalu dapat mencoba, bukan?

EDIT: Oh, saya lupa! Kami juga menggunakan FireDaemon untuk menjalankan aplikasi non-layanan sebagai layanan. Padahal, itu tidak gratis dan fungsinya agak terlalu banyak untuk kebutuhan Anda.

shylent
sumber
Itulah yang saya tulis saya lakukan.
abyx
hmm .. ini aneh. Itu hanya disaring melalui otak saya. Maaf. Either way, srvany sepertinya hal terbaik untuk dilakukan dalam situasi ini.
shylent
srvany berfungsi pada tahun 2008 (saya menggunakannya untuk menginstal dan menjalankan Winamp.exe sebagai layanan pada server rumah) ... tetapi Anda tidak dapat menjalankan hanya file bat.
Oskar Duveborn
24

Gunakan NSSM untuk menjalankan .BAT atau file .EXE lama sebagai layanan. Ini hampir merupakan pengganti SRVANY dan aplikasi tanpa embel-embel.

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

Saya memiliki masalah yang sama dengan Anda, dan NSSM adalah satu-satunya utilitas yang berfungsi.

Matthew Blackford
sumber
3
Saya belum pernah mendengar ini sebelumnya, tetapi tampaknya ini merupakan alat yang berharga. Terima kasih atas tipnya.
Skyhawk
Terima kasih itu berhasil untuk saya. Meskipun saya masih mencari opsi untuk menghentikan layanan pada waktu yang ditentukan.
Ankit
8

Kami menggunakan Penjadwal Tugas untuk menjalankan tugas setiap kali komputer dijalankan (terlepas dari pengguna yang masuk atau tidak)

Korayem
sumber
1
untuk menyembunyikan jendela baca ini atau ini jika Anda tidak senang menjalankannya sebagai sistem
JonnyRaa
7

Anda tidak bisa hanya menjalankan file .BAT atau file .EXE lama sebagai layanan. Layanan Windows tidak berfungsi untuk Anda. Anda dapat menggunakan utilitas seperti NSSM ( Layanan Manajer Tidak Menyedot ) atau utilitas SRVANY Microsoft yang tidak bebas untuk menjalankan program sewenang-wenang sebagai layanan, tetapi Anda mungkin menemukan bahwa Anda tidak mendapatkan perilaku berhenti yang sangat "anggun".

Evan Anderson
sumber
3

Perintah SC hanya menambahkan entri registri yang diperlukan untuk layanan - jika file yang Anda tentukan bukan layanan exe yang valid, ia tidak akan mengubahnya menjadi satu.

Mengocok
sumber
2

dari: posting ini di forum technet: http://social.technet.microsoft.com/Forums/en-US/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

Inilah yang harus dilakukan ...

Pada saat posting ini, tidak ada Alat Kit Sumber Daya Windows Server 2008, jadi dapatkan "srvany.exe" dari "Alat Kit Sumber Daya Windows Server 2003" dan salin ke lokasi yang sesuai di server Win2008 Anda (mis. C: \ Windows \ System32 \). Gunakan "sc" untuk membuat layanan baru yang meluncurkan "srvany" (mis. Sc buat MyService binPath = C: \ Windows \ System32 \ srvany.exe DisplayName = "Layanan Kustom Saya") Menggunakan RegEdit: buat kunci "Parameter" untuk Anda service (mis. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MyService \ Paramaters \) Menggunakan RegEdit: di dalam kunci "Parameter" yang baru dibuat, buat nilai string yang disebut "Aplikasi" dan masukkan path lengkap ke aplikasi yang ingin Anda jalankan sebagai sebuah layanan. (Tidak perlu mengutip.)

Dan itu harus dilakukan.

Catatan: beberapa aplikasi menyimpan pengaturannya di sarang pengguna, bukan di bawah HKEY_LOCAL_MACHINE, jadi Anda harus menjalankan aplikasi untuk mengkonfigurasinya, dan kemudian mengonfigurasi layanan agar berjalan sebagai pengguna itu.

pengguna1977194
sumber
2

coba ini ... itu berhasil untuk saya ..

sc create ServiceTest binpath= "C:\Windows\System32\cmd.exe /C C:\ServiceTest\Jenkins-Slave.bat"
Kushal Gangan
sumber
Itu tidak bekerja untuk saya juga! Kesalahan yang sama dengan OP - Tidak dimulai tepat waktu.
Ravindra HV
Ditto - tidak bekerja.
Spedge
0

Saya menemukan hal ini. Berikut adalah alat yang disebut Bat_To_Exe_Converter. Sangat mudah untuk mengkonversi file .bat menjadi file .exe. Cobalah. Unduh pengunduh terlebih dahulu dan itu akan mengunduh Bat_To_Exe_Converter secara otomatis. Itu benar-benar membantu saya untuk membuat layanan yang menjalankan file bat saya melalui .exe. http://download.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad0

Ilya
sumber
Selamat Datang di Kesalahan Server! Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Scott Pack
0

Saya menemukan dua opsi lain yang tidak ingin Anda raih untuk dompet Anda.

Anda dapat memiliki scpeluncuran srvanyyang kemudian menunjuk ke program Anda. (ada posting forum yang tidak bisa saya tautkan karena saya tidak punya cukup rep di sini meskipun saya lakukan di StackOverflow - menggerutu)

Berikut adalah langkah-langkah yang digunakan oleh poster asli:

  1. Gunakan scuntuk membuat layanan baru yang diluncurkan srvany(mis. sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service")
  2. Menggunakan RegEdit: buat Parameterskunci untuk layanan Anda (mis. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\)
  3. Menggunakan RegEdit: di dalam Parameterskunci yang baru dibuat , buat nilai string yang disebut Applicationdan masukkan path lengkap ke aplikasi yang ingin Anda jalankan sebagai layanan. (Tidak perlu mengutip.)

Jika itu tampak seperti sedikit peretasan , maka Anda dapat membangun layanan .NET untuk meluncurkan proses Anda. Jika Anda ingin melewati beberapa langkah, berikut ini adalah layanan .NET open source yang dapat meluncurkan proses umum:

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

Tweak untuk kebutuhan Anda, tetapi itu akan melakukan sebagian besar dari apa yang Anda inginkan di luar kotak.

databyte
sumber
Dan apakah srvany yang Anda sebutkan, yang dari Win2k3 yang tidak memiliki versi yang didukung untuk Win2k8?
LarsH