Chạy một phiên màn hình khi khởi động từ RC.local


9

Tôi đang cố gắng chạy một màn hình tách rời dưới một người dùng cụ thể trong RC.local khi khởi động. Mã dưới đây là những gì tôi có cho đến nay, nhưng nó không làm việc cho tôi. Phần su dường như đang cho tôi một lỗi.

su - username -c /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'

Câu trả lời:


13

Tôi nghĩ rằng cả hai -ctham số ( subash) sẽ phải được trích dẫn ở mức tối thiểu.

su - username -c "/usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'"

Cũng -dự kiến ​​là cuối cùng và có thể không được mong muốn ở đây (xem man su).


Một vài nhận xét nữa. sudo có thể là lựa chọn tốt hơn cho lệnh one-shot như của bạn, nhưng không nhất thiết là:

sudo -iu username /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'

Cụ thể, bạn có thể sử dụng một mức độ trích dẫn ít hơn với sudo.

Một điều bạn muốn cẩn thận là thực thi các lệnh mà không có đường dẫn tuyệt đối trong ngữ cảnh đặc quyền. Điều này giữ cho su(hoặc sudo) nhưng cũng cho đường dẫn đến bashtrong lệnh của bạn. Bạn đang làm điều đó đúng với screen.

Chỉ cần thử nghiệm sau đây và nó hoạt động độc đáo. Tôi nghĩ -vấn đề chính trong dòng ban đầu của bạn:

/bin/su username -c "/usr/bin/screen -dmS test bash -c '/home/username/test.sh; exec bash'"

Nhận xét ác: tại sao bạn không tmuxthử? Gần đây tôi đã chuyển đổi và không bao giờ nhìn lại. Điều duy nhất tôi cần thay đổi ngay lập tức là tổ hợp phím tiền tố tmuxmặc định là Ctrl+ B- trở lại + screencủa GNU .CtrlA

Nó cho phép chia cửa sổ của bạn thành một số lượng gần như tùy ý (theo chiều dọc chiều ngang) và định dạng tệp cấu hình của nó (bao gồm cả định dạng cho mệnh giá) thực sự dễ hiểu đối với con người. Tất nhiên tmuxlà tốt như screenkhi bạn chỉ muốn chạy một số chương trình / tập lệnh ban đầu không được viết dưới dạng daemon trong nền. Tuy nhiên, nếu bạn có ý định tương tác với bộ ghép kênh đầu cuối, tôi nhiệt liệt khuyên bạn nên tmux.


Tôi sẽ thử cái này trong một vài cái. Kịch bản tôi đang chạy sử dụng các đường dẫn tuyệt đối, vì vậy bạn muốn giới thiệu suhay sudo?
ATLChris

1
sudokhông phải là một lựa chọn tốt nếu chạy từ RC.local nơi bạn đã root, vì bạn sẽ bỏ lỡ một vỏ đăng nhập. Bên cạnh đó, hãy xem /etc/init/tty1.conf- thay thế [a] getty bằng màn hình ở đây.
thủy thủ

@aquaherd: đó là những gì tôi đã nghĩ khi viết nhưng không nhất thiết phải như vậy . Manh mối, thực sự, là trong thông thường sudo su -... sudo(superuser do), su(người dùng chuyển đổi) ... ý tưởng hay về .conf
0xC0000022L

1
Tôi phải nói rằng, tôi đang + 1 bài đăng này chỉ vì nhận xét xấu xa của bạn. Tôi thích nó! Đó là một sự thay thế tuyệt vời cho màn hình, vì người ta có thể buộc nó bắt đầu một phiên mới.
Nhà vật lý lượng tử

@aquaherd sudocó thể bắt đầu một vỏ đăng nhập tốt bằng cách sử dụng -i.
muru


1

Đây là những gì tôi đã sử dụng, tôi thấy nó là sạch nhất và đơn giản nhất (bản thân tôi đã thử nghiệm):

Thay thế "người dùng" bằng người dùng để chạy nó dưới dạng. Thay thế "nameyouchoose" làm tên của phiên màn hình Thay thế "/script/start.bash" vào đường dẫn của tập lệnh của bạn.

/usr/bin/sudo -u user /usr/bin/screen -dmS nameyouchoose /script/start.bash

Nguồn: http://realtechtalk.com/How_to_start_screen_in_bash_script_or_from_etcrclocal_on_startup_as_a_specific_user-1980-articles

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.