Скрипты запуска / перезагрузки для разных пользователей

Я все еще пытаюсь узнать немного больше о скриптах bash и запуске / перезагрузке, я читал о crontab @reboot, а также просто смотрю на другие варианты, но мне просто интересно, может ли кто-нибудь указать мне правильное Прежде чем я выясню, существуют ли ограничения на метод, который я пытаюсь использовать ...

Вот что я пытаюсь выполнить:

У меня есть 2 пользователя, которым нужно запускать процессы на перезагрузка / запуск:

Пользователь1: 5 Все процессы выполняются со стандартными привилегиями (здесь нет проблем)

Пользователь2: 2 запускаемые команды (sudo) и 5 ​​стандартных процессов, которые нужно запускать, но только когда mysql и вышеуказанные процессы активны.

У меня есть только ssh-доступ к серверу, поэтому я выбрал информацию, которую я читал, чтобы попробовать метод bash / cron.

Я проверил команду sudo, работающую со сценарием bash, и, кажется, это хорошо, все учетные записи используют ключи, а не пароли, поэтому мне не предлагается подтвердить пароль, я еще не проверял это при перезагрузке, но буду сделать очень скоро.

Основная проблема заключается в проверке, загружены ли 5 ​​процессов, запускаемых пользователем 1, перед тем как позволить пользователю 2 начать свою работу, с двумя отдельными сценариями bash, возможно ли создать ожидание или цикл для проверки имен запущенных процессов, прежде чем продолжить?

Спасибо

0
задан 13.05.2020, 18:06

2 ответа

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

я надеюсь, что это помогает для половины Вашей проблемы, хотя, если Вы регистрируете пользователя одновременно, я не полагаю, что это будет работать последовательно.

Ubuntu .profile

А путем я использую, чтобы проверить, что процессы со сценариями Python. Я не знаю, колотят ли его возможное, чтобы сделать свободные регистрации, но я знаю в Python, можно попытаться использовать Popen для выполнения терминальной команды

ps aux | grep the-process

как таковой

p = subprocess.Popen(('ps', 'aux'), stdout=subprocess.PIPE)
g = subprocess.Popen(("grep", "the-process"), stdin=p.stdout, stdout=subprocess.PIPE)

, И это возвратит Вас список рабочих процессов с тем именем. Осуществите проверку, и затем у Вас может быть она цикл, пока это не становится верным.

Hope это также помогает.

0
ответ дан 13.05.2020, 18:07
  • 1
    Просто замеченный Ваше редактирование: Попытка взглянуть теперь видит, могу ли я получить что-то выполнение. Еще раз спасибо – Cindy Meister 13.05.2020, 18:08

Да Вы можете. Вот является пример этим сценарием сны в течение 30 секунд, можно также использовать 1 м для сна в течение 1 Минуты. Вы могли также попытаться добавить/root/myscript к/etc/rc.local однако, я не знаю, нужно ли та работа со временем выполнения Вам.

 #!/bin/bash  
sleep 30  
/root/myscript
0
ответ дан 13.05.2020, 18:08
  • 1
    Это могло также работать, но существует две вещи, которые не могут сделать его идеалом. Вы никогда не знаете наверняка, если Ваши процессы работают правильно (ошибка, медленная, и т.д.) также быть принимают значение по умолчанию Вы, минимальное время ожидания составляет 30 секунд. Если можно гарантировать успешное выполнение процессов и don' t возражают против времени ожидания набора, это очень просто достаточный. – Mohammad Abbas 13.05.2020, 18:08
  • 2
    Я задался вопросом об этом, но wasn' t уверенный, если это был оптимальный маршрут, поскольку это не подтверждает, процесс работает перед продвижением со следующим набором команд. Спасибо, хотя будет иметь это в виду – L. Dabbeet 13.05.2020, 18:08

Теги

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