Создайте сеанс Screen с помощью скрипта bash, используя crontab

Я хочу, чтобы файл .jar запускался при каждой загрузке сервера (мы используем VPS), поэтому я отредактировал crontab, используя crontab -e, а затем добавил @reboot bash /home/bash/startserver.sh. Но я даже не дошел до того, что сценарий работает вообще.

Вот мой сценарий:

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

Причина, по которой мне нужно использовать screen, заключается в том, что когда я запускаю bukkit.jar, он переходит в консоль, где я могу вводить больше команд для этой программы ( Я уверен, что вы все знакомы с Minecraft и его серверами на этом сайте, хотя, ха-ха), но мне нужно иметь возможность выполнять другие команды как root и для других программ, пока он работает, и даже закрыть мой сеанс PuTTY.

Единственная проблема заключается в том, что при запуске этого сценария он создает сеанс экрана, но его идентификатор не указан в в screen -ls, так как идентификатор пуст. Скорее я должен пойти в /run/screen/S-root, чтобы найти идентификатор, а затем использовать типичный screen -X -S $name quit на нем.

Может быть, это даже невозможно, или, может быть, на самом деле есть более простой способ сделать это (я бы хотел проще), но я не могу понять, почему это не работает. И если это возможно, возможно ли присоединиться к сеансу с screen -S bukkit при запуске сценария bash? (Думаю, несколько вопросов, но большое спасибо за вашу помощь! (Скобки))

8
задан 14.05.2020, 18:00

2 ответа

Экран "Пуск" в отдельном режиме, и заставляет его выполнить Вашу команду в нем:

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

Вы могли бы хотеть создать специализированный сценарий bukkit.sh:

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

Так, чтобы, если сценарий становится более сложным, Вы не писали длинную линию для screen, и таким образом, эти screen команда может остаться такой же, просто:

screen -d -m -S bukkit path/to/bukkit.sh
14
ответ дан 14.05.2020, 18:01
  • 1
    Я пытался делать обе опции, ту с одним более длинным файлом, и затем ту с двумя отдельными файлами, но теперь экранную сессию isn' t создаваемый вообще. I' ve пытался выполнить команды непосредственно из командной строки, но этого didn' t работают также..:/ – Tomáš Zato 14.05.2020, 18:01
  • 2
    Вы получаете сообщение об ошибке или что-то? Сначала доберитесь bukkit.sh сценарий, работающий над командной строкой. Затем, проверьте это screen -S bukkit path/to/bukkit.sh работы. Затем, проверьте это screen -d -m -S bukkit path/to/bukkit.sh работы. Наконец, крон установки. Попробуйте самую простую вещь сначала и сделайте небольшие шаги, таким образом, Вы понимаете, какой шаг повреждается. Скажите мне, что, и сообщение об ошибке Вы добираетесь, если Вы нуждаетесь в помощи. – Abadaba 14.05.2020, 18:01

Вы должны update-rc.d следующим образом для включения сервиса на начальную загрузку:

# update-rc.d cron defaults
1
ответ дан 14.05.2020, 18:01
  • 1
    @JacobLarson Добро пожаловать.. It' s лучше для маркировки как ответ и upvote, если это помогает Вам – ceving 14.05.2020, 18:02

Теги

Похожие вопросы