2013-01-14 32 views
10

Tôi đang cố gắng thực thi một tập lệnh trên máy chủ từ xa bằng cách sử dụng phiên màn hình tách rời. Tôi đã thử ra các example Fabric gives và tiếc là không thể làm cho nó hoạt động.Không thể lấy ví dụ về phiên màn hình tách rời của Fabric để làm việc

from fabric.api import run 

def yes(): 
    run('screen -d -m "yes"') 

Thi fab yes trên máy tính địa phương của tôi kết nối một cách chính xác nó vào máy chủ từ xa và nói rằng các lệnh đã được chạy, tuy nhiên không có gì được thực hiện trên máy chủ từ xa. Đang thử screen -d -m "yes" trên cả hai máy hoạt động như mong đợi.

Nếu có ai có thể chỉ ra những gì tôi đang làm sai, tôi rất cảm kích điều đó. Ngoài ra, trên một mặt lưu ý, tại sao có dấu ngoặc kép xung quanh có trong lệnh? Nó sẽ hoạt động mà không có dấu ngoặc kép? Cảm ơn!

Trả lời

14

run('screen -d -m yes; sleep 1') hoạt động.

Không chắc chắn Vải hoặc màn hình có bị đổ lỗi cho hành vi này hay không.

4

Mặc dù câu trả lời AVB hoàn hảo Tôi sẽ thêm một mẹo nhỏ có thể giúp một người như tôi. Nếu bạn muốn chạy nhiều lệnh, hãy đặt chúng vào một tệp thi hành.

này sẽ không làm việc:

run('screen -d -m "./ENV/bin/activate; python run.py; sleep 1"')

Vì vậy, tạo một file run.sh:

#!/bin/bash 
source ENV/bin/activate 
python run.py 

Và sử dụng nó như run('screen -d -m ./run.sh; sleep 1')

+6

tại sao là "sleep 1;" ở đó? – arikg

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