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:
Neatsimenu, ar šis funkcionalumas yra bazinėje Ubuntu instaliacijoje – greičiausia aš kažkada esu papildomai įsidiegęs 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:
Ikoną išsaugojau kaip ~/bin/lamp-start.svg. Išsaugom ir uždarom Arronax‘o starter‘į
nutempiam jį iš failų naršyklės tiesiai į reikiamą poziciją tarp kitų mygtukų:
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šimuosemessage...
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
- raktas
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ą:
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
išsaugom; uždarom. Dabar paspaudus dešiniu palės klavišu turim papildomų komandų:
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 :)