logide-parsimine/nipid.md

4.4 KiB

Mõned vähem tuntud nipid käsureal

Kiirklahvid:

  • Ctrl-L - tühjenda ekraan
  • Ctrl-R - ajaloost käskude otsimiseks regulaaravaldisega
  • Ctrl-D - terminalist väljumiseks
  • Ctrl-C - hetkel käivale protsessile katkestamise (SIGINT) signaali saatmiseks
  • Ctrl-Z - hetkel käivale protsessile pausi (SIGSTOP) signaali saatmiseks
  • Ctrl-Vasak, Ctrl-Parem - Sõna kaupa navigeerimine käsus
  • Home, End - Käsu algusess või lõppu navigeerimine

Käskude taustal käitamine

Käsu taustale panemiseks saab vajutada Ctrl-Z ning seejärel anda käsk

bg

Käsu taustal käima panemiseks võib käsu lõppu panna & sümboli, tulemuste ja veateadete salvestamiseks tuleks stdout ja stderr ümber suunata. Lisaks terminali kinni pannes saadetakse kõigile protsessidele SIGHUP signaal mis ütleb et programmid peaks end sulgema, selleks et seda ei juhtuks peaks käsu algusesse lisama ka nohup. Kõige komplektsem näide käsu taustal käima panemiseks oleks siis järgnev:

nohup käsk > /tmp/tulemused 2>/tmp/veateated &

See väljastab käivitatud protsessi identifikaatori (PID), lisaks on käsu PID salvestatud keskkonnamuutujasse $!

Selleks et kontrollida kas käsk toimetab veel kõige lihtsam:

test -e /proc/$! && echo "Käsk toimetab veel" || echo "Käsk on lõpetanud"

Selleks et näha mis käsud taustal toimetavad:

jobs

Selleks et taustal toimetava käsu külge haakida ja katkestada

fg 1 # Haagi esimese käsu külge
# Vajuta nüüd Ctrl-C et katkestada

Copy-paste Ctrl-D abil

Faili copy-paste terminali abil saab teha järgnevalt. Käivita käsk:

cat > failinimi

Käsk jääb ootama sisendit standardsisendist, st klaviatuur antud juhul. Kopeeri lõik soovitud failist ning aseta PuTTY puhul parema hiireklõpsuga. Vajuta Ctrl-D et lõpetada asetamine. Ctrl-D tähendab käsureal EOF-i (end of file).

Screen ja analoogid

Teine variant käske taustal käitada on teha seda terminali multiplekseri abil nagu nt screen:

screen # Avab uue käsurea sessiooni mis jääb taustale käima ka siis
       # kui terminal suletakse või SSH ühendus serverisse katkeb

Screenist lahti haakimiseks tuleb vajutada esmalt Ctrl-A ning seejärel D. Screeni klahvikombinatsioonid on dokumenteeritud siin

Screeni sees käiva käsu külge haakimiseks:

screen -r # haagi külge kui ükski muu terminal pole külge haakinud
screen -r -d # haagi lahti teised terminalid
screen -r -x # jäta teised terminalid külge haagituna

Kui taustal käib mitu screeni sessiooni siis -r tahab lisaks saada vastava sessiooni protsessi identifikaatorit.

Copy-paste EOF markeriga

Käivita käsk:

cat << EOF > failinimi

Aseta soovitud sisu ning lõpetamiseks kirjuta EOF ning vajuta enter.

Siinkohal bash asendab $MUUTUJAD.

Kui soovid copy-paste sooritada nii et bash ei asendaks muutujaid:

cat << \EOF > failinimi

Aseta sisu, kirjuta EOF ning vajuta Enter

Failide loomine käsuga

Juhendite kirjutamisel tuleb abiks kui terve käsk koos sisuga on kopeeritav:

cat << \EOF > failinimi
See on faili sisu
EOF

Faili sisu muutmine

Järgnev käsk muudab failis /etc/nsswitch.conf rea mille algus on passwd: reaks passwd: compat winbind lisades eelmisele reale kommentaari koos kuupäeva ja vana väärtusega:

sed /etc/nsswitch.conf -e "s/^\(passwd: .*\)/# $(date): \1\npasswd: compat winbind\n/" -i

Järgnev käsk muudab failis /etc/ssh/sshd_config PermitRootLogin valiku rea alati PermitRootLogin yes suguseks, ka siis kui see rida on välja kommenteeritud. Extended regexiga (-r) saab kasutada küsimärki regexis, aga backref on ka natuke teistmoodi kirjutatud:

sed -r /etc/ssh/sshd_config -e "s/^ *(#? *PermitRootLogin .*)/# $(date): \\1\nPermitRootLogin yes/" -I

Rekursiivselt vaheta failides kati välja mati vastu, siinkohal kati on regulaaravaldis:

find /tee/kaustani -type f -exec sed -i -e 's/kati/mati/' {} \;

Failiõiguste korrastamine

Eeldusel et kodukataloogi pole ühtegi skripti salvestatud mille execute bit peaks püsti jääma, saab kodukataloogi failiõigused järgnevalt nulli lasta:

find /home/lauri -type f -exec chown lauri:lauri {} \;
find /home/lauri -type f -exec chmod 600 {} \;
find /home/lauri -type d -exec chmod 700 {} \;