Một trong những việc tôi thấy mình làm thường xuyên hơn nhiều kể từ khi đi sâu vào IT là giám sát và kiểm tra trạng thái dịch vụ chạy trên máy tính khắp công ty.
Có cách tiêu chuẩn quản lý dịch vụ mà hầu hết người dùng vì nó nổi tiếng và khá dễ. Cách này bao gồm vào Điều khiển quản trị hoặc Control Panel, tìm tiện ích Services và làm những gì cần.
Nếu bạn muốn quản lý dịch vụ chạy trên máy tính hoặc server khác trên mạng, bạn vào Computer Management, kết nối máy từ xa, rồi quản lý dịch vụ đó.
Không có gì sai với cách tiếp cận này – thực tế quản trị hệ thống khắp nơi dùng tiện ích Windows tiêu chuẩn để quản lý hạ tầng doanh nghiệp. Nhưng, nếu bạn có thể giám sát, dừng và bắt đầu dịch vụ bằng cách gõ một dòng tại dấu nhắc lệnh thì sao?
Kiểm Soát Dịch Vụ Từ Dòng Lệnh
Bạn có thể cần dừng dịch vụ chạy trên máy khách để cài lại phần mềm. Hoặc bạn cần khởi động lại dịch vụ chạy trên server vì phần mềm không hoạt động đúng.
Cho đến nay, bạn có thể quản lý dịch vụ trên máy khách chạy trên mạng dùng tiện ích services tiêu chuẩn. Đó là công cụ Services bạn khởi động trong phần Administrative Tools của Control Panel.
Trong Admin Tools, bạn có thể vào trực tiếp công cụ Services, hoặc mở Computer Management nếu muốn truy cập máy khác trên mạng.
Để truy cập máy khác, chỉ cần bấm action, "Connect to Another Computer" và gõ tên mạng của máy tính.
Sau đó bạn có thể mở công cụ services.
Cách Dễ Hơn Quản Lý Dịch Vụ
Vậy, đó là cách dài. Cách ngắn và nhanh hơn là dùng lệnh "SC".
Bạn có thể quen lệnh NET. Lệnh SC gần như giống NET, trừ việc nó cũng có thể tạo dịch vụ, ngoài việc giám sát, dừng và bắt đầu chúng. Tốt nhất, bạn có thể chạy lệnh SC trên máy khác qua mạng (giả sử bạn có quyền admin).
Làm truy vấn SC trên một máy sẽ cho bạn tất cả dịch vụ cài đặt và có đang chạy không. Khi chạy lệnh "SC \\**tên-máy** query |more" – bạn sẽ nhận được kết quả như sau.
Như bạn thấy, nó cho trạng thái dịch vụ, loại dịch vụ và tham số khác. Cho bài tập này, chúng ta chỉ chú ý trạng thái dịch vụ.
Nếu bạn muốn liệt kê chỉ dịch vụ hiện không chạy (dừng), bạn chạy lệnh, "SC \\**tên-máy** query state= "inactive" |more"
Phần |more của lệnh làm đầu ra dừng trên mỗi màn hình để bạn cuộn.
Như bạn thấy, những dịch vụ đó đều dừng. Bây giờ, thay vì đào qua tất cả dịch vụ, nếu bạn biết tên dịch vụ, bạn chỉ cần chạy lệnh "SC \\**tên-máy** query **tên-dịch-vụ**"
Đó sẽ báo lại trạng thái hiện tại của chỉ dịch vụ đó. Để dừng dịch vụ từ xa, bạn chỉ cần chạy lệnh dừng, "SC \\**tên-máy** stop **tên-dịch-vụ**"
Kết quả sẽ hiện trạng thái "STOP-PENDING", nhưng sau vài giây, nếu truy vấn dịch vụ đó lại, bạn sẽ thấy nó không còn chạy. Bạn có thể bắt đầu bằng cách chạy cùng lệnh, nhưng thay "stop" bằng "start".
Tạo Script Truy Vấn, Dừng Hoặc Bắt Đầu Bất Kỳ Dịch Vụ Nào
Được, bây giờ bạn đã nắm cơ bản, đến lúc viết script sẽ dừng bất kỳ dịch vụ bạn muốn mà không cần nhớ chuỗi lệnh chính xác. Chúng ta làm bằng cách viết Windows Script đáng tin cậy, như sau.
Khi chạy script này, nó sẽ hỏi tên dịch vụ bạn muốn dừng hoặc bắt đầu.
Và sau đó là bạn muốn dừng hay bắt đầu dịch vụ.
Sử dụng lệnh ">> c:\temp\results.txt", nó xuất kết quả dừng/bắt đầu và lỗi ra file text để bạn xem lệnh có hoạt động không.
Khi tôi chạy script trên, tôi theo sau bằng truy vấn nhanh dịch vụ trước và sau chạy script.
Như bạn thấy, dịch vụ tôi dừng – helpsvc – đang chạy. Tôi chạy Windows Script dừng nó, truy vấn, và nó đã dừng.
Nếu bạn muốn sang trọng, bạn có thể thêm phần vào script xuất tất cả dịch vụ cài đặt trên PC ra file text để xem trước khi quyết định dừng/bắt đầu dịch vụ nào. Lệnh cho việc đó là "sc \\" & strComputer & " query > c:\temp\services.txt".
Như bạn thấy, lệnh SC có thể là cách khá mạnh mẽ và hiệu quả quản lý dịch vụ trên bất kỳ máy tính nào, và nếu bạn có tài năng với Windows Scripting, bạn thậm chí có thể tự động hóa quá trình để công việc dễ dàng hơn.
Bạn nghĩ lệnh SC có thể hữu ích cho bạn? Về script tự động chạy lệnh? Chia sẻ ý tưởng và suy nghĩ ở phần bình luận bên dưới.
Nguồn ảnh: Shutterstock