<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mysyslog.ru &#187; environment</title>
	<atom:link href="http://mysyslog.ru/posts/tag/environment/feed" rel="self" type="application/rss+xml" />
	<link>http://mysyslog.ru</link>
	<description>Всякая IT всячина</description>
	<lastBuildDate>Sat, 17 Mar 2012 17:39:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Изучаем top в FreeBSD</title>
		<link>http://mysyslog.ru/posts/628</link>
		<comments>http://mysyslog.ru/posts/628#comments</comments>
		<pubDate>Wed, 08 Dec 2010 13:30:11 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[freebsd]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=628</guid>
		<description><![CDATA[Вообще, все что я тут буду рассказывать есть или в help top (нажми h во время работы top), или есть в man top.
Если тебе лень их читать (что я, конечно же, не одобряю), то эта заметка для тебя, и мне шпаргалка.
Что такое top и зачем он нужен, я писать не буду, поговорим о приятных возможностях.
Еще [...]]]></description>
			<content:encoded><![CDATA[<p>Вообще, все что я тут буду рассказывать есть или в help top (нажми h во время работы top), или есть в <strong>man top</strong>.<br />
Если тебе лень их читать (что я, конечно же, не одобряю), то эта заметка для тебя, и мне шпаргалка.<br />
Что такое top и зачем он нужен, я писать не буду, поговорим о приятных возможностях.<br />
Еще хочу заметить, что top меняется вместе с системой, что-то добавляется, что-то меняется, что-то исчезает. Все опции здесь взяты для freebsd 7.3, как наиболее надежной в данный момент. И так поехали!<br />
<span id="more-628"></span><br />
1) Как правило, мы хотим увидеть в top какие-то работающие процессы, которые грузят систему, все остальные только затуманивают нам взгляд.<br />
Так что их лучше отключить! Для этого нужно запустить top с ключем <strong>-I</strong>, или во время работы нажать <strong>i</strong> (повторное нажатие вернет все обратно).</p>
<p>2) Такие процессы, как mysql используют потоки, которые top не выводит отдельными строчками, а показывает сколько потоков у данного процесса в поле THR. Можно заставить показывать каждый поток отдельно, для этого нужно запустить top с ключом <strong>-H</strong> или нажать <strong>H</strong> в процессе работы.</p>
<p>3) Jail &#8211; замечательный механизм изоляции различных окружений на одной машине.<br />
top позволяет определить какому из jail принадлежит процесс при помощи jail id. 0 &#8211; это host система, остальные номера смотрим через jls. Или при запуске нужно запустить top с ключом <strong>-j</strong>, или при работе нажать <strong>j</strong>.</p>
<p>4) Поиск утилизирующего диск приложения &#8211; top помогает и с этой задачей.<br />
Опция <strong>-m</strong> с параметром <strong>io</strong> (или <strong>m</strong> в процессе работы) переводит top в режим отображения IO активности, вместо CPU. Очень полезно. </p>
<p>5) Опция -S показывает системные процессы, полезная опция на загруженных системах.<br />
Например, можно подсмотреть сколько процессора потребляет работа сетевой карты, выглядит это примерно так:</p>
<pre class="brush: plain;">39 root          1 -68    -     0K    16K WAIT    6 117.6H  8.69% irq256: em0</pre>
<p>6) Все мы уже привыкли, что процессоров у нас много, ядер в них тоже много и SMP включен, но top упорно показывает всего одну строчку про процессор:</p>
<pre class="brush: plain;"> CPU:  0.4% user,  1.6% nice,  1.4% system,  1.4% interrupt, 95.3% idle</pre>
<p>Можно заставить top показывать статистику по каждому ядру/процессору, для этого нужно указать опцию <strong>-P</strong>.<br />
Возможность была бы совершенно бесполезная, если бы не cpuset! (читайте <strong>man cpuset</strong>). </p>
<p>7) Частота обновления top задается опцией <strong>-s</strong> в качестве параметра нужно указать время в секундах. В время работы меняется нажатием <strong>s</strong>.</p>
<p>Вот и все про top!</p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/628/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resize partition in FreeBSD with growfs</title>
		<link>http://mysyslog.ru/posts/334</link>
		<comments>http://mysyslog.ru/posts/334#comments</comments>
		<pubDate>Fri, 02 Apr 2010 14:44:18 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[freebsd]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=334</guid>
		<description><![CDATA[It&#8217;s hard to say, which partition will grow more during system work at installation time. So in one good day nagios will start alerting you about space shortage! Nowadays it&#8217;s not topical problem, but it could happen, as it was with me.Some administrator before me prepared solution for this case. He added one empty partition [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s hard to say, which partition will grow more during system work at installation time. So in one good day nagios will start alerting you about space shortage! Nowadays it&#8217;s not topical problem, but it could happen, as it was with me.<span id="more-334"></span>Some administrator before me prepared solution for this case. He added one empty partition /mnt/b for cutting space from it in future. So my task was to grow one working partition without data loss.<br />
What we have in the beginning:</p>
<pre class="brush: plain;">
df -h
/dev/da1s1a    989M    488M    442M    52%    /mnt/a
/dev/da1s1b    6.8G    4.0K    6.4G     0%    /mnt/b
</pre>
<p>We want to resize /dev/da1s1a up to 2GB. For this task we need some utils: bsdlabel, newfs, growfs.<br />
First is to unmount partitions.</p>
<pre class="brush: plain;">
umount /mnt/a
umount /mnt/b
</pre>
<p>After this we must change label data on slice /dev/da1s1</p>
<pre class="brush: plain;">
bsdlabel -e /dev/da1s1

# /dev/da1s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  2097152       16    4.2BSD     2048 16384 28528
  b: 14674629  2097168    4.2BSD     2048 16384 28448
  c: 16771797        0    unused        0     0         # &quot;raw&quot; part, don't edit
</pre>
<p>After changing it would look like</p>
<pre class="brush: plain;">
# /dev/da1s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  2048M       16    4.2BSD     2048 16384 28528
  b: *  *   4.2BSD     2048 16384 28448
  c: 16771797        0    unused        0     0         # &quot;raw&quot; part, don't edit
</pre>
<p>Now it&#8217;s time to run growfs. It has key -s for setting new size of partition. One note, growfs works with size in blocks, so for 2GB it would be 4190208 ( 2 * 1024 * 1024 * 1024 / 512 ) because default block size is 512B.</p>
<pre class="brush: plain;">
growfs -s 4190208  /dev/da1s1a
newfs -U /dev/da1s1b
mount /dev/da1s1a /mnt/a
mount /dev/da1s1b /mnt/b
df -h
/dev/da1s1a   1.9G 488M  452378    52%    /mnt/a
/dev/da1s1b   5.8G      4K 6674404     0%    /mnt/b
</pre>
<p>I don&#8217;t know any way to resize /dev/da1s1b down, so we just run newfs against it.</p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/334/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Изменение размера партиции в FreeBSD через growfs</title>
		<link>http://mysyslog.ru/posts/326</link>
		<comments>http://mysyslog.ru/posts/326#comments</comments>
		<pubDate>Fri, 02 Apr 2010 14:13:21 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[freebsd]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=326</guid>
		<description><![CDATA[Иногда при установке системы не удается предугадать, какие разделы будут расти больше, а какие меньше и в один прекрасный день nagios начинает орать о нехватке места. Вообще задача встречается все реже, так как диски все больше да и все все чаще создается они большой /. Но вот так случилось, что я с ней столкнулся.Причем мой [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда при установке системы не удается предугадать, какие разделы будут расти больше, а какие меньше и в один прекрасный день nagios начинает орать о нехватке места. Вообще задача встречается все реже, так как диски все больше да и все все чаще создается они большой /. Но вот так случилось, что я с ней столкнулся.<span id="more-326"></span>Причем мой предшественник сделал хитро. Он создал раздел, который никак не использовался, от которого можно было отрезать по кусочку для других разделов.<br />
Вот что у нас было на начальный момент:</p>
<pre class="brush: plain;">
df -h
/dev/da1s1a    989M    488M    442M    52%    /mnt/a
/dev/da1s1b    6.8G    4.0K    6.4G     0%    /mnt/b
</pre>
<p>Я хочу расширить /dev/da1s1a до 2GB. Итак, что нам нужно: bsdlabel, newfs, growfs.<br />
Первым делом нужно отмонтировать разделы.</p>
<pre class="brush: plain;">
umount /mnt/a
umount /mnt/b
</pre>
<p>После чего нужно изменить лейбл на слайсе /dev/da1s1</p>
<pre class="brush: plain;">
bsdlabel -e /dev/da1s1

# /dev/da1s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  2097152       16    4.2BSD     2048 16384 28528
  b: 14674629  2097168    4.2BSD     2048 16384 28448
  c: 16771797        0    unused        0     0         # &quot;raw&quot; part, don't edit
</pre>
<p>Меняем это все следующим образом и сохраняем </p>
<pre class="brush: plain;">
# /dev/da1s1:
8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:  2048M       16    4.2BSD     2048 16384 28528
  b: *  *   4.2BSD     2048 16384 28448
  c: 16771797        0    unused        0     0         # &quot;raw&quot; part, don't edit
</pre>
<p>Далее запускаем growfs, для указания нужного размера есть ключ -s, но размер в нем указывается в блоках, а не в байтах. Потому для размера раздела в 2ГБ нужно указать 4190208 ( 2 * 1024 * 1024 * 1024 / 512 )</p>
<pre class="brush: plain;">
growfs -s 4190208  /dev/da1s1a
newfs -U /dev/da1s1b
mount /dev/da1s1a /mnt/a
mount /dev/da1s1b /mnt/b
df -h
/dev/da1s1a   1.9G 499818  452378    52%    /mnt/a
/dev/da1s1b   5.8G      4 6674404     0%    /mnt/b
</pre>
<p>Уменьшить размер раздела нельзя, так что приходится создавать файловую системы заново на /dev/da1s1b. </p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/326/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mtree на страже вашей FreeBSD</title>
		<link>http://mysyslog.ru/posts/313</link>
		<comments>http://mysyslog.ru/posts/313#comments</comments>
		<pubDate>Wed, 31 Mar 2010 14:46:38 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=313</guid>
		<description><![CDATA[К сожалению в любом программном обеспечение есть уязвимости и дыры, который могут использовать хакеры в свои целях. С момента выхода обновления или security патча до момента исправления в вашей ОС может пройти какое-то время, т.е. это потенциальная возможность получить управление ваши серверов для злоумышленника, который может оставить закладки для будущего использования даже после того, как [...]]]></description>
			<content:encoded><![CDATA[<p>К сожалению в любом программном обеспечение есть уязвимости и дыры, который могут использовать хакеры в свои целях. С момента выхода обновления или security патча до момента исправления в вашей ОС может пройти какое-то время, т.е. это потенциальная возможность получить управление ваши серверов для злоумышленника, который может оставить закладки для будущего использования даже после того, как вы все исправите. Например он может заменить файл su или sudo, даже ps вместе ls могут стать смертельно опасными! Для защиты нужно отслеживать состояние системных файлов (владельцы, права, размер, хеши и т.п.)!<br />
Tripwire &#8211; достаточно сложный и тяжелый продукт, конечно можно поставить из портов, но в FreeBSD уже есть утилита, которая прекрасно справится с поставленной задачей.<span id="more-313"></span></p>
<p>mtree создает список файлов и их свойств в заданном каталоге. Полученный список может использоваться в дальнейшем для сравнения при помощи mtree текущего состояния файлов с моментом, когда создавался список. Если при сравнении будут найдены несоответствия mtree выведет на консоль информацию о них.</p>
<p>Нужно понимать, что файл со списком должен быть надежно защищен. Если злоумышленник найдет этот файл, то он сможет его изменить и он станет совершенно бесполезен. Для защиты лучше всего файл зашифровать и перенести с сервера на другую машину или еще лучше флешку.</p>
<p>Перейдем непосредственно к созданию списка:</p>
<pre class="brush: plain;">
cd /sbin
mtree -c -K uid,gid,mode,flags,size,cksum,md5digest,sha1digest,ripemd160digest &gt; /root/sbin-mtree
</pre>
<p>Теперь файл /root/sbin-mtree можно использовать для проверки.</p>
<pre class="brush: plain;">
cd /sbin
touch test
mtree &lt; /root/sbin-mtree
. changed
        modification time expected Wed Feb 17 14:19:16 2010 found Wed Mar 31 17:11:12 2010
test extra
</pre>
<p>Как видите, все достаточно просто. Поговорим немного об автоматизации и процессе использования mtree. Написать скрипт проверки не составляет проблемы, выглядеть он будет примерно так:</p>
<pre class="brush: bash;">
#!/bin/sh
MTREE_FILES_DIR='/mnt/security'
DIR_LIST='bin sbin etc root usr-bin usr-sbin usr-local-sbin usr-local-bin usr-local-etc boot'

for dir in $DIR_LIST; do
 realdir=&quot;/`/bin/echo $dir|/usr/bin/sed 's/-/\//g'`&quot;
 cd $realdir
 mtree_result=`/usr/sbin/mtree 2&gt;/dev/null &lt; $MTREE_FILES_DIR/${dir}-mtree
 if [ &quot;x$?&quot; != &quot;x0&quot; ]; then
   echo $mtree_result | mail admin@mail.domain
 fi
done
</pre>
<p>Здесь есть важный момент /mnt/security должен монтироваться в read-only по NFS например, так чтобы злоумышленник не мог поменять содержимое файлов.</p>
<p>Для FreeBSD я составил такой список каталогов, конечно же на рабоче системе будут и другие каталоги:<br />
/bin<br />
/sbin<br />
/etc<br />
/root<br />
/usr/bin<br />
/usr/sbin<br />
/usr/local/sbin<br />
/usr/local/bin<br />
/usr/local/etc<br />
/boot</p>
<p>Естественно безопасность добавляет проблем при работе, в данном случае придется при каждом обновлении системы или софта обновлять списки mtree. Но кто сказал, что будет легко?</p>
<p>П.С.<br />
Для написания заметки использовалась глава <strong>&#8220;Use mtree as a Built-in Tripwire&#8221;</strong> из книги <strong>&#8220;BSD hacks&#8221;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/313/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как посмотреть окружение запущенного процесса?</title>
		<link>http://mysyslog.ru/posts/277</link>
		<comments>http://mysyslog.ru/posts/277#comments</comments>
		<pubDate>Mon, 23 Nov 2009 12:52:28 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[env]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[process]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=277</guid>
		<description><![CDATA[Иногда нужно подсмотреть окружение запущенного процесса, для этого есть несколько способов и утилит.
Linux:
cat /proc/PID/environ
Solaris:
pargs -e PID
FreeBSD:
mount -t procfs none /proc
ps ewwwp PID
Общий подход для всех UNIX систем:
gcore PID
получим core файл
string core.PID
]]></description>
			<content:encoded><![CDATA[<p>Иногда нужно подсмотреть окружение запущенного процесса, для этого есть несколько способов и утилит.<br />
<strong>Linux:</strong><br />
cat /proc/PID/environ</p>
<p><strong>Solaris:</strong><br />
pargs -e PID</p>
<p><strong>FreeBSD:</strong><br />
mount -t procfs none /proc<br />
ps ewwwp PID</p>
<p><strong>Общий подход для всех UNIX систем:</strong><br />
gcore PID<br />
получим core файл<br />
string core.PID</p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/277/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

