network disk clone

2010-03-22 12:19:51 UTC by maris in Linux, Quick Tips,

ssh host "dd if=/dev/sda3 bs=4096" > sda3.img bandwidth save: ssh host "dd if=/dev/sda3 bs=4096 | gzip" | gunzip > sda3.img with progressbar: ssh host "dd if=/dev/sda3 bs=4096 | gzip" | gunzip | pv -c > sda3.img

(1 komentārs)

Bash regex

2010-03-22 11:03:14 UTC by maris in Linux, Skripti,

Kopš Bash 3. versijas ir pārādījies regulāro izteiksmju atbalsts, kas ir līdzīgs realizācijai iekš perl. if [[ "pirmagrupa01-51" =~ ^([a-zA-Z]+)([0-9]+)-([0-9]+)$ ]] then echo "group1:${BASH_REMATCH[1]} group2:${BASH_REMATCH[2]} group3:${BASH_REMATCH[3]}" fi path=/var/log/messages echo ${path%/*} /var/log echo ${path#*/} messages

(0 komentāri)

/etc menedžments ar subversion (svn)

2009-09-11 09:07:25 UTC by maris in Linux, gentoo, Quick Tips,

Kas ir subversion visi zina :) Tā pielietojumu atradu arī /etc menedžēšanai, šad tad gribas redzēt kas kādam konfigam ko ir mainījis, un šad tad ir nepieciešams uztaisīt kādu izmaiņu rollback. Tiek izveidota repozitorija struktūra mkdir svnprep mkdir -p {branches,logs,trunk} svn import -m 'Initial import' svn://mansSVNservers/repozitorijs cd ../ rm -rf svnprep Tiek uztaisīta lokāla darba kopija svn co svn://mansSVNservers/repozitorijs/trunk /Configs cd /Configs Struktūra ir apmēram šāda: svn: ->branches ->logs ->trunk: --->all (konfigi kopēji visiem serveriem) --->$(hostname) (katra hosta individuālie konfigi) tālāk visi konfigi, kas ir vienādi visiem serveriem tiek pārnesti zem /Configs/all/etc/ un izveidots simlinks. mv /etc/make.conf /Configs/all/etc/ ln -s /Configs/all/etc/make.conf /etc/ konfigi, kas ir unikāli hostam tiek ienesti iekš /Configs/HOSTNAME tad jaunie faili tiek pievienoti pie svn un uztaisīts komits. pēc komita nostrādā post-commit hook, kas caur ssh uz katra servera izpilda 'svn update'. post-commit hooks #!/bin/sh hosts=`ls /Configs` for h in $hosts do ssh root@${h} "cd /Configs; svn update" done tādējādi izdarot izmaiņas uz viena hosta updeitojas visi hosti. Vienīgais priekšnoteikums ir tāds, ka autorizācija uz serveriem notiek ar ssh atslēgām bez paroles.

(0 komentāri)

Perl ithreads vs Memory

2009-08-21 08:54:00 UTC by maris in Linux,

Uznāca vajadzība uzrakstīt perl skriptu, kas apstrādā relatīvi lielu masīvu - pie 500k - 1m elementiem, lai lieta ietu ātrāk nolēmu izmantot ithreads. Masīva tips ir HASHES OF ARRAYS. Masīvā aptuveni 40 HASH'i viens pavediens katram hešam. Problēmas sākās, tad, kad veidojot jaunu pavedienu Perl kopē visas datu struktūras uz jauno pavedienu, tas nozīmē, ka izveidojot 40 pavedienus servera atmiņā ir 40 masīva kopijas.

(0 komentāri)

Bash timed execution

2009-05-22 08:05:14 UTC by maris in Linux, Skripti,

Tikko savajadzējās uztaisīt check'u ar timeout'u, te mu būs piemērs kā to izdarīt no bash. Ideja diezgan vienkārša - forkojam galveno procesu backgroundā, savācam procesa pid, guļam timeout sekundes, pēc kā pārbaudma vai process joprojām ir aktīvs. #!/bin/bash mainproc(){ for i in `seq 1 20` do echo "Now in $i" sleep 1 done } timeout=5 echo "Running with timeout of 5 seconds" mainproc & pid=$! sleep $timeout kill -0 $pid if [ $? -eq 0 ] then echo "Process hang" kill -9 $pid else echo "Process ok" fi

(0 komentāri)