Mọi người luôn tìm kiếm những cách hiệu quả để quản lý các tác vụ hệ thống mà không cần rời khỏi terminal, ngay cả khi đang sử dụng Windows. Trên Windows, các service chạy ở chế độ nền để giữ cho hệ thống và ứng dụng hoạt động trơn tru. Thay vì mở Services Manager, nhiều người thích quản lý Windows service thông qua dòng lệnh. Trong hướng dẫn hôm nay, chúng ta sẽ khám phá các phương pháp này và xem cách bạn có thể quản lý các Windows service ngay từ terminal.
1. Quản lý Windows service bằng sc.exe
sc.exe là một công cụ dòng lệnh tích hợp để quản lý các Windows service. Công cụ này cho phép bạn cấu hình, truy vấn và kiểm soát các service trực tiếp từ terminal. Với sc.exe, bạn có thể kiểm soát hoàn toàn các Windows service mà không cần Services Manager đồ họa.
Kiểm tra trạng thái service bằng sc
Chúng ta có thể sử dụng lệnh sc query serviceName để kiểm tra trạng thái của một service cụ thể. Ví dụ, chúng ta chạy lệnh sc query MySQL80 để truy xuất thông tin chi tiết về service MySQL80, bao gồm trạng thái của service đó:

Hiện tại, MySQL không chạy trên máy.
Bắt đầu một service với sc
Để bắt đầu một service cụ thể bằng sc.exe, chúng ta có thể sử dụng lệnh sc start ServiceName. Ví dụ, chúng ta chạy sc start MySQL80 để bắt đầu service MySQL80. Để xác minh xem service đã bắt đầu thành công hay chưa, chúng ta có thể kiểm tra trạng thái của service bằng lệnh sc query MySQL80:

Dừng một service bằng sc
Bạn có thể dừng một service để giải phóng tài nguyên hệ thống. Ví dụ, lệnh sc stop MySQL80 dừng MySQL, có thể được xác minh bằng lệnh sc query MySQL80:

Tạo một service mới bằng sc
Chúng ta có thể tạo một service mới bằng lệnh sc create. Lệnh này yêu cầu chỉ định tên service, đường dẫn thực thi và loại khởi động. Ví dụ, để tạo một service mới có tên là "mte" sẽ tự động bắt đầu khi khởi động, hãy nhập:
sc create mte binPath= "C:\Users\HP\Desktop\Examples\Service.exe" start= auto

Cập nhật một service bằng sc
Chúng ta có thể sử dụng lệnh sc config để cấu hình một service hiện có. Ví dụ, để thay đổi kiểu khởi động thành thủ công, hãy chạy lệnh:
sc config serviceName start= demand

Xóa service bằng sc
Khi không còn cần đến service nữa, chúng ta có thể xóa vĩnh viễn khỏi Windows bằng lệnh:
sc delete srviceName

2. Quản lý Windows service bằng lệnh Net
Lệnh net trong Windows cho phép chúng ta quản lý các service từ dòng lệnh. Lệnh này cho phép người dùng bắt đầu, dừng, tạm dừng, tiếp tục và truy vấn các service mà không cần sử dụng Services Manager đồ họa.
Bắt đầu và dừng service bằng lệnh net
Chúng ta có thể bắt đầu hoặc dừng các Windows service bằng lệnh net start serviceName và net stop serviceName tương ứng:

Tạm dừng và tiếp tục service bằng lệnh net
Một số Windows service hỗ trợ tạm dừng và tiếp tục thay vì dừng hoàn toàn. Trong trường hợp đó, chúng ta có thể sử dụng lệnh net pause ServiceName và net continue ServiceName tương ứng:

Kiểm tra trạng thái service bằng lệnh net
Bản thân lệnh net không cung cấp cách trực tiếp để kiểm tra trạng thái của một service cụ thể, nhưng chúng ta có thể sử dụng lệnh này cùng với lệnh findstr để lọc kết quả. Ví dụ, để kiểm tra xem service đã chỉ định có đang chạy hay không, hãy nhập:
net start | findstr "ServiceName"

Nếu service đã chỉ định đang chạy, lệnh sẽ trả về tên của service đó; nếu không, sẽ không có đầu ra.
Quản lý service từ xa bằng lệnh net
Chúng ta có thể sử dụng lệnh net để quản lý service trên máy tính từ xa bằng cách chỉ định tên máy tính. Ví dụ, lệnh net start ServiceName /S RemotePC và net stop ServiceName /S RemotePC được sử dụng để bắt đầu hoặc dừng service trên máy tính từ xa.
3. Quản lý các service Windows bằng cmdlet PowerShell
PowerShell cung cấp khả năng kiểm soát nâng cao hơn đối với các service Windows bằng những cmdlet tích hợp như Get-Service, Start-Service, Stop-Service và Restart-Service. Các cmdlet này cho phép người dùng kiểm tra trạng thái của service, khởi động hoặc dừng service và thậm chí khởi động lại khi cần.
Các cmdlet PowerShell cung cấp đầu ra chi tiết, bao gồm trạng thái service, tên hiển thị và những service phụ thuộc. Các cmdlet này cho phép tạo script và tự động hóa, giúp quản lý hiệu quả nhiều service.
Tính linh hoạt và các tính năng mạnh mẽ của PowerShell khiến nó trở thành công cụ được quản trị viên quản lý service Windows ưa thích.
Nhận trạng thái service bằng cmdlet
Chúng ta có thể sử dụng cmdlet Get-Service -Name ServiceName để nhận thông tin chi tiết về service đã chỉ định. Ví dụ, lệnh sau trả về trạng thái của service MySQL80, hiển thị service đang chạy hay đã dừng:
Get-Service -Name MySQL80

Truy vấn service bằng cmdlet PowerShell
Chúng ta có thể sử dụng lệnh Get-Service để truy vấn các service dựa trên những tiêu chí cụ thể. Ví dụ, chúng ta có thể truy xuất tất cả các service đang chạy bằng lệnh:
Get-Service | Where-Object {$_.Status -eq 'Running'}

Bắt đầu và dừng service bằng cmdlet PowerShell
Chúng ta có thể bắt đầu hoặc dừng một service cụ thể bằng cmdlet Start-Service và Stop-Service tương ứng. Ví dụ, sử dụng lệnh PowerShell sau để bắt đầu, dừng và kiểm tra trạng thái của service MySQL80:
Start-Service -Name MySQL80
Stop-Service -Name MySQL80
Get-Service -Name MySQL80

Thay đổi loại khởi động service bằng cmdlet PowerShell
Các cmdlet PowerShell cho phép chúng ta cập nhật loại khởi động service. Ví dụ, chúng ta có thể chạy các lệnh cmdlet sau để cấu hình một service tự động khởi động cùng hệ thống, yêu cầu khởi động thủ công hoặc bị vô hiệu hóa tương ứng:
Set-Service -Name ServiceName -StartupType Automatic
Set-Service -Name ServiceName -StartupType Manual
Set-Service -Name ServiceName -StartupType Disabled
Các lệnh cmdlet này giúp quản trị viên quản lý hành vi service hiệu quả, đảm bảo những service thiết yếu khởi động khi cần, đồng thời ngăn các service không cần thiết chạy.
Quản lý service từ xa bằng cmdlet
PowerShell cũng cho phép quản lý các service trên máy tính từ xa bằng cách chỉ định tên của chúng. Ví dụ, lệnh Get-Service -Name ServiceName -ComputerName RemotePC truy xuất trạng thái của một service cụ thể đang chạy trên máy tính từ xa có tên RemotePC, cho phép quản trị viên giám sát các service từ xa.
Tương tự, lệnh Restart-Service -Name ServiceName -ComputerName serviceName cố gắng khởi động lại service đã chỉ định trên máy tính từ xa. Lệnh này đảm bảo service khởi động lại mà không yêu cầu truy cập trực tiếp vào máy. Tuy nhiên, quản lý service từ xa yêu cầu phải có quyền phù hợp và bật tính năng PowerShell remoting.