Bash псевдоним для запуска / остановки нескольких служб

701
Francesco

Я разработчик, работающий со стеком LAMP.

Мой компьютер работает под управлением Linux, поэтому он основан на systemd.

он имеет ограниченное количество оперативной памяти 8Gb:

  • иногда я использую это для работы
  • когда-нибудь для игр

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

Как я могу выполнить вышеупомянутое без написания каждый раз:

sudo systemctl start httpd.service sudo systemctl start mariadb.service sudo systemctl start redis.service 

Ниже я опубликую свое решение на случай, если оно понадобится какому-нибудь новичку, если у вас есть лучшее решение, добавьте его, и я добавлю его.

Спасибо

0

2 ответа на вопрос

2
Francesco

Сначала отключите службы, чтобы они не запускались при загрузке:

sudo systemctl disable httpd.service sudo systemctl disable mariadb.service sudo systemctl disable redis.service 

Затем отредактируйте.bashrc в вашем доме и добавьте в конец

web() { #do things with parameters like $1 such as sudo systemctl "$1" httpd.service sudo systemctl "$1" mariadb.service sudo systemctl "$1" redis.service } 

Теперь вы можете запустить / остановить / перезапустить все связанные службы с помощью простого

web start 

Измените web () на что угодно.

Это функция, а не псевдоним. Это на самом деле хорошая вещь; вам, вероятно, следует избегать псевдонимов вообще. tripleee 6 лет назад 3
Спасибо за примечание, почему псевдонимы плохие? Francesco 6 лет назад 0
Например, https://unix.stackexchange.com/a/233751/19240 показывает несколько проблем с ними. tripleee 6 лет назад 1
@Francesco, псевдонимы не могут принимать аргументы, в то время как функции могут. Вот почему мы должны использовать функции и вообще избегать псевдонимов. C0deDaedalus 6 лет назад 1
0
Elham_Jahani

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

alias start_services='systemctl start httpd.service mariadb.service redis.service' alias stop_services='systemctl stop httpd.service mariadb.service redis.service' 

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