2009-04-30 29 views
5

Ứng dụng Windows 32-bit tương tác của tôi (giờ chuyển từ Delphi [Ent] 2007 sang 2009) sử dụng các tương tác dòng lệnh để sinh ra các tiến trình con thực hiện các nhiệm vụ tốn nhiều tính toán, lần lượt viết các tệp văn bản mà ứng dụng cha mẹ phân tích cú pháp phân tích - dẫn đến hiển thị đồ họa tương tác của các kết quả.Làm thế nào để sinh ra quá trình Linux từ ứng dụng Windows?

Tôi có quyền truy cập vào một cụm Linux đa bộ xử lý (nhiều người dùng) (qua ssh) và muốn tắt tải trọng nặng lên cụm đó. Câu hỏi của tôi là làm thế nào để sinh ra các quy trình trong Linux từ ứng dụng Windows của tôi. Tôi có thể hình dung sử dụng FTP an toàn để đặt và nhận các tập tin, nhưng không chắc chắn làm thế nào để sinh ra các tiến trình con trong Linux.

Một số khách hàng tiềm năng để đọc thêm sẽ tốt - nhưng mã/mã giả sẽ là lý tưởng. Tôi có thể tưởng tượng rằng điều này có thể được nhiều hơn về tương tác Windows-Linux hơn Delphi.

Trả lời

6

nếu bạn có quyền truy cập vào ssh, một tùy chọn là phát hành lệnh thông qua đó. Ví dụ:

ssh [email protected] ls -l ~ 

sẽ trong thiết bị đầu cuối ssh hiển thị các tệp trong thư mục chính của người dùng. Tôi không chắc đây có phải là điều bạn thực sự muốn hay không. Nhưng nó có thể sẽ hoạt động.

Nếu bạn làm điều này, bạn gần như chắc chắn muốn thiết lập SSH password less logins

Tuy nhiên, Một giải pháp lý tưởng hơn sẽ có khả năng được thiết lập một daemon trên hộp linux mà công việc duy nhất là để chạy các nhiệm vụ chạy dài cụ thể trong nền và cho phép bạn tìm nạp kết quả sau.

+0

Tôi không biết về kiểu lệnh từ xa đó - dễ sử dụng, dù sao đi nữa. – Argalatyr

5

Bạn sẽ phải cài đặt một thứ gì đó trên máy Linux để chạy quy trình. Bạn có thể tìm thấy một số loại API phân nhóm hoặc công việc gửi hàng loạt mà bạn có thể cài đặt và truy cập từ Windows. Bạn có thể phải mã một máy chủ tùy chỉnh. Bạn có thể chạy mọi thứ trên ssh nếu bạn có thể lái một quá trình ssh từ Windows và nếu bạn đã cài đặt sshd ở phía Linux. Nhưng ưu tiên của tôi là viết một webservice hoặc script CGI đơn giản ở phía Linux được thiết kế để lấy các đối số và dữ liệu của bạn và trả về kết quả trên http cũ (hoặc https là trường hợp có thể).

Cách này hay cách khác, điều này sẽ bao gồm nhiều hơn là chỉ mã hóa ở phía Windows.

+0

Tôi đồng ý rằng đây có lẽ là giải pháp lý tưởng, nhưng khi bạn đề xuất nó trình bày một chút về đường cong học tập cho tôi - đó có thể là một điều tốt trong dài hạn! – Argalatyr

+2

+1 Sử dụng máy chủ tùy chỉnh có nhiều lợi thế. Đặc biệt là (tùy thuộc vào ngôn ngữ được sử dụng để viết nó) các công cụ có thể được viết và gỡ lỗi trên Windows (cục bộ), và sau đó được triển khai trên nhiều nền tảng khác nhau, thậm chí không có sshd. Nếu bạn sử dụng FPC hoặc Mono bạn có thể sử dụng kiến ​​thức Pascal/Delphi của bạn, vì vậy bạn có một khởi đầu. Nó cũng có lợi ích là kiểm soát quá trình và đọc/ghi dữ liệu sử dụng cùng một cơ chế. Dễ dàng mở rộng trên các nút máy chủ đa bộ xử lý. – mghie

+1

Argalatyr - bạn không phải mã máy chủ tùy chỉnh sớm, bạn phải cài đặt nginx hoặc lighttpd và thiết lập chúng để gọi các ứng dụng công nhân của bạn tại đường dẫn nhất định thông qua giao diện CGI hoặc FastCGI. Máy chủ sẽ quan tâm đến việc chạy nhiều ứng dụng công nhân và đóng chúng khi không cần thiết nữa. Tôi nghĩ bạn nên học nginx hơn là ssh. IF dựa trên văn bản HTTP sẽ thổi phồng dữ liệu, sau đó HTTP hỗ trợ Zip/Giải nén trong suốt nếu cả thư viện máy khách và máy chủ đều có khả năng. –

5

Tôi sẽ tải xuống gói "putty" đầy đủ.

Cũng như thiết bị đầu cuối vỏ bảo mật tuyệt vời, nó bao gồm PSCP để truyền tệp một cách an toàn và CẤM để thực thi lệnh từ xa qua SSH.

Gợi ý: bạn sẽ cần phải thiết lập cấu hình khóa công khai/riêng tư đầy đủ để PLINK hoạt động mà không có dấu nhắc mật khẩu gây phiền nhiễu. Có một hướng dẫn hữu ích http://unixwiz.net/techtips/putty-openssh.html>tại đây.

+0

Tôi đang sử dụng putty nhưng đã bỏ qua plink - rất hữu ích, cảm ơn. – Argalatyr

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