Điểm:0

Cách tạo tập lệnh sh để chạy tập lệnh sh khác với Phiên màn hình hoặc phiên Tmux

lá cờ co

Tất cả những gì tôi muốn là tạo một tập lệnh bash chạy một tập lệnh bash khác trong một thư mục khác, nhưng với một phiên màn hình tách rời. Ngoài ra, nó nên được thực thi với tư cách là người dùng không phải root. Đây là những gì tôi đã làm:

#!/bin/sh
cd /bot/ && màn hình -S Bot -d -m ./bot.sh
chmod +x script.sh

Sau khi chạy nó với ./script.sh, nó không báo lỗi cho tôi, nhưng không có phản hồi.

Ngoài ra tôi đã thử với:

#!/bin/sh
màn hình -S Bot -d -m -c "cd bot" && ./bot.sh

Và đưa ra lỗi này: ./script.sh: dòng 1: bot.sh: Không có tệp hoặc thư mục như vậy

Tôi cũng có một câu hỏi nhỏ: làm cách nào tôi có thể tạo một tập lệnh để theo dõi trong phiên này để chạy lại tập lệnh đó nếu phiên hoặc bot kết thúc? Cảm ơn trước.

vanadium avatar
lá cờ cn
Tại sao bạn muốn/cần cái này? Hãy cho chúng tôi biết bạn thực sự muốn gì, và chúng tôi có thể đưa ra một giải pháp tốt hơn nhiều so với những gì bạn đang nghĩ là giải pháp cho vấn đề của mình.
Alobar avatar
lá cờ co
Xin chào, tôi nghĩ vấn đề đã được giải quyết với tập lệnh Tmux. Và bạn nói đúng, tôi nên nói rõ ràng những gì tôi muốn. Tôi muốn tập lệnh này hoạt động khi khởi động với người dùng không phải root, nhưng cũng có khả năng khởi động lại vào phiên hoặc bot tự chấm dứt.
Điểm:1
lá cờ vn

Kịch bản này dựa trên một số giả định:

  1. Tôi đang sử dụng tmux thay vì màn hình

  2. Tập lệnh bạn muốn chạy bên trong tmux là /bot/bot.sh

Nên ./script.sh Tôi sẽ đề nghị như sau:

#!/bin/sh
sessname="Bot"

# Tạo phiên mới có tên "$sessname"
tmux phiên mới -d -s "$sessname"

# Chạy lệnh trong phiên "$sessname"
tmux send-keys -t "$sessname" "/bot/bot.sh" Enter

# Đính kèm phiên "$sessname"
#tmux đính kèm -t "$sessname"

Đôi lời nhận xét:

  1. Bạn phải luôn sử dụng đường dẫn tuyệt đối trong tập lệnh (/bot/bot.sh, không phải ./bot.sh)
  2. Nếu bạn cũng muốn đính kèm vào phiên, hãy bỏ ghi chú dòng cuối cùng
Alobar avatar
lá cờ co
Rất cảm ơn bạn đã quan tâm. Bạn có thể giúp làm cho tập lệnh này chạy khi khởi động với người dùng không phải root và tìm cách theo dõi nó để khởi động lại khi nó kết thúc không?
Điểm:0
lá cờ in

Tôi đoán tùy chọn đầu tiên của bạn hoạt động tốt, nhưng màn hình sẽ chạy ở chế độ tách rời, vì vậy bạn sẽ không thấy đầu ra bên ngoài màn hình.

Kiểm tra màn hình -ls để xem chạy màn hình phiên và màn hình -r ID để gắn vào chúng.

Dù sao, bạn có thể sử dụng các đường dẫn tuyệt đối tốt hơn: /bot/bot.sh thay vì cd /bot/ && ./bot.sh:

#!/bin/sh
màn hình -S Bot -d -m /bot/bot.sh

Bạn sẽ có thể đính kèm vào màn hình với màn hình -r Bot.


Kịch bản thứ hai của bạn khá sai:

màn hình -S Bot -d -m -c "cd bot" && ./bot.sh
  • -c sẽ mong đợi một tập tin:

    -c tập tin ghi đè tệp cấu hình mặc định từ "$HOME/.screenrc" thành tệp.

  • Nó chạy ./bot.sh ngoài phiên vì && sẽ tách các lệnh của bạn. Vì vậy, bạn vẫn đang ở trong thư mục ban đầu của mình, nơi bot.sh không tồn tại. Do đó lỗi.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.