2014-05-18 16 views
6

Tôi có một ứng dụng nodeJS giao tiếp với một ứng dụng của bên thứ ba được cài đặt như một dịch vụ windows. Ứng dụng nodeJS của tôi yêu cầu dịch vụ này được chạy, tuy nhiên nếu một số trường hợp nó có thể không hoạt động.Node js bắt đầu và dừng các dịch vụ windows

Tôi đang cố gắng tìm kiếm một phương pháp để kiểm tra xem dịch vụ cửa sổ này có đang chạy không và nếu không khởi động nó. Sau nhiều ngày tìm kiếm tôi đã tìm thấy nhiều kết quả để chạy một ứng dụng nodeJS như một dịch vụ cửa sổ nhưng không phải là một cung cấp khả năng khởi động/dừng các dịch vụ windows đã được cài đặt.

Điều này có thể thực hiện được không? Tôi đã tìm thấy các công cụ như PSEXEC vì vậy tôi có thể làm cho nodeJS chạy một kịch bản như vậy nhưng nó sẽ là thích hợp hơn nếu nodeJS có thể thực hiện nhiệm vụ này nguyên bản.

Bất kỳ thông tin nào cho mục đích này sẽ rất hữu ích và tôi cảm thấy khó tin rằng những người khác không ở trong tình huống mà họ cũng cần làm điều này.

Stephen

Trả lời

3

Trong cửa sổ, từ một dòng lệnh bạn có thể gõ:

# Start a service 
net start <servicename> 

# Stop a service 
net stop <servicename> 

# You can also pause and continue 

Vì vậy, câu trả lời đơn giản là - sử dụng trẻ em quá trình để bắt đầu dịch vụ khi khởi động của máy chủ của bạn. Một cái gì đó như thế này:

var child = require('child_process').exec('net start <service>', function (error, stdout, stderr) { 
    if (error !== null) { 
     console.log('exec error: ' + error); 
    } 
    // Validate stdout/stderr to see if service is already running 
    // perhaps. 
}); 

EDIT: Tôi cũng thấy điều này nodejs module gọi là "windows-service". Có vẻ hứa hẹn cho những gì bạn đang cố gắng làm. Một số chức năng của nó được thực hiện trong C++, nơi nó cố gắng truy vấn Trình quản lý Dịch vụ Windows.

+0

Phát hiện, sử dụng quy trình con làm việc rất tốt. – ste2425

Các vấn đề liên quan