<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; Помогите уменьшить bash скрипт.]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11046&amp;type=atom" />
	<updated>2015-10-31T09:49:23Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11046</id>
		<entry>
			<title type="html"><![CDATA[Re: Помогите уменьшить bash скрипт.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=98593#p98593" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>sys[0-9][0-9].txt</code></pre></div><p>все файлы вида sys01.txt, sys02.txt, ... sys99.txt. </p><div class="codebox"><pre><code>sys[0-9][0-9][0-9].txt</code></pre></div><p>все файлы вида sys001.txt, sys002.txt, ... sys999.txt. </p><div class="codebox"><pre><code>sys[0-9]*[0-9].txt</code></pre></div><p>все файлы вида sys<span class="bbu">0</span><span class="bbu">1</span>.txt, sys<span class="bbu">0</span>0<span class="bbu">1</span>.txt, sys<span class="bbu">0</span>любое-количество-любых-символов<span class="bbu">1</span>.txt и так далее для всех комбинаций цифр в указанных позициях.</p><p>Во всех выше приведенных случаях поиск ведется только в заданном каталоге. Поиск в глуину не производится. </p><p>Если Вам надо обработать все файлы вида sysX.txt, где X соответствует любому количеству цифр используйте комбинацию find &quot;$basedir&quot; -maxdepth 1 -name &#039;sys*.txt&#039;. Используя фильтры grep/sed/awk/perl можете добиться искомого результата.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2015-10-31T09:49:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=98593#p98593</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Помогите уменьшить bash скрипт.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=98592#p98592" />
			<content type="html"><![CDATA[<p><strong>Rumata</strong> всё получилось, спасибо Вам огромное. Вставил между скобками снежинку.<br />Вот так </p><div class="codebox"><pre><code>for f in &quot;$basedir&quot;/sys[0-9]*[0-9].txt</code></pre></div><p>Так как если ещё один ряд добавлять, то он исчет 3х значный файл, если 2 пары скобок, то 2х значный.<br />Осталось разобраться, как сделать чтобы искал и одно число в имени и если вдруг 4 значные будут в имени файла.</p>]]></content>
			<author>
				<name><![CDATA[wuratew]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31172</uri>
			</author>
			<updated>2015-10-31T09:28:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=98592#p98592</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Помогите уменьшить bash скрипт.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=98591#p98591" />
			<content type="html"><![CDATA[<p><strong>wuratew</strong><br />проверил, работает. Подскажите такой момент, я сообщение выше написал, если появится третий ряд цифр (тоесть теже самые тхт файлы, но с цифрами например 105,109), то как эта строка должна будет выглядеть?<br />Или например теже файлы но с одной цифрой, например: sys1.txt, sys8.txt?<br />И ещё вопрос, в под папках скрипт не будет искать похожие файлы?<br />А так очень здорово, я бы сказал великолепно, то что нужно, офигенно упростили его. Большая благодарность.</p><p>То есть имя файлы sysXXXX.txt<br />А под XXXX может быть любая цифра, (от 1 до 9999), и не обязательно по порядку, в разнобой.</p>]]></content>
			<author>
				<name><![CDATA[wuratew]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31172</uri>
			</author>
			<updated>2015-10-31T08:41:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=98591#p98591</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Помогите уменьшить bash скрипт.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=98578#p98578" />
			<content type="html"><![CDATA[<p><strong>Rumata</strong> ВАУ, как компактно выглядит, и совсем не так как у меня, класс. Завтра проверю, обесчаю и отпишусь. Ещё вопрос, а если 3 ряд цифр появится то, то строка </p><div class="codebox"><pre><code>for f in &quot;$basedir&quot;/sys[0-9][0-9].txt</code></pre></div><p>, должна будет выглядеть так?<br /></p><div class="codebox"><pre><code>for f in &quot;$basedir&quot;/sys[0-9][0-9][0-9].txt</code></pre></div><p>Ого, похоже что мне можно будет избавится от скрипта script.sh</p>]]></content>
			<author>
				<name><![CDATA[wuratew]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31172</uri>
			</author>
			<updated>2015-10-30T19:53:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=98578#p98578</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Помогите уменьшить bash скрипт.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=98577#p98577" />
			<content type="html"><![CDATA[<p>Попробуйте. Перед публикацией я проверил только на команде sleep с разными задержками в пределах 15 секунд. <br /></p><div class="codebox"><pre><code>
#!/bin/bash

basedir=&quot;${0%/*}&quot;

progname=&quot;$basedir/programma&quot;

invoke() {
	num=&quot;$(
		pidof -o $$ -o $PPID -o %PPID -x &quot;$progname&quot; \
		| pgrep -f &quot;$1&quot; \
		| wc -w
	)&quot;

	[ &quot;$num&quot; -eq 0 ] || return

	&quot;$progname&quot; &quot;$1&quot; &amp;
}

for f in &quot;$basedir&quot;/sys[0-9][0-9].txt
do
	invoke &quot;$f&quot;
done
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2015-10-30T19:50:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=98577#p98577</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Помогите уменьшить bash скрипт.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=98575#p98575" />
			<content type="html"><![CDATA[<p>1. да, так как уже запущена одна копия и вторая ненужна<br />2. да, так как процесс с командой отсутствует в запущенных процессах<br />3. да, конечно, можно запускать сразу filename01 и filename05 и так далее, если они отсутствуют в процессах.</p><p>ЗЫ. Все команды запуска перечислены в файле script.sh<br />То есть, там может и не быть строчки например с цифрами 06, или 02 <br /></p><div class="codebox"><pre><code>/home/temp/programma /home/temp/sys01.txt
/home/temp/programma /home/temp/sys02.txt
/home/temp/programma /home/temp/sys03.txt
/home/temp/programma /home/temp/sys04.txt
/home/temp/programma /home/temp/sys05.txt
/home/temp/programma /home/temp/sys06.txt
тут и далее меняются только цифры в имени файла
/home/temp/programma /home/temp/sys50.txt</code></pre></div><p>Ну как бы , допустим команда на выполнение сегодня нужна, а через неделю допустим нет.<br />Как пример закоментировать её или удалить. и чтобы она не выполнялась</p>]]></content>
			<author>
				<name><![CDATA[wuratew]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31172</uri>
			</author>
			<updated>2015-10-30T18:51:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=98575#p98575</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Помогите уменьшить bash скрипт.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=98574#p98574" />
			<content type="html"><![CDATA[<p>Я правильно понял задачу:</p><p>1. не запускать <strong>program filename_01</strong> если filename_01 уже в процессе обработки<br />2. немедленно запустить <strong>program filename_01</strong>, если этот файл не обрабатывается. <br />3. внешний скрипт script может запустить сразу несколько экземпляров программы program для разных файлов filename_nn</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2015-10-30T18:46:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=98574#p98574</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Помогите уменьшить bash скрипт.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=98550#p98550" />
			<content type="html"><![CDATA[<p>Добрый день. Помогите уменьшить bash скрипт.<br />Задача скрипта: Мониторить процесс, в случае его отсутствия запускать скрипт и выполнять команду по запуску. Если процесс присутствует, то ничего не запускать.<br />Программа запуска с параметрами выглядит так: /home/temp/programma /home/temp/sys01.txt<br />1. /home/temp/programma&nbsp; в единственном экземпляре<br />2. /home/temp/sys01.txt&nbsp; много текстовых файлов. различие только в цифрах имени файла.</p><p>Пример: В процессах висит команда /home/temp/programma /home/temp/sys02.txt, скрипт запускается по крону и проверяет, если есть, то закончить работу не запуская команду /home/temp/programma /home/temp/sys02.txt.<br />А также втотже момент проверки процесса отсутствует например /home/temp/programma /home/temp/sys15.txt, то он запускается команду /home/temp/programma /home/temp/sys15.txt, для того чтобы процесс появился.</p><p>Что на данный момент есть.<br /></p><div class="codebox"><pre><code>
#!/bin/bash

NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys01|wc -w`
NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys02|wc -w`
тут и далее много таких строк
NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys50|wc -w`

if [ $NUM -lt 0 ]
then
exit
else
/home/temp/script.sh  //в этом скрипте перечислены команды запуска , чуть ниже его код

fi
NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys01|wc -w`
NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys02|wc -w`
тут и далее много таких строк
NUM=`/bin/pidof -o $$ -o $PPID -o %PPID -x /home/temp/programma |pgrep -f sys50|wc -w`

if [ $NUM -lt 0 ]
then
exit
fi
exit 0 # прекращаем выполнение скрипта
</code></pre></div><p>Скрипт script.sh<br /></p><div class="codebox"><pre><code>
/home/temp/programma /home/temp/sys01.txt
/home/temp/programma /home/temp/sys02.txt
/home/temp/programma /home/temp/sys03.txt
тут и далее меняются только цифры в имени файла
/home/temp/programma /home/temp/sys50.txt
</code></pre></div><p>уф... увы, я не могу уменьшить скрипт (незнаю как правильно), будьте добры, помогите его уменьшить переменными или как ли ещё.</p>]]></content>
			<author>
				<name><![CDATA[wuratew]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31172</uri>
			</author>
			<updated>2015-10-30T13:20:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=98550#p98550</id>
		</entry>
</feed>
