Apache ir MySQL „on demand“

Stabdom ne visuomet reikalingus servisus. Startuojam juos mygtuku.

Priešistorė

Upgreidinau Ubuntą iki 16.04 (iš 14.04). Viskas praėjo sklandžiai,  tačiau operacinės startavimo laikas lyg ir pailgėjo. Pažiūrėjus

$ systemd-analyze plot > ~/Desktop/systemd-analyze-plot.svg

pamačiau, kad Apache ir MySQL užima pakankamai daug sekundžių.

Tad nusprendžiau, kad Apache is MySQL servisai turėtų veikti ne nuolatos, bet tik kai jų reikia. Privalumai:

  • greitesnis operacinės startavimas
  • naudojama mažiau resursų, kai servisai nereikalingi
  • dar kas nors…

Išjungiam

Šalinam procesus iš automatiškai startuojančiųjų:

$ sudo systemctl disable mysql
$ sudo update-rc.d apache2 disable

Atmintinė

Jei kada prireiktų, atstatysiu taip:

$ sudo systemctl enable mysql
$ sudo update-rc.d apache2 enable

Procesų paleidimas rankiniu būdu:

$ sudo systemctl start mysql
$ sudo service apache2 start

Patikrinimas, ar procesas šiuo metu veikia:

$ sudo systemctl status mysql
$ sudo service apache2 status

Kurpiam mygtuką

Aišku, terminalas valdo, tačiau patogumo dėlei nusprendžiau paleidimą realizuoti per launcher‘io mygtuką. Paspaudi – ir abu servisai startuoja.

Failų naršyklėje einam į ~/.local/share/applications , spaudžiam dešiniu pelės klavišu kur nors tuščioje vietoje ir pasirenkam Create starter:

Create starter

Neatsimenu, ar šis funkcionalumas yra bazinėje Ubuntu instaliacijoje – greičiausia aš kažkada esu papildomai įsidiegęs Arronax:

Arronax

Užpildom nustatymų laukelius (čia galit improvizuoti):

    Title    :  (Re)start Apache and MySQL
    Command  :  /home/user/bin/lamp-start

pastarasis yra kelias iki bash skripto. Skriptą netrukus parašysim (aišku, kad aš visą šitą „muziką“ pradėjau būtent nuo jo). Užpildytų laukelių vaizdas bus kiek žemiau, o dabar

Ikona

Kad būtų visai gražu, nusprendžiau greitai sumesti ikonkę: internete susiradau vektorinį krumpliaratį ir apačės plunksną, tiap-liap vieną ant kito Inkscape‘je ir štai ką turim:

Apache settings

Ikoną išsaugojau kaip ~/bin/lamp-start.svg. Išsaugom ir uždarom Arronax‘o starter‘į

Arronax starter

nutempiam jį iš failų naršyklės tiesiai į reikiamą poziciją tarp kitų mygtukų:

Launcher button

Programinė dalis

Rašom bash’o skriptą:

#!/bin/bash
gksudo -- sh -c 'service apache2 restart; systemctl restart mysql'
status_mysql=`systemctl status mysql | grep Active: | cut -d ':' -f 2 | cut -d ' ' -f 2,3`
status_apache=`service apache2 status | grep Active: | cut -d ':' -f 2 | cut -d ' ' -f 2,3`
message="MySQL  $status_mysql\nApache $status_apache\n"
printf "$message"
notify-send -i "/home/user/bin/lamp-start.svg" "Apache & MySQL restart" "$message"

Paaiškinimai

  • gksudo... kadangi komandas leisim iš grafinės aplinkos, tai vietoj sudo naudojam gksudo. restart paleis procesą net jei jis nebuvo paleistas, todėl man pasirodė universalesnis už paprastą start
  • status... leidžiam komandą, kuri parodo serviso būklę; „iškerpam“ reikšminius žodžius; priskiriam kintamajam – būklės tekstą naudosime pranešimuose
  • message... paruošiam pranešimo tekstą
  • printf... matom pranešimo tekstą kai komandą leidžiam konsolėje (vėliau šią eilutę galima ištrinti/užkomentuoti)
  • notify-send... rodom pranešimą darbalaukyje. Čia gal papasakosiu detaliau:
    • raktas -i leidžia nurodyti naudojamą paveiksliuką
    • pirmas tekstinis parametras bus naudojamas antraštei
    • antras – pranešimo turiniui

Failą išsaugom kaip ~/bin/lamp-start  ir suteikiam vykdymo atributą

$ chmod u+x ~/bin/lamp-start

Rezultatas

Testuojam: spaudžiam launcher‘io mygtuką ir (po kelių sekundžių, kai servisų (pa/per)leidimo procesas baigtas) matom rezultatą:

notify-send

Patobulinimai

Kaip ir viskas. Bet dar nusprendžiau mygtuko kontekstiniame meniu realizuoti servisų perkrovimą atskirai (labai retai, bet prireikia).

Redaguojam paleidėją

$ arronax ~/.local/share/applications/\(Re\)start\ Apache\ and\ MySQL.desktop

Quicklist tab‘e pridedam vieną ar kelias komandas

Arronax Quicklist

išsaugom; uždarom. Dabar paspaudus dešiniu palės klavišu turim papildomų komandų:

Launcher context menu

Kai reikia tik būklės

Dar pastebėjau tokį lifehack‘ą: paspaudus launcher‘io mygtuką yra klausiama superuser‘io slaptažodžio. Tada galime atšaukti – paspausti Cancel ir serviso perkrovimo komandos nebus vykdomos. Tačiau bus įvykdytos likusios – parodys servisų būklę darbalaukio pranešime. Patogu :)

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *

Brukalų kiekiui sumažinti šis tinklalapis naudoja Akismet. Sužinokite, kaip apdorojami Jūsų komentarų duomenys.