По време на странстването ми в Малта бях написал един тъжен пост за т. нар. работно място тогава. В случай, че някой се е уплашил за моя уют и комфорт ще публикувам актуална снимка от бърлогата ми:

new lair

Както казва една моя дружка “Когато сме най-зле – така да сме!”.

Имам едно виртуално FreeBSD, което понякога използвах дистанционно и стартирах с nohup. Идеята ми беше да се логна в host машината, да стартирам процеса и да изляза. Всичко работеше много добре, но забелязах, че след като стартирам qemu процеса host машината качваше много приличен load – около 1 – 1.5. В същото време обаче guest OS-а не правеше нищо – имаше load average клонящ към 0. Това естествено е супер дразнещо:)

След кратки тестове забелязах, че това се случва само като стартирам процеса с nohup (nohup ./fireup.sh &). Нямам логично обяснение, но явно това не е добра идея. qemu има опция -daemonize, която върши много добра работа. Единствената особеност, която забелязах е, че трябва да се подаде пълния път до image файла.

Блогът ми се сдоби с нова тема:). Казва се Composito и неин автор е Elena Gafita. Подробно ревю на темата може да намерите в SmashingMagazine.

Разбрах за тази кампания от блога на Йовко Ламбрев. Той е написал много хубав пост по темата, озаглавен “Приказка без край”.Накратко ще преразкажа за какво стада въпрос.

Всеки, който желае може да се регистрира от тук (регистрация за частни лица) и всеки месец според възможностите си да направи дарение за кампанията. Всичко това става много бързо – дарението може да се регистрира като месечно плащане в e-pay, да се използва електронно банкиране и т.н. Размера на дарението се определя изцяло от вас – кой колкото може и иска. Целта на кампанията е да се осигори системен приход от средства, с който да се посрещат нуждите на децата. Пожелавам успех на организаторите!

Bash има опция, която ако не се лъжа се нарича “пренасочване на входа”. Т.е. нещо подобно на това:

#!/bin/sh

mysql -u tsurko -p mydb < SELECT * FROM test_table;
SELECT * FROM other_table;
quit
EOF
exit

Този скрипт ще се свърже с MySQL, ще поиска парола, ще изпълни 2-те заявки и ше излезе. По аналогичен начин обаче може да се направи и ssh сесия към сървър в bash скрипт. Ето един пример:

#!/bin/sh

ssh example.com < touch test_file
exit
EOF
exit

Така от шел скрипта могат да се изпълнят произволни команди на сървъра. При стартирането на скрипта се появяват следните грешки:

Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.

До колкото си спомням това е общоизвестен проблем, но не съм се задълбавал за да видя как се решава. Ако някой знае нещо по въпроса, ще се радвам да го сподели.
Това е полезно, но би било хубаво да се използват и шел променливи, за по-голяма гъвкавост. Всъщност това не е проблем. Ето например следния скрипт:

#!/bin/sh

TEST_VAR=sample_file

ssh example.com < touch $TEST_VAR
exit
EOF

echo "I'm back"
exit

В този случай променливата TEST_VAR се “взима” от environment-а, където се изпълнява скрипта (т.е. локалната машина) и като резултат на отдалечената машина се изпълнява командата “touch sample_file”.
Друг интересен въпрос е, какво може да се направи ако искаме да използваме шел променливите на машината, в която се логваме? Ето един пример:

#!/bin/sh

TEST_VAR=sample_file

ssh example.com < touch \$TEST_VAR
exit
EOF

echo "I'm back"
exit

Да приемем, че на сървъра имаме сетната променливата TEST_VAR. В този случай, понеже $ е escape-нат то “$TEST_VAR” се третира като обикновен стринг, а не като променлива. В резултат на това командата, която реално се изпълнява на отдалечената машина е “touch $TEST_VAR” и променливата $TEST_VAR се взима от environment-a на отдалечената машина, а не от тази на нашия скрипт.
И още нещо като за финал. Понякога се налага да се изпълнят едни и същи команди на няколко машини. В този случай трябва да ги въведем поотделно за всяка. Аз не успях да измисля как могат да се използват функции, за да се реши този проблем, затова прилагам следния метод. СЪздавам текстов файл с командите и използвам `cat ` за да ги изпълня на сървъра. На мястото на “ се замества изхода от командата, която е заградена в апострофите. Отбелязвам, че това е апострофа до 1-цата, а не до enter-a.

#!/bin/sh

ssh example.com < `cat test.cmd`
exit
EOF

ssh example2.com < `cat test.cmd`
exit
EOF

exit

Също така файла трябва да съдържа само команди – така както биха се написали на отдалечената машина. Никакви, специфични за bash, неща няма да бъдат отработени.
Това е от мен – надявам се да съм бил полезен. Ще се радвам да чуя всякакви мнения и препоръки:)

След ъпгрейд на кернела VirtualBox изненадващо спира да пуска виртуални машини. Излиза едно прозорче с надпис Spawning session и “това е всичко приятели!”. Проблемът се решава лесно:

/etc/init.d/vboxdrv setup

Така се прекомпилира кернел модула на VirtualBox и след това всичко би трябвало да е наред. Естествено, желателно е по време на тази манипулация VirtualBox да не работи.

Land of Free

In: Uncategorized

26 Oct 2008

Един интересен разказ:
Част 1
Част 2

Продължавам видео серията от постове с един вечен хит:)

Indigen

In: Uncategorized

9 Oct 2008

Много забавен и може би леко брутален клип на Пиксар. Един от любимите ми:)

About this blog

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque sed felis. Aliquam sit amet felis. Mauris semper, velit semper laoreet dictum, quam diam dictum urna, nec placerat elit nisl in quam. Etiam augue pede, molestie eget, rhoncus at, convallis ut, eros. Aliquam pharetra.

Photostream

  • Ifkata: Това се казва еволюция:) [...]
  • My lair - reloaded - Хрониките на един Цветомир: [...] време на странстването ми в Малта бях написал един [...]
  • nurv: Докладвам, че собственика на блога бе успешно извозен [...]
  • nurv: Да пратиш поздрави на слонът, моя приятел! [...]
  • tsurko: Той затова страда всеки ден:) [...]

Quotes

"The most beautiful thing we can experience is the mysterious. It is the source of all true art and science." - Albert Einstein