Tạo phiên màn hình với tập lệnh bash bằng contab


8

Tôi muốn một tệp .jar chạy mỗi khi máy chủ khởi động (chúng tôi đang sử dụng VPS), và vì vậy tôi đã chỉnh sửa crontab bằng cách sử dụng crontab -evà sau đó thêm @reboot bash /home/bash/startserver.sh. Nhưng tôi thậm chí đã không đi đến điểm mà kịch bản hoạt động cả.

Đây là kịch bản của tôi:

#!/bin/bash
screen -S bukkit
cd $HOME/server
java -jar bukkit.jar

Lý do tôi cần sử dụng screenlà vì khi tôi khởi động bukkit.jar, nó sẽ vào một bảng điều khiển nơi tôi có thể nhập thêm các lệnh cho chương trình đó (mặc dù tôi chắc chắn bạn đã quen thuộc với Minecraft và máy chủ của nó trên trang web này , haha), nhưng tôi cần có thể thực hiện các lệnh khác với quyền root và cho các chương trình khác trong khi nó đang chạy, và thậm chí đóng phiên PuTTY của tôi.

Vấn đề duy nhất là khi tập lệnh này được chạy, nó sẽ tạo ra một phiên màn hình, nhưng ID của nó không được liệt kê trong đó screen -ls, vì ID trống. Thay vào đó, tôi phải đi /run/screen/S-roottìm ID và sau đó sử dụng điển hình screen -X -S $name quittrên nó.

Có thể điều này thậm chí không thể, hoặc có thể thực sự có một cách đơn giản hơn để làm điều này (tôi thích đơn giản hơn), nhưng tôi không thể hiểu tại sao điều này không hiệu quả. Và nếu điều này là có thể, liệu có thể tham gia lại một phiên với screen -S bukkitkhi chạy tập lệnh bash không? (Tôi đoán nhiều câu hỏi, nhưng cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn! (Dấu ngoặc đơn))

Câu trả lời:


15

Màn hình bắt đầu ở chế độ tách rời và làm cho nó chạy lệnh của bạn bên trong nó:

screen -d -m -S bukkit bash -c 'cd $HOME/server && java -jar bukkit.jar'

Bạn có thể muốn tạo một tập lệnh chuyên dụng bukkit.sh:

#!/bin/bash -e
cd ~/server
java -jar bukkit.jar

Vì vậy, nếu tập lệnh trở nên phức tạp hơn, bạn không cần phải viết một dòng dài screenvà vì vậy screenlệnh có thể giữ nguyên, chỉ đơn giản là:

screen -d -m -S bukkit path/to/bukkit.sh

1
Tôi đã thử thực hiện cả hai tùy chọn, một với một tệp dài hơn và sau đó là một tệp có hai tệp riêng biệt, nhưng bây giờ phiên màn hình hoàn toàn không được tạo. Tôi đã thử chạy các lệnh trực tiếp từ dòng lệnh, nhưng nó cũng không hoạt động ..: /
Jacob Larson

Bạn có nhận được một thông báo lỗi hoặc một cái gì đó? Đầu tiên lấy bukkit.shkịch bản làm việc trên dòng lệnh. Tiếp theo, kiểm tra xem screen -S bukkit path/to/bukkit.shhoạt động. Tiếp theo, kiểm tra xem screen -d -m -S bukkit path/to/bukkit.shhoạt động. Cuối cùng, thiết lập cron. Trước tiên, hãy thử điều đơn giản nhất và thực hiện các bước nhỏ để bạn hiểu bước nào sẽ phá vỡ. Nói với tôi điều đó và thông báo lỗi bạn nhận được nếu bạn cần giúp đỡ.
janos

1

Bạn nên update-rc.dnhư sau để bật dịch vụ khi khởi động:

# update-rc.d cron defaults

@JacobLarson Bạn được chào đón .. Tốt hơn nên đánh dấu là câu trả lời và upvote nếu điều này giúp bạn
Maythux
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.