<?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; env</title>
	<atom:link href="http://mysyslog.ru/posts/tag/env/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>Запись сообщений в syslog из shell скрипта</title>
		<link>http://mysyslog.ru/posts/434</link>
		<comments>http://mysyslog.ru/posts/434#comments</comments>
		<pubDate>Wed, 28 Apr 2010 10:48:45 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[env]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=434</guid>
		<description><![CDATA[Логи в скриптах можно вести несколькими способами, один из самых простых &#8211; записывать новые сообщения в какой-то файл. Но мне такой подход кажется неправильным. В системе уже есть специальный инструмент для ведения логов syslog. Вот его и стоит использовать!
Для добавления сообщений в syslog есть утилита logger. В принципе может писать сообщения и в отдельный файл. [...]]]></description>
			<content:encoded><![CDATA[<p>Логи в скриптах можно вести несколькими способами, один из самых простых &#8211; записывать новые сообщения в какой-то файл. Но мне такой подход кажется неправильным. В системе уже есть специальный инструмент для ведения логов syslog. Вот его и стоит использовать!<br />
Для добавления сообщений в syslog есть утилита logger. В принципе может писать сообщения и в отдельный файл. Напишу небольшую функцию, которую можно будет добавлять в любой скрипт для ведения логов.</p>
<pre class="brush: bash;">
add_log_message ()
{
 local logger='/usr/bin/logger'
 local tag='My Script'
 local port=514
 local host=localhost
 local facility='user'
 local level='notice'
 local message=$1
  if [ -z $message ]; then
        return 1
  else
    $logger -t &quot;$tag&quot; -p ${facility}.${level} -P $port -h $host &quot;$message&quot;
    if [ &quot;x$?&quot; != &quot;x0&quot; ]; then
        return 2
    fi
  fi
}

add_log_message 'Hello world'
</pre>
<p>Опция <strong>-t</strong> задает TAG, фактически TAG можно использовать для идентификации источника сообщения. Так же logger умеет отправлять сообщения syslog-у на другом сервер, т.е. легко можно организовать сбор всех типов логов на один сервер.</p>
<pre class="brush: plain; light: true;">
logger -P 514 -h logger.domain.ru 'Hello World'
</pre>
<p>По умолчанию logger пишет все сообщения в facility user с приоритетом notice, но это можно поменять используя ключ <strong>-p</strong>:</p>
<pre class="brush: plain; light: true;">
logger -p cron.warning 'Hello world'
</pre>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/434/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Быстрый способ создать большой файл при помощи dd</title>
		<link>http://mysyslog.ru/posts/430</link>
		<comments>http://mysyslog.ru/posts/430#comments</comments>
		<pubDate>Tue, 20 Apr 2010 15:33:41 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Новости]]></category>
		<category><![CDATA[env]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=430</guid>
		<description><![CDATA[Иногда для тестирования нужно создать какой-то большой файл. Для этого чаще всего применяют утилиту dd.
Файл создается обычно так:

dd if=/dev/zero of=/data/bigfile count=1024 bs=1024k

Получим файл размером в 1GB, причем dd честно 1024 раза запишет нули блоками по 1МБ. С 1Гб можно и потерпеть, но как быть с 10ГБ или 100ГБ? Ждать долго, да и диски жалко. Есть [...]]]></description>
			<content:encoded><![CDATA[<p>Иногда для тестирования нужно создать какой-то большой файл. Для этого чаще всего применяют утилиту dd.<br />
Файл создается обычно так:</p>
<pre class="brush: plain; light: true;">
dd if=/dev/zero of=/data/bigfile count=1024 bs=1024k
</pre>
<p>Получим файл размером в 1GB, причем dd честно 1024 раза запишет нули блоками по 1МБ. С 1Гб можно и потерпеть, но как быть с 10ГБ или 100ГБ? Ждать долго, да и диски жалко. Есть более быстрый и простой способ &#8211; опция <strong>seek</strong>. Смысл ее в том, что запись dd начнет только после нахождения определенного номера блока с начала вывода из if. Если я правильно понимаю физику процесса, то происходит это так: dd создает файл, ждет пока пройдет N блоков, указанных в seek, после чего начинает записывать блоки, указанные в count. Получается &#8220;пустой&#8221; файл большого размера. </p>
<pre class="brush: plain; light: true;">
dd if=/dev/zero of=/data/bigfile count=1 bs=1024k seek=`expr 1024 * 10`
</pre>
<p>Мгновенно получаем файл, размером в 10ГБ!</p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/430/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>
		<item>
		<title>Как приостановить процесс и потом вернуться к его исполнению в Linux</title>
		<link>http://mysyslog.ru/posts/236</link>
		<comments>http://mysyslog.ru/posts/236#comments</comments>
		<pubDate>Mon, 21 Sep 2009 12:58:29 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[env]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=236</guid>
		<description><![CDATA[Если у вас есть какой-то работающий процесс, например gzip, архивирующий большой объем данных, и вам вдруг стало необходимо проверить, а хватит ли места на диске, то вас совершенно необязательно прерывать архивирование.

Просто нажмите  Сtrl+z для приостановки текущего процесса. Процесс будет ожидать вашего возврат. Тем временем вы вернетесь в терминал из которого запустили gzip и сможете [...]]]></description>
			<content:encoded><![CDATA[<p>Если у вас есть какой-то работающий процесс, например gzip, архивирующий большой объем данных, и вам вдруг стало необходимо проверить, а хватит ли места на диске, то вас совершенно необязательно прерывать архивирование.<br />
<span id="more-236"></span><br />
Просто нажмите  Сtrl+z для приостановки текущего процесса. Процесс будет ожидать вашего возврат. Тем временем вы вернетесь в терминал из которого запустили gzip и сможете запустить любую команду.</p>
<p>Если вы хотите вернуться к процессу архивирования (или любому другому приостановленному процессу), то нужно только набрать команду<br />
fg %1<br />
которая активирует первый приостановленный процесс. Если процесс всего один параметр %1 необязателен. </p>
<p>Чтобы получить список всех приостановленных процессов нужно запустить команду<br />
jobs.</p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/236/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alias – хороший способ упростить свою жизнь в консоли.</title>
		<link>http://mysyslog.ru/posts/232</link>
		<comments>http://mysyslog.ru/posts/232#comments</comments>
		<pubDate>Mon, 21 Sep 2009 12:56:16 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Советы]]></category>
		<category><![CDATA[env]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=232</guid>
		<description><![CDATA[Любой unix-администратор проводит большую часть своего рабочего времени в консоли. Команды, команды и еще раз команды — вот наш хлеб. Но все равно хочется организовать свою работу так, чтобы в ней было меньше рутины. Хорошим подспорьем будет команда alias.

Синтаксис у нее очень простой:
alias name=value
После ее выполнения появится синоним name, который будет выполнять команду value. Звучит [...]]]></description>
			<content:encoded><![CDATA[<p>Любой unix-администратор проводит большую часть своего рабочего времени в консоли. Команды, команды и еще раз команды — вот наш хлеб. Но все равно хочется организовать свою работу так, чтобы в ней было меньше рутины. Хорошим подспорьем будет команда alias.<br />
<span id="more-232"></span><br />
Синтаксис у нее очень простой:<br />
alias name=value</p>
<p>После ее выполнения появится синоним name, который будет выполнять команду value. Звучит несколько запутанно, потому лучше показать на конкретном примере. </p>
<p>Я обычно набираю команду ls с одними и теми же параметрами (ls -la), тогда зачем писать каждый раз   три лишних символа, если можно один раз выполнить<br />
alias ls=&#8217;ls -la&#8217;<br />
после чего набирать только ls? В этом и заключается вся прелесть alias. Другой пример, можно создать собственные команды. В asterisk 1.4 для перезагрузки dialplan нужно выполнить из консоли   команду:<br />
asterisk -rx “dialplan reload”<br />
Заменим эту долгую и нудную строчку одной командой:<br />
alias dreload=&#8217;asterisk -rx “dialplan reload”&#8217;<br />
Теперь достаточно набрать только dreload (дописывание команд tab-ом никто не отменял).</p>
<p>Есть один нюанс, как только текущая сессия будет завершена все синонимы пропадут безвозвратно. Здесь спасет файл .profile, добавляем в него<br />
alias dreload=&#8217;asterisk -rx “dialplan reload”&#8217;<br />
alias ls=&#8217;ls -la&#8217;<br />
И при создании новой сессии все наши команды будут доступны. Ниже приведу список популярных синонимов.</p>
<p>Добавлю ложку дегтя. К хорошему привыкаешь быстро, но в один прекрасный день попадаешь на незнакомый сервер, набираешь свое любимую команду&#8230; а ее нет! </p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/232/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Поиск файлов в linux: find</title>
		<link>http://mysyslog.ru/posts/221</link>
		<comments>http://mysyslog.ru/posts/221#comments</comments>
		<pubDate>Mon, 21 Sep 2009 12:28:58 +0000</pubDate>
		<dc:creator>constantine.malov</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[env]]></category>

		<guid isPermaLink="false">http://mysyslog.ru/?p=221</guid>
		<description><![CDATA[Задача поиска определенных файлов или каталогов достаточно часто встречается в работе Unix-администратора. Начинающие администраторы решают ее странными и малоэффективными способами, например я в первые дни своего знакомства с linux использовал ls с ключом рекурсивного просмотра каталогов и потом натравливал grep на вывод ls. Согласитесь, выглядит достаточно дико.







А между тем в любом дистрибутиве есть утилита find [...]]]></description>
			<content:encoded><![CDATA[<p>Задача поиска определенных файлов или каталогов достаточно часто встречается в работе Unix-администратора. Начинающие администраторы решают ее странными и малоэффективными способами, например я в первые дни своего знакомства с linux использовал ls с ключом рекурсивного просмотра каталогов и потом натравливал grep на вывод ls. Согласитесь, выглядит достаточно дико.<br />
<span id="more-221"></span></p>
<div style="float:left; width:265px; height:265px;">
<script type="text/javascript"><!--
google_ad_client = "pub-5926413875763738";
/* wp-post-250x250 */
google_ad_slot = "6534377323";
google_ad_width = 250;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<p>А между тем в любом дистрибутиве есть утилита find &#8211; очень мощный и гибкий инструмент поиска. Возможности ее воистину огромны, как и огромен список доступных опций. Потому не буду касаться их всех, расскажу только о самых востребованных с моей точки зрения.<br />
Часто хорошее знание find позволяет сэкономить массу времени, так как правильно выбранная команда find может заменить собой небольшой скрипт, а иногда просто незаменима. Для работы с find не требуется запоминать что-то особенное, так как и сам синтаксис find очень простой, а названия опций знакомы любому unix-администратору:</p>
<pre class="brush: plain; light: true;">find dirname options</pre>
<p><strong>dirname</strong> – каталога, где искать<br />
<strong>options</strong> – набор опций поиска<br />
Опция <strong>-name</strong> задает имя искомого файла или каталога. Так же можно использовать маски. * &#8211; означает любой набор символов, ? &#8211; один любой символ, [] &#8211; набор искомых символов</p>
<pre class="brush: plain; light: true;">find /home -name .ss?</pre>
<p>Так можно найти все файлы в каталоги /home с названием .ss и еще одним любым символом.</p>
<pre class="brush: plain; light: true;">find /home -name “ivan*” </pre>
<p>find найдет все файлы и каталоги начинающиеся на ivan. Для поиска по владеющей группе есть опция <strong>-group</strong>. Нужно отметить опции <strong>-nogroup</strong> <strong>-nouser</strong>, при их использовании find будет искать файлы или каталоги с несуществующим владельцем или группой, т.е. такого логина нет в /etc/passwd или группы нет в /etc/group.</p>
<pre class="brush: plain; light: true;">find /var/log/ -name messages.[3-7].gz</pre>
<p>Найдет все файлы messages.n.gz, где n будет между 3 и 7<br />
Нужно помнить, что имена файлов зависят от регистра. Для поиска по именам фалов без учета регистра нужно использовать <strong>-iname</strong><br />
Одна из самых полезных опций <strong>-type</strong>, которая определяет тип файлов для поиска. Наиболее используемые: d – каталок; l – ссылки; f – обычный файл.</p>
<pre class="brush: plain; light: true;">find /home/ -type d</pre>
<p>Таким образом будут найдены все каталоги внутри /home.<br />
Наиболее часто используемая опция для ротации каких-то файлов <strong>-mtime</strong>, которая позволяет искать файлы по их дате модификации. В качестве параметра  передается число n. Число n &#8211; это время в часах, помноженное на 24. Например, если указать -mtime 10, то будут найдены файлы, измененные 10 дней назад. Важные модификаторы +/-. Если указать критерий поиска вот так, -mtime +10, которые не изменились за последние 10 дней. И наоборот, -mtime -10 будет искать файлы, которые изменялись в течение 10 дней. Кроме -mtime есть еще <strong>-ctime</strong> и <strong>-atime</strong>, а так же <strong>-amin</strong>, <strong>-cmin</strong>, <strong>-mmin</strong>. Нужно помнить, что BCD find отличается от GNU find. В общем они работают одинаково, но есть нюансы, в том числе при работе со временем, так что <strong>man find</strong> в любом случае посмотреть будет очень полезно.</p>
<pre class="brush: plain; light: true;">find /tmp -mtime +5</pre>
<p>Найдет все файлы, с датой модификации старше пяти дней.<br />
Дополнительная опция <strong>-daystart</strong> задает время отсчета от начала текущих суток.<br />
Для поиска по размеру предусмотрена опция <strong>-size</strong>, для нее есть несколько суффиксов, все их можно посмотреть в руководстве, суффикс <strong>с</strong> — указывает размер в байтах.</p>
<pre class="brush: plain; light: true;">find /home -size +10000000c</pre>
<p>Найдет все файлы в каталоге /home больше 10 мегабайт<br />
Еще одна полезная возможность реализована опциями <strong>-user</strong> и <strong>-group</strong>, с помощью которых можно искать по владельцу или группе файла.</p>
<pre class="brush: plain; light: true;">find /tmp -user ivan</pre>
<p>Будут найдены все файлы в каталоге /tmp, принадлежащие пользователю ivan<br />
Для инверсии результата используется символ !, <strong>нужно помнить об его экранировании</strong>.</p>
<pre class="brush: plain; light: true;">find /tmp \! -user ivan</pre>
<p>В таком варианте будут показаны все файлы, кроме принадлежащих ivan.<br />
Настоящую черную магию утилиты find содержит опция <strong>-exec</strong>. При ее помощи после нахождения файла может быть выполнена другая команда, которой передается путь до найденного файла. При совмещении ее с другими опциями одна строчка find может заменить достаточно сложный скрипт. Допустим, вы хотите удалять старые сессии в каталоге /tmp, которые остаются после работы mod_php вашего любимого web сервера apache:</p>
<pre class="brush: plain; light: true;">find /tmp -type f -daystart -mtime +3 -user nobody -exec rm -f {} \;</pre>
<p>Такая конструкция найдет все файлы в каталоге /tmp старше трех дней, отсчитывая время от начала текущего дня, принадлежащих пользователю nobody, после чего будет выполнена команда rf -f для каждого из найденных файлов. Или другой пример, нужный для поиска какого-то блока кода:</p>
<pre class="brush: plain; light: true;">find /www -type f -iname “*.php” -exec fgrep “Hello world” {} \;</pre>
<p>В этом случае будут найдены все php  файлы в каталоге /www, в каждом из них fgrep будет искать строчку «Hello world».<br />
Опция -exec считает командой строчку после себя и до символа ;, чтобы интерпретатор не воспринял его, как разделитель между командой find и какой-то еще следующей командой нужно ; экранировать. Путь до найденного файла содержится в конструкции {}.<br />
Иногда вложенность каталогов бывает очень большой, а искать нужно только в определенном уровне вложенности. Чтобы сократить время поиска можно задать максимальный (<strong>-maxdepth</strong>) и минимальный (<strong>-mindepth</strong>) уровни.</p>
<pre class="brush: plain; light: true;">find /usr/local/ -maxdepth 1 -type d</pre>
<p>Будут найдены только каталоги внутри /usr/local, find не будет искать далее в подкаталогах.<br />
find может искать файлы на основании прав на них, что бывает крайне полезно, для этого используется опция <strong>-perm</strong>:</p>
<pre class="brush: plain; light: true;">find /www -type f -perm 755</pre>
<p>Вот там будут найдены все файлы внутри каталога /www, у которых установлены права 755. Для -perm не обязательно указывать точные прав, а только какую-то часть. Для этого используются префиксы <strong>+</strong> и <strong>-</strong>. При использовании &#8211; будет искаться точное соответствие установленным битам, т.е. например:</p>
<pre class="brush: plain; light: true;">find /www f -perm -005</pre>
<p>Такой find будет искать файлы с правами 5 для остальных пользователей</p>
<pre class="brush: plain; light: true;">find /www f -perm -055</pre>
<p>А в этом случае find найдет фалы, у которых установлены права 5 и для группы и для всех остальных. В противовес &#8211; префикс + срабатывает для любой комбинации бит в правах:</p>
<pre class="brush: plain; light: true;">find /www f -perm +055</pre>
<p>find найдет все файлы с правами 5 у группы и у остальных, а так же с правами 5 у группы или у остальных.</p>
<pre class="brush: plain; light: true;">find /www f -perm -4000</pre>
<p>Проверяем, а нет ли у нас файлов setuid в /www.</p>
<p>В заключение хочу сказать и об отрицательной стороне использования find. После некоторого времени активного использования find к ней очень сильно привыкаешь, а когда приходится искать что-то в окошках, чувствуешь себя крайне неуютно без уже такого привычного find.</p>
]]></content:encoded>
			<wfw:commentRss>http://mysyslog.ru/posts/221/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

