Як використовувати crontab для початку екранного сеансу?


12

Я хочу створити запис crontab, щоб він почався на екрані, запустив сервер ігор та від'єднався. Це в тому випадку, якщо сервер перезавантажився, і я хочу, щоб він автоматично запустив це для мене.

0 0 0 0 0 (команда)

має працювати при запуску.

Він запускає файл оболонки, розміщений за адресою ~ / cube / server.sh


Ви користувач на цій машині чи маєте доступ до скриптів init?
Corey S.


@Dennis: Так, мені це подобається. Але ми не можемо припустити, що ігровий сервер, на якому він працює, не має якоїсь консолі, до якої йому потрібно мати доступ (тобто завжди працює на передньому плані). Інакше чому б він турбувався екраном? Якщо, звичайно, він не обізнаний про ногуп та фоновому режимі.
Corey S.

Я користувач на цій машині.
Віктор

Відповіді:


15

Щось подібне повинно працювати. Цей приклад породжує екран і виконує "верх":

screen -d -m top

У своєму Crontab, як зазначено, ви хочете зробити щось подібне:

@reboot /usr/bin/screen -dmS gameserver-screen /opt/mycoolgame/bin/gameserver

Звичайно, якщо ігровий сервер вимагає встановлення "нормального" середовища, ви можете наблизитись до:

@reboot (. ~/.profile; /usr/bin/screen -dmS gameserver-screen /opt/mycoolgame/bin/gameserver)

1
що робить . ~/.profileчастина?
Віктор

Він насильно встановлює середовище для вступу в крон. Без цього ви просто отримаєте пару дуже конкретних записів. (Докладні відомості дивіться у людини на кронтабі)
Corey S.

У мене є .sh-файл, який виконує ігровий сервер, і чи буде це працювати? @reboot (. ~/cube; /usr/bin/screen -dmS gameserver-screen ./server.sh)
Віктор

Це, мабуть, найкращий спосіб зробити це. Якщо це працює, вам, ймовірно, не потрібно турбуватися про профіль, але якщо вам потрібен повний $ PATH тощо, ви завжди можете отримати джерело в .profile із сценарію server.sh.
Corey S.

5

Цього має бути достатньо ... бігати

$ crontab -e

Потім введіть:

@reboot screen -dmS Victor

Чи можете ви, будь ласка, спробувати пояснити, як ця команда "Віктор" стосується виконання сценарію - наприклад, сценарію, про який запитували ОП?
Патрік

1
-S тільки для назви сесії
atx


0

У мене була подібна ситуація, але через інші необґрунтовані обмеження я не міг використовувати кронтаб. У мене фактично був екран дзвінка inittab. (замінено деякі імена на незрозумілу інформацію):

XXX:5:respawn:/bin/su - useraccount -c "screen -D -m -c /home/xxxxxx/file.screenrc"

У файлі "file.screenrc" я встановлюю кілька варіантів:

sessionname obscuresessionname
multiuser on
cd
screen /home/xxxxxxx/programtostart

Таким чином, він розпочався під час завантаження, і якщо програма загинула або екран закрився, вона повторно породжує. Це, можливо, не вважалося звичайним, але мені довелося пропрацювати кілька незвичайних вимог до навколишнього середовища. Якщо нам потрібно було зняти його, нам доведеться прокоментувати цю лінію та вбити сеанс. Тоді, коли буде готовий повернути його назад, нерозмежувати та init q.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.