Tập lệnh có thể cho biết nếu nó đang được chạy từ trong màn hình GNU không?


10

Thỉnh thoảng chúng tôi có một quá trình chạy dài trên một máy chủ từ xa được khởi động thủ công. Thật không may, các kết nối internet bị chết, hạt nhân hoảng loạn và một loạt các thách thức khác có thể gặp phải bởi phiên ssh được sử dụng để kết nối và bắt đầu công việc.

Màn hình có vẻ như là một cách hoàn hảo để đảm bảo quá trình không bị gián đoạn. Tuy nhiên, dựa vào một người để luôn nhớ khởi động màn hình và sau đó chạy tập lệnh để bắt đầu quá trình là một vấn đề đang chờ để xảy ra. Có cách nào từ tập lệnh mà tôi có thể kiểm tra xem tập lệnh có được gọi từ bên trong màn hình không? Nếu đó là quá trình sẽ tiếp tục nếu không thì tập lệnh sẽ thoát với thông báo hướng dẫn người dùng chạy màn hình trước.


Câu trả lời:


11

Có một biến môi trường cho điều đó. Nếu nó đang được chạy trong màn hình, $TERMsẽ được screen. Nó đơn giản mà; chỉ làm một nếu trên nó. Ví dụ,

if [ $TERM != 'screen' ]; then echo foo; else echo bar; fi

sẽ dội lại thanh khi ở trong màn hình; foo khác.


2
Nó cũng có thể là screen-256colornếu người dùng đã cấu hình hỗ trợ 256 màu.
mgorven

hoặc màn hình bce trên các hệ thống được cài đặt byobu. echo $ TERM screen-
bce

7

Trong khi bạn đang làm việc với màn hình, tại sao không chạy tập lệnh với 'nohup'? Điều này cũng sẽ đảm bảo rằng nó tiếp tục chạy nếu bạn bị ngắt kết nối.

Nó xuất ra một tệp theo mặc định, vì vậy bạn có thể sử dụng các công cụ khác để theo dõi đầu ra tập lệnh nếu bạn muốn.


1
Trong khi chạy với nohup sẽ đạt được kết quả tương tự là đảm bảo quá trình tiếp tục chạy, tôi vẫn không gặp phải vấn đề tương tự ai đó có khả năng quên chạy tập lệnh với nohup? Hoặc có cách nào trong tập lệnh để đảm bảo 'nohup' được sử dụng hay tôi cần tạo tập lệnh bao bọc gọi tập lệnh gốc của tôi bằng nohup?
cclark

Vâng. Trong khi tôi yêu các padawans của mình (sysadins junior) như tôi yêu những đứa trẻ của tôi, chúng thường quên những thứ đó. Vì vậy, mọi thứ được gói lại để họ không phải nhớ những thứ cần nhập để thêm tiền tố vào các lệnh quan trọng.
Magellan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.