Tôi đang cố gắng buộc màn hình GNU tạo một thiết bị đầu cuối "ảo", mà không gắn vào nó, thực thi tập lệnh bên trong và KHÔNG chấm dứt phiên sau khi tập lệnh kết thúc.
Tôi đã thử nhiều kết hợp, bao gồm:
screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh
hoặc là
screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh
và không ai trong số họ làm việc. Tôi nhận được phiên mà không có tập lệnh thực thi, tập lệnh thực thi, nhưng phiên bị chấm dứt khi nó kết thúc hoặc tôi gặp lỗi "Không tìm thấy phiên màn hình".
Những gì tôi về cơ bản đang cố gắng làm là chạy trình nghe UDP, được viết bằng PHP và làm cho nó hoạt động theo vòng lặp infinte (không ngắt nghe). Có - Tôi có thể chạy tập lệnh PHP &
ở cuối, buộc PHP CLI chạy dưới dạng daemon. Vấn đề là, tôi đang sử dụng một mẩu rác được gọi là máy chủ (QNAP - không bao giờ, không bao giờ mua rác này!) Mà dường như đang bỏ qua điều này. Ngay khi tôi đăng xuất phiên SSH, tập lệnh dừng lại.
Vì vậy, screen
dường như là lựa chọn duy nhất. Nhưng tôi không thể hiểu, tại sao nó kết thúc phiên sau khi lệnh thực thi hoặc tập lệnh kết thúc?
EDIT : Tôi cũng đã thử ví dụ tìm thấy trên Internet:
screen -dmS name
screen -S name -p windowname -X stuff 'mc
'
Không thiếu! Sau khi đính kèm với nó ( screen -R name
) tôi thấy rằng Chỉ huy nửa đêm đã bị xử tử. Mặc dù ví dụ tác giả đã nói, nó sẽ được.
screen
đóng? BTW: Tôi vẫn không hiểu ý tưởng đằng sau! Nếu tôi gọi screen -dmS name
, tôi tạo một cửa sổ tách ra, cũng không còn gì để làm. Nhưng nó không tự động đóng! Nhưng khi tôi muốn thực thi một cái gì đó trong màn hình tách rời đó, nó sẽ kết thúc sau khi thực hiện xong. Tại sao? Tôi không thấy logic ở đây. Có thể có cửa sổ không làm gì, nhưng không thể có cửa sổ làm gì đó và sau đó không làm gì?
&
ở cuối), do máy chủ bị lỗi (QNAP), chúng bị chấm dứt khi phiên kết thúc (tôi đã nói, chúng không nên chạy trên Linux bình thường, nếu được thực thi với &
). Vì vậy, tôi không muốn làm bất cứ điều gì sau khi start_udp_listeners.sh
kết thúc, chỉ làm thế nào để ngăn chặn phiên bị chấm dứt. Miễn là không, trình nghe PHP của tôi vẫn hoạt động tốt.
screen
, bạn chỉ tạo một cửa sổ để chạy một lệnh duy nhất. Khi lệnh thoát, cửa sổ đóng lại vàscreen
không còn gì để làm, vì vậy nó thoát.