iproger
@iproger
Безответственный гений

Как исправить bash-скрипт чтобы запускать все сервисы при логине в WSL?

WSL v1 не запускает автоматически сервисы при старте потому что нет самого старта. Вместо этого рекомендуют добавлять запуск нужных сервисов в конец файла ~/.bashrc. Это работает, но неудовлетворительно: каждый логин затягивается из-за старта всех сервисов даже когда они уже запущены; в файл добавляется дублирующие строки.
sudo service nginx start
sudo service php7.0-fpm start
sudo service php7.1-fpm start
sudo service php7.2-fpm start
sudo service php7.3-fpm start
sudo service mysql start
sudo service redis-server start

Идея такая: написать bash-скрипт который будет вызываться из ~/.bashrc с нужными параметрами. Я не разбираюсь в написании скриптов, пока что получилось так:
#!/bin/bash

# run custom services
services_list=("nginx", "mysql")

for i in "${services_list[@]}"
do
  service_status=$(service $i status)
  if [[ $service_status = *"is not running"* ]]; then
    sudo service $i --full-restart
  fi
done

Помогите исправить на рабочую версию.
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
каждый логин затягивается из-за старта всех сервисов даже когда они уже запущены;

Добавьте в конце каждого & и пусть запускается в фоне.
Можно добавить >/dev/null &

в файл добавляется дублирующие строки.

В какой файл?

Ну и скрипт на баше выглядеть должен хотя бы так
#!/bin/bash

# run custom services
services_list="nginx mysql"

for svc in ${services_list}
do
  service_status=$(service $svc status)
  if [[ $? != "0" ]]; then
    sudo service $svc --full-restart
  fi
done


Но не очень понятно, зачем все-таки запускать сервисы при логине, а не по другой причине.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы