2016 m. rugpjūčio 25 d., ketvirtadienis

umask komanda

Kai sukuriamas įprasto vartotojo dokumentas (failas ar katalogas), jam suteikiamos teisės yra nustatytos pagal umask reišmę:
root ir paprasto vartotojo umask reikšmės gali skirtis.

Kaip sužinoti umask reikšmę?
$ umask
0002

$ umask -S #u(vartotojo), g(grupės), o(kitų) grafinis atvaizdavimas
u=rwx,g=rwx,o=rx 


Sukuriame dokumentą ir katalogą, tam kad pažiūrėtume teises  su umask 0002 reikšmę:
$ touch dokumentas.txt; ls -la dokumentas.txt 
-rw-rw-r-- 1 sup sup 0 Rgp 25 12:42 dokumentas.txt

$ mkdir katalogas; ls -ld katalogas/
drwxrwxr-x 2 sup sup 4096 Rgp 25 12:45 katalogas/


Laikinai pakeičiam umask reikšmę:
$ umask 777; mkdir katalogas && touch dokumentas.txt && ls -ld dokumentas.txt katalogas
---------- 1 sup sup    0 Rgp 25 12:55 dokumentas.txt
d--------- 2 sup sup 4096 Rgp 25 12:55 katalogas

$ umask 000; mkdir katalogas && touch dokumentas.txt && ls -ld dokumentas.txt katalogas
-rw-rw-rw- 1 sup sup    0 Rgp 25 12:57 dokumentas.txt
drwxrwxrwx 2 sup sup 4096 Rgp 25 12:57 katalogas

Kaip išsaugoti umask reikšmę?
Išsaugoma umask komandą įrašant į .bashrc dokumentą:
$ echo "umask 022" >>  ~/.bashrc

Susiję:
Dokumentų leidimai

2016 m. rugpjūčio 23 d., antradienis

Programų kompiliavimas ir vykdymas

Parsisiunčiam java:
sudo add-apt-repository ppa:webupd8team/java 
sudo apt update

Pasirenkam reikiamą java versiją:
sudo apt-get install oracle-java6-installer
sudo apt install oracle-java7-installer
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java9-installer

Java konfigūravimas:
sudo update-alternatives --config java


Python
python komanda, pagal nutilėjimą paleidžia 2.7.* versiją

Norint vygdyti python programą naudojame tokią sintaksę:
python2 programa.py
python3 programa.py

Java
Norint sukompiliuoti .java į baitinę programą reikia turėti Java Development Kit (JDK).
$ javac file.java

Java baitinės programos dokumentai turi galūnę .class. Tam, kad paleistume baitinė programą rašome:
$ java file.class

Taip pat galima sutikti baitinė programas su .jar, galūne, kurios susideda iš suarchyvuotų .class dokumentų rinkinio. Tam, kad paleistume .jar dokumentą naudojame tokią sintaksę:
$ java -jar file.jar


Programinės įrangos kompiliavimas su C iš pirminio programos teksto
Reikalingi paketai: build-essentil

sudo apt install dh-make build-essential -y

Parsisiunčiam pirminį kodą ir jį išpakuojam.

Tam, kad sukonfiguruotume MakefileMakefile.in, rašome:
$ ./configure

Dabar vykdome make komandą:
$ make


Dabar gali įdiegti programą, prieš tai patikrinam ar viskas tvarkoje:
$ make -n install # Įdeda sukompiliuota binarinį failą į (/usr/local/bin )
$ make install
$ make clean # Išvalo laikinus failus, sukurtus kompiliuojant ir siejant procesus

Pasiskaitymui:
Nuoroda - qgifer kompiliavimas.

2016 m. rugpjūčio 22 d., pirmadienis

gnu/linux informacija apie įrenginius

lsusb atvaizduoja usb įrenginius:

$ lsusb 
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


xinput įrankis konfiguruoti ir tikrinti įvesties įrenginiams:

 $ xinput --list
⎡ Virtual core pointer                     id=2 [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                   id=9 [slave  pointer  (2)]
⎣ Virtual core keyboard                   id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard             id=5 [slave  keyboard (3)]
    ↳ Power Button                             id=6 [slave  keyboard (3)]
    ↳ Power Button                             id=7 [slave  keyboard (3)]
    ↳ Logitech USB Receiver                   id=8 [slave  keyboard (3)]

Detalesnė informacija apie Logitech USB Receiver (id=8):

$ xinput --list-props 8
Device 'Logitech USB Receiver':
Device Enabled (143): 1
Coordinate Transformation Matrix (145): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Product ID (265): 1133, 50478
Device Node (266): "/dev/input/event2"

2016 m. rugpjūčio 21 d., sekmadienis

Libre Office

LibreWriter
Kaip pasukti lapą horizontaliai?
Page->Portrait/Lanskape
Libre Office horizontalus/vertikalus lapo pasukimas

Naudingos nuorodos:
Designing with libreoffice - Libre office knygos dizaino pavyzdys .
Lietuvių kalbos klaidų tikrinimas

2016 m. rugpjūčio 19 d., penktadienis

netstat ir lsof komandos

netstat rodo visas tcp/udp komunikacijas:

Nustatymai:
-n, --numeric  - nemėgina sustatyti hostų, todėl greičiau pateikia sąrašą.
-l, --listening   - rodis besiklausančias sąsajas.
-t -  atvaizduos TCP prievadus.
-u -  atvaizduos UDP prievadus.
-r Routes; rodys maršrutų lentelę visai kaip 'route' komanda -x Sockets; Socket is a file in a file system.
-a -all Rodys visas jungtis.

Pavyzdžiai:
$ netstat -tln
$ netstat -ulnp
$ netstat -tan

Parodys aktyvias TCP ir UDP tinklo jungtis, kartus su programų pavadinimais (-p).

$ netstat -tupan

Norit detalesnės informacijos apie procesus naudojama lsof komanda, ją reikia paleisti administratoriaus teisėmis.

# lsof | grep syslogd

-i be argumentų rodis visus atvirus portus ir procesus
-n išjungia name resolution

# lsof -i -n

-i TCP:22 filtravimas pagal portą.

# lsof -i:46330
# lsof -i TCP:22
# lsof -i UDP:46330

-rodyti tik procesus besiklausančius tcp portuose.

# lsof -iTCP -sTCP:LISTEN

Atvaizduoja visus naudojamus unix domain prievadus

# lsof -U

2016 m. rugpjūčio 15 d., pirmadienis

crontab ir at

Crontab anacron - leidžia vykdyti programas tam tikru laiku, net ir po to kai sistema pasikrauna.
/etc/crontab  redagavimas leidžiamas tik su root teisėmis.

Sistemos crontab failai: /etc/cron.d/*
anacron valdomo skriptai: /etc/cron.{hourly,daily,weekly,monthly}

Rodo cron lokalaus vartotojo darbus:
$ crontab -l 

Leidžia redaguoti cron darbus:
$ crontab -e

Ištrina crontab darbus:
$ crontab -r

Reikia turėti omenyje, kad crontab įrašuose % reikia pakeisti į \% kaitos ženklą, priešingu atveju, procento ženklas virs naujos eilutės simboliu.



5 nustatymo laukeliai ir vienas  paleidimo komandos laukelis 
Cron įrašų pavyzdžiai:
minutevalandadienamėnesissavaitės dienakomanda
*****/usr/local/bin/execute/scenarijus.sh
5923***yum -y update | mail root@localhost

Naujas cron leidžia ir tokią sintaksę:
@reboot echo "hi" > /home/sam/reboot.txt 2>&1

at darbų pavyzdžiai:
at 22:30

at 22:00 today
at 22:30 DD.MM.YY
at 22:30 31.09.16
at now + 1 min
at now + 1 hour
at now + 2 days

Visų at darbų atvaizdavimas
$ at -l || atq
Planuotų darbų trynimas: 
$ atrm || at -r

Resursai:
http://crontab-generator.org/ - Online crontab kodo generatorius. 

2016 m. rugpjūčio 12 d., penktadienis

systemd komandos

Esamos inicializacijos paslaugos: SysVinit, Upstart, Systemd.

Systemd yra naujausias SysVinit ir Upstart pakaitalas. Ši upstart paslauga veikia ant naujausių gnu/linux distribucijų, tokių kaip RHEL 7, Ubuntu 16.04, CentOS7 ir kt...

Rodo užkrautus modulius:
systemctl -t service

Unit konfigūracijos katalogas: /lib/systemd/system
Komanda rodanti įjungus/išjungus servisus:
systemctl list-unit-files ---type=service
systemctl list-units | grep .service
UNIT FILE                                  STATE   
accounts-daemon.service                     enabled 
acpid.service                               disabled
alsa-restore.service                        static  
alsa-state.service                          static  
alsa-utils.service                          masked  

Komanda rodanti target informacija:
systemctl list-unit-files ---type=target

Rodo procesus su failed būsena:
systemctl --state failed

Sistemų įjungimas/išjungimas:
systemctl {enable, disable} httpd mariadb

Sistemų perkrovimas/stabdymas:
systemctl {stop, start, reboot} httpd mariadb

Panašiai kaip top rodo kiek resursų naudoja:
systemd-cgtop

Rodo kiek laiko trunka besikraunantys procesai:
systemd-analyze blame 
systemd-analyze plot > foo.html 

Nuorodos:
Gnu/Linux administravimas ir valdymas naršyklėje -  github, oficiali svetainė.


gnu/linux perkrovimo komandos

Išjungimas šia akimirką:
shutdown -h now

Sistemos perkrovimas:
reboot
shudown -r now
init 6 - prieš išjungiant vygdys visus scenarijus /etc/rc6.d/ kataloge . 

Perkrovimas po 10 minučių:
shutdown -r +10

Perkrovimas tam tikru laiku:
shutdown -r 11:11
Shutdown scheduled for Pn 2016-08-12 11:11:00 EEST, use 'shutdown -c' to cancel.

Shutdown komandos atšaukimas
shutdown -c

2016 m. rugpjūčio 5 d., penktadienis

Kaip programai sukurti .desktop dokumentą ?

Kaip sukurti aplikaciją, kuri būtų matoma per Unity paiešką?

Pavadinimas.dekstop dokumentai keliami į  /usr/share/applications (Debian)

Matomas Unity Langass, Ubuntu 16.04 operacinėje sistemoje su nuoroda į programą


Šablonas:

[Desktop Entry]
Version=1.0
Name=espeak indicator
Comment=Stop/continuea espeak.
Exec=python3 /kelias/iki/scenarijaus/python_sript.py
Icon=/usr/share/icons/Humanity/apps/32/access.svg
Terminal=false
Type=Application
Categories=Utility;Application;Development;


Kaip su linux'ais sukurti  nuorodą darbalaukyje?
  1. Nueinam į /usr/share/applications.
    Failų tvarkykle spaudžiame Ctrl +L
  2. Belieka perkelti nuorodą ant darbalaukio.
    Kairys mygtukas -> Copy To... -> Desktop

Šaltiniai:

2016 m. rugpjūčio 1 d., pirmadienis

strace

Strace yra sisteminė programa, leidžianti peržiūrėti sisteminius iškvietimus (sys call), kuriuos atlieka bet kuri programa.

Sisteminių kvietimų rodymas. strace išveda tekstą į stderr. Jei norime apdoroti tekstą, jį reikia išsaugoti su -o nustatymu arba nukreipti stderr į stdout plačiau apie tai.
$ strace ls /tmp/ 2>&1 | grep tmp

Rodo kiek laiko užtruko tam tikruose procesuose
$ strace -c w
$ strace -c -S calls cat /dev/null #Rikiuoja pagal iškvietimų skaičių

Peržiūrėti iškvietimus susijusius tik su failų veiksmais (open, file, memory, network...)
$ strace -e open,close cat /dev/null
$ strace -e trace=open,close -o out_t_file.out w #Seka tiktai tam tikrus sitemos iškvietimus. Numatytas nustatymas trace=all

Prisikabinimas prie apache proceso:
$ lsof -p `pidof telnet`
telnet 17593 sup 3u IPv4 7391419 0t0 TCP localhost:33506->localhost:http (ESTABLISHED)


$ netstat -nap | grep 33506
tcp 0 0 127.0.0.1:33506 127.0.0.1:80 ESTABLISHED 17593/telnet


$ strace -o /tmp/output -f -r -s4096 -p 17593 # -f reliatyvūs laiko štampai tikrinant, rodo kas lėtai veikia

$ cat /tmp/output | sort -k 2 -n #Pasitikrinam, kas daugiausiai užima laiko

Prisijungimas prie tty:
$ ps -aux | grep "[p]ts/35" #Randam pid
sup 10369 0.0 0.0 24176 5744 pts/35 Ss+ 23:31 0:00 bash
$ sudo strace -p 10369

Šaltiniai:
http://fmf.vgtu.lt/~rgriskevicius/lectures_data/hl_id_0008/lecture1.pdf
https://www.youtube.com/watch?v=nxQ-V9yrUNU