Я хотел бы иметь возможность запускать скрипт в отдельном сеансе экранной команды как отдельный пользователь, когда я запускаю скрипт .sh.

Вот что я думаю, что это может быть в сценарии:

#I am also starting xampp here, as that is what runs the webserver on this server
sudo /opt/lampp/lampp start 
screen sudo -u minecraft /home/minecraft/mc1/rtoolkit.sh
screen sudo -u minecraft /home/minecraft/mc2/rtoolkit.sh

Как вы можете видеть, в этом скрипте есть несколько примеров 'sudo'. Sudo требует, чтобы я ввел пароль, я планирую, чтобы этот скрипт автоматически запускался при запуске сервера. Другая проблема заключается в том, что на экране может быть приглашение к входу.

Дополнительная информация: Операционная система: Ubuntu server 12.04 LTS

2 ответа2

0

Просто позвольте пользователю minecraft начать саму сессию при запуске машины.

  1. Запустите sudo -u minecraft crontab -e для редактирования пользовательского crontab.

  2. Добавьте @reboot screen /home/minecraft/mc1/rtoolkit.sh чтобы cron запускал сеанс экрана для пользователя после перезагрузки системы.

Как обработать это приглашение к входу, зависит от самого приглашения. Без дополнительной информации на это будет трудно ответить, и, вероятно, у нее должен быть свой вопрос.

Чтобы ответить на ваши вопросы из комментариев:

  1. Нет, это не требует, чтобы вы вошли в систему как пользователь minecraft. Вы просто настраиваете его так, чтобы при запуске системы сама система позаботилась о запуске сеанса экрана от имени пользователя minecraft.

    Используя sudo -u minecraft , вы выполняете команду как пользователь minecraft. Итак, как только вы отредактировали таблицу cron пользователей, вы можете позже снова открыть сеанс экрана, выполнив sudo -u screen -r .

    Видите ли, сеанс экрана будет запущен пользователем Minecraft. Когда вы ранее запускали сеанс экрана самостоятельно, а затем внутри сеанса экрана запускали свой сценарий в качестве пользователя minecraft.

    Теперь вы просто переключаетесь в пользовательский контекст minecraft на шаг раньше.

  2. Нет, это поведение не только для перезагрузки. В любом случае между "перезагрузкой" и "нормальным запуском" нет никакой разницы;)

0

Правильный способ запуска демона при запуске - использовать сценарии инициализации в /etc/rc[0-6].d (в некоторых системах он находится в /etc/rc.d/rc[0-6].d ). Задание cron с @reboot будет работать, но cron предназначен для сценариев, которые выполняются один раз и затем завершаются, а не для создания демонов.

В вашем примере вы пытаетесь запустить LAMPP из cron. Вместо этого вы должны сделать символические ссылки из /etc/rc?.d указывающие на /etc/init.d/lampp , который в свою очередь указывает на /opt/lampp/lampp , следующим образом:

sudo ln -s /opt/lampp/lampp /etc/init.d/
sudo update-rc.d lampp defaults

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .