Làm thế nào để bắt đầu một tập tin kịch bản khi khởi động?


7

Tôi đang chạy một máy chủ minecraft nhỏ.

Tôi muốn Lubfox thực thi đoạn script sau khi máy chủ khởi động. KHÔNG đăng nhập và KHÔNG khởi động lại (trừ khi nó bắt đầu tất nhiên).

Kịch bản hiện được đặt tại:

/home/mc/server/craftbukkit.sh

Tôi có thể tự khởi chạy tập lệnh bằng cách chỉ cần vào thư mục và gõ ./craftbukkit.sh. Nhưng tôi muốn tắt kịch bản khi máy khởi động.


Đó là một daemon hay kịch bản một lần?
cúc

@ warl0ck: daemon. craftbukkit là tên của máy chủ và bao gồm một tập lệnh shell để thực thi nó như là một ứng dụng java.
Matthew Scharley

Câu trả lời:


5

Tôi chạy một máy chủ minecraft từ một thiết bị đầu cuối debian, và đây có lẽ là cách sai để làm điều đó, nhưng nó hoạt động. Đầu tiên, sudo apt-get install screensau đó lưu tập lệnh sau dưới dạng /etc/init.d/minecraft:

#!/bin/bash
case "$1" in
  start)
    screen -S minecraft /home/mc/server/craftbukkit.sh
    echo "Server started on screen minecraft"
    ;;
  stop)
    screen -X -S minecraft kill
    echo "Server shutting down"
    ;;
  *)
    echo "Usage: /etc/init.d/minecraft {start|stop}"
    exit 1
    ;;
esac

exit 0

Bây giờ, chạy các lệnh sau với quyền root:

update-rc.d -f minecraft defaults

Điều này sẽ làm cho máy chủ minecraft chạy ở chế độ nền khi hệ thống khởi động. Để xem giao diện điều khiển, chạy screen -x minecrafttrong một thiết bị đầu cuối. Để thoát khỏi bàn điều khiển, nhấn Ctrl + A và sau đó D.


Nếu điều này không thành công với bạn, bạn có thể dọn sạch bằng cách xóa các tệp sau: /etc/init.d/minecraft /etc/rc0.d/K01minecraft /etc/rc1.d/K01minecraft /etc/rc2.d/S01minecraft /etc/rc3.d/S01minecraft /etc/rc4.d/S01minecraft /etc/rc5.d/S01minecraft /etc/rc6.d/K01minecraft /etc/rcS.d/S01minecraft
suchipi

Tôi chắc chắn có một cách dễ dàng hơn để thiết lập các liên kết tượng trưng, ​​nhưng tôi đã không sử dụng Ubuntu trong một thời gian. Đây là cách tiếp cận đúng mặc dù.
Matthew Scharley

@MatthewScharley update-rc.d là cách làm đúng với các tập lệnh init kiểu cũ
daisy

Đôi khi update-rc.d phàn nàn về tập lệnh init này, nhưng tôi không biết về tùy chọn -f. Cảm ơn, @ warl0ck
suchipi

1
Các tập lệnh initpp @ppumkin được chạy dưới quyền root. Khi tôi sử dụng điều này trong quá khứ trên máy chủ minecraft của riêng tôi, mọi thứ đều sống trong / root / minecraft.
Thatipi

6

Trên Ubuntu mới nhất, bạn nên làm như thế này, tạo /etc/init/bukkit.conf(bất cứ thứ gì .conf),

description     "Some java server"
author          "Moi <moi@x.com>"

start on runlevel [2345]   # change start / stop level if needed
stop on runlevel [016]

pre-start script
   echo "script is abort to start"
end script

exec /path/to/script param1 param2

post-start script
   echo "script is started" # if you needed any post-start hack
end script

Thêm thông tin ở đây.


0

trong ubfox / Lubfox nên có một mục menu gọi là "ứng dụng khởi động". Trên máy chủ Ubuntu của tôi, nó nằm trong menu 'system> Preferences> startup application'. Đó là trong gnome nhưng nó phải là smiler. Chọn nút thêm và đặt tên như minecraft và đảm bảo hộp đã chọn để bắt đầu.

đây có thể không phải là một giải pháp linux lõi cứng nhưng nó cung cấp một cách dễ dàng để xem nó có được bật hay không và tắt / bật nó khi bạn muốn.


Thật không may, điều này không khởi động tập lệnh khi khởi động, chỉ khi bạn đăng nhập.
daniel kullmann

đúng nhưng sẽ cho một phản ứng đơn giản như thường làm khi nói đến các biến thể của Ubuntu hoặc như tôi gọi chúng là các cửa sổ của thế giới Linux.
Joe

0

Docker Tôi thích tạo Dockerfile và chạy nó với --restart = always tag

Nếu bạn muốn chạy tập lệnh shell của mình khi khởi động , hãy sử dụng crontab của unix Rất dễ sử dụng và bạn có thể định cấu hình trong vài phút

  1. Chỉnh sửa crontab chạy sau đây thay thế "NGƯỜI DÙNG" bằng người dùng thời gian chạy mong muốn của bạn cho quy trình nút. Nếu bạn chọn một người dùng khác ngoài chính mình, bạn sẽ phải chạy nó với sudo.

    $ crontab -u NGƯỜI DÙNG -e

  2. Khi ở trong trình chỉnh sửa, thêm dòng sau:

    @reboot sh /home/mc/server/craftbukkit.sh

  3. Lưu và xác nhận tập tin được lưu bằng lệnh kiểm tra số 1 một lần nữa

    Lưu ý: Theo tôi, bạn nên sử dụng đường dẫn đầy đủ trong tệp crontab để ngăn chặn sự cố

Bạn có thể tham khảo URL này tham khảo Ubuntu Cron HowTo

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.