"Layanan mulai bersih" dan "mulai sc". Apa bedanya?

70

Layanan dapat dihentikan dan mulai menggunakan dua perintah di Command Prompt Shell.

  1. layanan mulai bersih "beberapa layanan"
  2. sc mulai "beberapa layanan"

apa perbedaan antara perintah-perintah ini?

Starx
sumber

Jawaban:

81

Di Windows NT, kedua perintah mengakses Manajer Layanan yang sama. Perbedaannya terutama pada bagian yang terlihat pengguna:

  • net lebih tua - dari zaman MS-DOS dan OS / 2, pada kenyataannya.

    schanya muncul dengan Windows NT (tidak yakin versi mana) .

  • net hanya dapat memulai, menghentikan, dan menjeda layanan.

    sc memiliki kontrol yang lebih canggih, dapat meminta negara, membuat dan menghapus layanan, mengubah konfigurasi dan keamanannya: sc config beep start= demand

  • net hanya bekerja secara lokal.

    sc dapat digunakan melalui jaringan: sc \\snow start rpcapd

  • net menerima nama tampilan: net start "Windows Firewall"

    sc selalu membutuhkan nama layanan: sc start SharedAccess

grawity
sumber
82

Jawaban Grawity tentu saja membantu, tetapi saya menemukan perbedaan mendasar antara perintah-perintah yang dirinci pada http://cbfive.com/command-line-service-management-net-v-sc/ . Secara khusus, halaman ini mencatat bahwa kedua perintah ini berbeda dalam pengaturan waktunya : "net" sinkron dan "sc" asinkron.

SC mengirimkan kontrol ke layanan dan kemudian kembali ke command prompt. Ini biasanya menghasilkan SC START mengembalikan layanan dalam status START_PENDING. NET MULAI akan menunggu layanan itu mulai datang ke keadaan dimulai sepenuhnya sebelum kembali kontrol pada command prompt.

...

[L] Seperti SC START, SC STOP tidak menunggu layanan berhenti dan akan sering kembali ke sana STOP_PENDING untuk banyak operasi berhenti layanan. BERHENTI BERSIH di sisi lain akan menunggu layanan berhenti sebelum kembali ke prompt perintah.

...

NET dan SC memiliki gagasan berbeda tentang apa yang mereka anggap sebagai syarat keberhasilan. Pertanyaan yang diajukan SC untuk menentukan apakah itu berhasil adalah, "Apakah saya berhasil mengirim stop control ke layanan?" NET menanyakan pertanyaan, “Apakah layanan yang saya coba hentikan, kembalikan yang berhasil dihentikan?” Jika ya, maka itu memenuhi syarat. Jika tidak, apa pun alasannya, maka NET gagal dalam kondisi sukses

Mattias Andersson
sumber
1
Detail yang menarik, yang ini. Dapat berguna untuk mengetahui kasus penulisan skrip (% ERRORLEVEL% variabel). Terima kasih.
Sopalajo de Arrierez
1
jawaban ini sangat membantu bagi saya karena saya mengalami kesalahan skrip berselang mencoba membersihkan direktori layanan setelah menghentikannya karena itu tidak sepenuhnya berhenti.
johntrepreneur
saya ingin menggunakan "sc config", apakah asinkron juga? apakah ada cara agar file batch menunggu hingga tugas benar-benar selesai?
peter
3

Untuk apa nilainya, saya menemukan sc start / stop lebih dapat diandalkan daripada mulai bersih / berhenti. Kadang-kadang mulai bersih / berhenti menyebabkan layanan macet dalam keadaan Memulai / Menghentikan sedangkan ini belum pernah terjadi kepada saya dengan sc start / stop. Gejala start / stop net cenderung terjadi lebih sering jika layanan terbunuh (melalui taskkill), misalnya mencoba memulai layanan dengan net start setelah taskkill.

Jay
sumber
2

Kiri untuk mengatakan bahwa jika rutinitas layanan OnStart () terlalu lama, NET STARTkirim perintah berhenti ke layanan dan kembalikan kesalahan berikut:

Layanan ServiceName mulai ........

Layanan ServiceName tidak dapat dimulai.

Layanan tidak melaporkan kesalahan.

Bantuan lebih lanjut tersedia dengan mengetik NET HELPMSG 3534.

Ini terjadi walaupun layanan telah dimulai dan berhenti dengan sukses !!

Saya juga menemukan posting ini di sini, yang mungkin menarik: Layanan tidak dapat dimulai

Lumo
sumber