Điểm:0

Làm cách nào để tạo tập lệnh bash bắt đầu phiên màn hình có thể được tách ra và tiếp tục?

lá cờ eg

Điều này cực kỳ mới (kịch bản thực tế đầu tiên tôi đang viết) nhưng tôi đang cố gắng tự động hóa một số thứ với máy chủ minecraft của mình. Tôi đang tạo một tập lệnh bash sẽ được lên lịch theo thời gian tới

  1. chuyển bộ điều khiển cpu sang hiệu suất
  2. sử dụng java để khởi động tệp server.jar

Sử dụng các lệnh đầu cuối tôi đã nhập màn hình -r java -Xmx6800M -Xms6800M -jar server.jar nogui từ thư mục /home/user/minecraft nơi tôi đã lưu giữ tất cả các tệp có liên quan; Tôi đã giả định rằng tôi có thể thả lệnh này vào tập lệnh và nó sẽ bắt đầu một phiên màn hình có thể tách rời khỏi đó. Sử dụng bash để chạy tập lệnh bằng lệnh này sẽ bắt đầu mọi thứ như bình thường, nhưng bất cứ khi nào tôi tách bằng Ctrl+A Ctrl+D, nó báo "tách khỏi" và cung cấp ID phiên cho màn hình tách rời... nhưng sau đó sử dụng màn hình -r hoặc lệnh -ls cho biết không có màn hình nào được tiếp tục. Tôi biết rằng quá trình vẫn đang chạy vì tôi vẫn có thể tham gia máy chủ của mình.

Thực sự không chắc chuyện gì đang xảy ra ở đây nhưng nếu có cách viết tập lệnh sẽ chạy tệp server.jar của tôi trong một phiên có thể được tách ra và tiếp tục, tôi sẽ đánh giá cao một số lời khuyên.

bmellot2 avatar
lá cờ eg
Là một bản cập nhật, mặc dù dường như tôi không thể tìm thấy bất kỳ phiên màn hình nào để kết nối lại - sử dụng lệnh màn hình pkill sẽ kết thúc quá trình java do tập lệnh của tôi bắt đầu, vì vậy có lẽ * có * một phiên màn hình ở đâu đó? Tôi chỉ không thể tìm ra cách tìm và kết nối lại với nó sau khi tách ra
user10489 avatar
lá cờ in
Đây thực sự không phải là một câu hỏi về tập lệnh bash mà là về cách sử dụng màn hình. Bạn chưa bao gồm đủ thông tin để xác định vấn đề của bạn là gì. Bạn có thể sử dụng ps để kiểm tra xem công việc java của bạn có còn chạy hay không. Có thể bạn đang khởi động màn hình và cố gắng tiếp tục nó từ những người dùng khác hoặc thứ gì đó đang xóa các điểm cuối ổ cắm của màn hình.
user535733 avatar
lá cờ cn
Vì vậy, lệnh bắt đầu của bạn hoạt động và bạn có thể đính kèm lại vào một phiên đang chạy và bạn đã phát hiện ra trang hướng dẫn chi tiết cách liệt kê các phiên. Câu hỏi mà bạn muốn có câu trả lời là gì? Lời khuyên: Sử dụng systemd để khởi động/dừng máy chủ thay vì tập lệnh; nó dễ dàng hơn nhiều.
user10489 avatar
lá cờ in
Bạn không cần phải giết công việc để tìm thấy nó. Hãy thử ps hoặc pgrep -f . Trong Ubuntu, thư mục ổ cắm màn hình phải nằm trong /run/screen/ và bạn nên tìm ổ cắm màn hình ở đó.
user10489 avatar
lá cờ in
Có lẽ bạn đang bắt đầu với màn hình để bạn có thể tương tác với nó sau này. Mặt khác, tôi đồng ý với @ user535733 rằng bạn không nên sử dụng màn hình cho việc này mà nên sử dụng tập lệnh systemd.
user535733 avatar
lá cờ cn
Chà, màn hình vẫn cần thiết cho máy chủ Java - Tôi đã không thành công trong việc khiến máy chủ minecraft hoạt động mà không có nó. Tôi nhận thấy không cần phải tương tác với máy chủ đang chạy: Tất cả đầu vào có thể được thực hiện bởi quản trị viên trên máy khách và tất cả đầu ra đều được ghi lại. Những gì systemd làm là làm cho việc bắt đầu, dừng và kiểm tra trạng thái máy chủ trở nên cực kỳ dễ dàng, dễ viết tập lệnh và thống nhất với các dịch vụ khác.Công việc chính của Systemd là giám sát các dịch vụ, vì vậy cũng có thể sử dụng đúng công cụ cho công việc.
user535733 avatar
lá cờ cn
Lệnh bắt đầu của riêng tôi (trong tệp systemd `minecraft.service`) là `ExecStart=screen -s mc -d -m java -server -Xms512M -Xmx1024M -jar server.jar nogui`
bmellot2 avatar
lá cờ eg
Vâng, tôi nhanh chóng nhận ra rằng tôi có thể đã hiểu sai về điều này - ban đầu nghĩ rằng crontab là cách duy nhất để lên lịch công việc khi khởi động. Vừa quay lại sau khi thử hai lệnh bảo trì cơ bản của tôi khi khởi động lại trong crontab - cpupower vẫn hoạt động tốt nhưng tôi vẫn không thể khởi động máy chủ đúng cách... lệnh tôi có là ```@reboot screen -S minecraft java -Xmx6800M -Xms6800M -jar /home/filepath/server.jar nogui``` Giả sử nó không thành công có thể do các thư mục hoạt động khác với thư mục gốc? Hiện đang xem xét sử dụng systemd - đối số ```-server``` sau java là gì? Điều đó mới đối với tôi
bmellot2 avatar
lá cờ eg
"Vì vậy, lệnh bắt đầu của bạn hoạt động và bạn có thể đính kèm lại vào một phiên đang chạy và bạn đã phát hiện ra trang hướng dẫn chi tiết cách liệt kê các phiên. Bạn muốn có câu trả lời cho câu hỏi nào?" Lệnh bắt đầu hoạt động nhưng tôi không thể đính kèm lại vào phiên màn hình đang chạy sau khi tôi thoát khỏi nó - điều này rất lạ vì nó thậm chí còn cung cấp cho tôi số ID phiên nhưng sau đó không có gì xuất hiện khi sử dụng screen -r/-ls hoặc thậm chí ps/pgrep - f
lá cờ in
Tmux dễ tự động hóa hơn nhiều so với màn hình.

Đă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.