<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Как узнать включен ли HyperThreading?]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=21196&amp;type=atom" />
	<updated>2012-03-28T14:50:00Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=21196</id>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263875#p263875" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>ну или итоговые варианты:</p></blockquote></div><div class="codebox"><pre><code>sed -rne &#039;/core id|physical id/{s/.*: (.*)/\1 /;H};/^$/{x;s/\n//g;p}&#039;  /proc/cpuinfo | wc -l</code></pre></div><p>ну не так уж и сложно в итоге получилось <img src="https://linuxforum.ru/img/smilies/bx.gif" alt="bx" /></p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2012-03-28T14:50:00Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263875#p263875</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263821#p263821" />
			<content type="html"><![CDATA[<p>мда... чего-то меня переклинело, что с H намного сложнее будет - хотел сначала читать N&#039;м, а потом парсить и добавлять в холд... в общем путь какая-то...<br />пара вариантов:<br /></p><div class="codebox"><pre><code>sed -rne &#039;/processor|core id|physical id/{s/.*: (.*)/\1 /;H};/^$/{x;s/\n//g;p}&#039;
sed -rne &#039;/processor|core id|physical id/{s/.*: (.*)/\1 /;H};x;/.*\n.*\n.*\n/{s/\n//g;p;s/.*//};x&#039;</code></pre></div><p>ну или итоговые варианты:<br /></p><div class="codebox"><pre><code>sed -rne &#039;/core id|physical id/{s/.*: (.*)/\1 /;H};/^$/{x;s/\n//g;p}&#039;  /proc/cpuinfo | wc -l
sed -rne &#039;/core id|physical id/{s/.*: (.*)/\1 /;H};x;/.*\n.*\n/{s/\n//g;p;s/.*//};x&#039; /proc/cpuinfo | wc -l</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Fat-Zer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11911</uri>
			</author>
			<updated>2012-03-28T12:42:57Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263821#p263821</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263806#p263806" />
			<content type="html"><![CDATA[<p><strong>Fat-Zer</strong>, чё я взъелся-то так? А всё потому, что вы _одноразовый_ не протестированный и недоделанный однострок предложили в качестве <strong>общего решения</strong>. Типа - тупо скопипастил, и получил результат. Подход правильный, вот только этот однострок должен быть далеко не одноразовым, и написанным человеком, который прекрасно понимает значение входных данных, и используемый ЯП. Ну а значение входных данных мы, к сожалению не понимаем <img src="https://linuxforum.ru/img/smilies/ac.gif" alt="ac" /></p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2012-03-28T12:03:43Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263806#p263806</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263803#p263803" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>если тупо записать:</p></blockquote></div><p>ну а если подумать?<br />Понятное дело, что у вас прочитается не та строчка. И разве не ясно, как это исправить?<br />Можно конечно начать разбор с &quot;processor&quot;, а потом ждать &quot;physical id&quot;, ну и потом ждать &quot;core id&quot;, загружая в цикле строчки... Но есть способ лучше - использовать команду <strong>H</strong> вместо <strong>N</strong>, и произвести парсинг после получения &quot;core id&quot;. Разве это не очевидно? Не? Ну тогда зачем вы вообще используете sed? Сложно выучить такой примитивный ЯП на половину... Проще него разве что BrainFuck, но он и придуман как &quot;простой&quot;, а sed придумана для обработки текстов. И свою задачу вополняет хорошо, не нуждаясь в дополнительных костылях (grep в данном случае - костыль, ибо никто не просил нас фильтровать строчки, это просто первое, что пришло вам в голову. Однако первое - почти всегда <strong>худшее</strong>.)</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2012-03-28T11:56:08Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263803#p263803</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263648#p263648" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>sed &#039;/условие/{скрипт;}&#039;</p></blockquote></div><p>дурачком прикидываетесь или и правда не понимаете? итак, почему это тут не работает, если тупо записать:<br />на входе:<br /></p><div class="codebox"><pre><code>processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
...</code></pre></div><p>как скрипт работает:<br /></p><div class="codebox"><pre><code>/processor|core id|physical id/{ # на первой строке срабатывает, в буфере: &quot;processor       : 0&quot;
    N # читаем вторую строку, в буфере &quot;processor       : 0\nvendor_id       : GenuineIntel&quot;
    N # читаем вторую строку, в буфере &quot;processor       : 0\nvendor_id       : GenuineIntel\ncpu family      : 6&quot;
    s/[^:]*: (.*)\n[^:]*: (.*)\n[^:]*: (.*)/\1 \2 \3/ # на выходе &quot;0 GenuineIntel 6&quot;
} # и так три раза.</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Fat-Zer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11911</uri>
			</author>
			<updated>2012-03-28T01:02:39Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263648#p263648</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263647#p263647" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>вы покажите хоть как без grep&#039;а сделать... болей-менее простым способом</p></blockquote></div><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>sed &#039;/условие/{скрипт;}&#039;</p></blockquote></div><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>чтобы это не уменьшило читаемость, которая, приходится признать, и так не на высоте.</p></blockquote></div><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>Оно и читается легче, теми кто с sed знаком (кто не знаком всё равно не распарсит).</p></blockquote></div><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>да... забыл дописать, что под интерфейсом тут понимаю не пользовательский, а программный, ну чтоб точки над &quot;и&quot; расставить...</p></blockquote></div><p>ага.<br /></p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>ну если рискнуть, и заглянуть внутрь маздайного приложения, мы и увидим знакомые костыли tongue<br />что, кстати, сильно облегчает их взлом.</p></blockquote></div><p>потому как в логически разрозненные кусочки намного проще вставить свою букашку. Вы это называете &quot;хорошим программным интерфейсом&quot;, я это называю глючащим и тормозным РЕШЕТОМ.</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2012-03-28T00:46:22Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263647#p263647</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263644#p263644" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>что, всё? с sort -u таки попроще. И уже можно сделать, если прочитать прошлые сообщения. Можно и без sort -u, это сложнее, и интереснее.</p></blockquote></div><p>вы покажите хоть как без grep&#039;а сделать... болей-менее <strong>простым</strong> способом, чтобы это не уменьшило читаемость, которая, приходится признать, и так не на высоте.<br /></p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>я не физик. да и физики тоже так не считают.</p></blockquote></div><p>я их как раз думал упомянуть их тут аль нет =)<br /></p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>очевидный интерфейс</p></blockquote></div><p>да... забыл дописать, что под интерфейсом тут понимаю не пользовательский, а программный, ну чтоб точки над &quot;и&quot; расставить...</p>]]></content>
			<author>
				<name><![CDATA[Fat-Zer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11911</uri>
			</author>
			<updated>2012-03-27T23:51:33Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263644#p263644</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263641#p263641" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>тогда хоть подскажите тогда, где они?</p></blockquote></div><p>если б нашёл - то я бы их процитировал хотя-бы. <img src="https://linuxforum.ru/img/smilies/ac.gif" alt="ac" /><br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>кстати... ну и как же это всё записать в один sed-скрипт?</p></blockquote></div><p>что, всё? с sort -u таки попроще. И уже можно сделать, если прочитать прошлые сообщения. Можно и без sort -u, это сложнее, и интереснее.<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>ИМХО можно условно считать программу рабочей, пока не будет найден контрпример</p></blockquote></div><p>я не физик. да и физики тоже так не считают.<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>только вот &quot;удобная&quot; это точно такой же НЁХ</p></blockquote></div><p>ага. хорошо, пусть будет<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>очевидный интерфейс</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2012-03-27T22:54:31Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263641#p263641</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263617#p263617" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p> Я доки видел, но таки не вдавался. Потому не помню.чёрт его знает, что это за НЁХ.</p></blockquote></div><p>тогда хоть подскажите тогда, где они? в /usr/src/linux/Documentation/ про это нет...<br /></p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>нет. Продолжать забивать шурупы молотком, ибо - работает. Ненадёжно, криво, сложно и долго; ну и хрен с ним. Разве это повод учится пользоваться отвёрткой?</p></blockquote></div><p>я просто завинтил крестовой шуруп плоской отвёрткой... может не так удобно, как крестовой, но шуруп в стене...<br /></p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>т.е. в нашем случае нужно grep и sed записать одним скриптом, причём так, что-бы в этом скрипте было как можно меньше структурных единиц, например команд s, ну а потом нам придётся решить</p></blockquote></div><p>кстати... ну и как же это всё записать в один sed-скрипт?<br /></p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>по вашему, правильный ответ в ЕДИНСТВЕННОМ случае это значит &quot;работает&quot;?</p></blockquote></div><p>ИМХО можно условно считать программу рабочей, пока не будет найден контрпример. на многоядерных системах оно тоже работает правильно... ИМХО должно и на остальных SMP работать...<br /></p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>Программа может быть &quot;рабочей и удобной&quot;, и &quot;нерабочей и неудобной&quot;.</p></blockquote></div><p>только вот &quot;удобная&quot; это точно такой же НЁХ</p>]]></content>
			<author>
				<name><![CDATA[Fat-Zer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11911</uri>
			</author>
			<updated>2012-03-27T19:47:38Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263617#p263617</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263315#p263315" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>я вообще не понял, причём тут это... подумал опечатка...</p></blockquote></div><p>ага. очепятка.<br /></p><div class="quotebox"><cite>man bash пишет:</cite><blockquote><p>&nbsp; &nbsp;Word Designators<br />&nbsp; &nbsp; &nbsp; &nbsp;Word designators are used to select desired words from the event.&nbsp; A : separates the event specification from the word&nbsp; designa-<br />&nbsp; &nbsp; &nbsp; &nbsp;tor.&nbsp; &nbsp;It&nbsp; may&nbsp; be&nbsp; omitted if the word designator begins with a ^, $, *, -, or %.&nbsp; Words are numbered from the beginning of the<br />&nbsp; &nbsp; &nbsp; &nbsp;line, with the first word being denoted by 0 (zero).&nbsp; Words are inserted into the current line separated by single spaces.</p><p>&nbsp; &nbsp; &nbsp; &nbsp;0 (zero)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; The zeroth word.&nbsp; For the shell, this is the command word.<br />&nbsp; &nbsp; &nbsp; &nbsp;n&nbsp; &nbsp; &nbsp; The nth word.<br />&nbsp; &nbsp; &nbsp; &nbsp;^&nbsp; &nbsp; &nbsp; The first argument.&nbsp; That is, word 1.<br /><strong>&nbsp; &nbsp; &nbsp; &nbsp;$&nbsp; &nbsp; &nbsp; The last argument.<br /></strong>&nbsp; &nbsp; &nbsp; &nbsp;%&nbsp; &nbsp; &nbsp; The word matched by the most recent `?string?&#039; search.<br />&nbsp; &nbsp; &nbsp; &nbsp;x-y&nbsp; &nbsp; A range of words; `-y&#039; abbreviates `0-y&#039;.<br />&nbsp; &nbsp; &nbsp; &nbsp;*&nbsp; &nbsp; &nbsp; All of the words but the zeroth.&nbsp; This is a synonym for `1-$&#039;.&nbsp; It is not an error to use * if there is just one word&nbsp; in<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the event; the empty string is returned in that case.<br />&nbsp; &nbsp; &nbsp; &nbsp;x*&nbsp; &nbsp; &nbsp;Abbreviates x-$.<br />&nbsp; &nbsp; &nbsp; &nbsp;x-&nbsp; &nbsp; &nbsp;Abbreviates x-$ like x*, but omits the last word.</p><p>&nbsp; &nbsp; &nbsp; &nbsp;If a word designator is supplied without an event specification, the previous command is used as the event.</p></blockquote></div><p>естественно <strong>!$</strong> <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /><br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>только вот в этой программе важна скорость написания... и т.к. размер не большой, то количество костылей не выходит за рамки разумного.</p></blockquote></div><p>верно. но верно только для <strong>одноразовых</strong> одностроков. А зачем вы тут использованную туалетную бумагу выложили? <img src="https://linuxforum.ru/img/smilies/bx.gif" alt="bx" /><br />однако, даже одноразовые одностроки быстрее и проще писать именно так, как я говорю, а не тупо дописывая в конец разные костылики. Иначе это получается (на практике) многострочный однострок, разобраться в котором нет уже никакой возможности, и костыли уже не помогают - ошибка где-то посередине, но даже добираться до этой середины жутко долго. А вот используя мой метод вы получаете компактный sed-однострок, к которому достаточно добавить ваше любимое wc -l, и получить профит.<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>кроме того мастдай конкатенацией костылей уж точно не славится... там что ни костыль, то комбайн...</p></blockquote></div><p>ну если рискнуть, и заглянуть внутрь маздайного приложения, мы и увидим знакомые костыли :p<br />что, кстати, сильно облегчает их взлом. Что до скриптов, так они в маздае вообще не работают. Да и смыла в них нет никакого: какой смысл делать bat файл из одной команды? А две туда уже и не вставить (точнее, вставить можно, но только если они несвязанные, а просто 2 команды). В принципе, в bash тоже имеется эта проблема. За то только в bash нативно вставляются shell команды, в любом другом ЯП (не shell) эти команды вставляются костыльно, потому нормально работать там можно только со встроенными функциями. Дилемма...</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2012-03-27T03:14:33Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263315#p263315</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263312#p263312" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>скажите как это в одном sed скрипте сделать, учитывая наличие N. простым способом у меня с ходу не получилось...</p></blockquote></div><div class="codebox"><pre><code>doc@dt:~/tmp$ grep &#039;processor\|core id\|physical id&#039; ci | sed -re &#039;N;N;s/[^:]*: (.*)\n[^:]*: (.*)\n[^:]*: (.*)/\1 \2 \3/&#039; -e &#039;s/[^ ]* //&#039;
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10
doc@dt:~/tmp$ grep &#039;processor\|core id\|physical id&#039; ci | sed -re &#039;N;N;s/[^:]*: (.*)\n[^:]*: (.*)\n[^:]*: (.*)/\1 \2 \3/;s/[^ ]* //&#039;
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10
doc@dt:~/tmp$ grep &#039;processor\|core id\|physical id&#039; ci | sed -r &#039;N;N;s/[^:]*: (.*)\n[^:]*: (.*)\n[^:]*: (.*)/\1 \2 \3/;s/[^ ]* //&#039;
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10
0 0
0 1
0 9
0 10
1 0
1 1
1 9
1 10</code></pre></div><p>м... чем вам <strong>N</strong> помешала-то? <strong>N</strong> прибавляет к внутреннему буферу sed следующую строку. Кстати, если команда не туда что-то добавляет (как <strong>=</strong>), то ваше -e всё равно не поможет, и необходимо ставить вторую sed. Насколько я помню, -e необходима только в ОДНОМ случае: когда вам внутри sed-скрипта потребуется использовать команду с параметром типа &quot;строка&quot;, ну например<br /></p><div class="codebox"><pre><code>sed -e &#039;W имя_файла&#039; -e &#039;ещё_команды&#039;</code></pre></div><p>тут точка с запятой будет считаться как часть &quot;имя_файла&quot; внутри скрипта, а если -e не написать, то вторая часть скрипта будет считаться за имя входного файла. Правда можно разделять команды переводом строки, а не только точкой с запятой, если ваша оболочка конечно на такое способна. Однако, команды с параметрами в одностроках - большая редкость. Следует подумать о sed-скрипте в виде файла.<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>ну да.... ничего лучшего пока не придумал... доков по сабжу не видел, код ковырять - не хочется... к тому же, если --=XliN=-- не обманул всех со злым умыслом, то пример вполне достоверен.</p></blockquote></div><p>у нас этот пример ЕДИНСТВЕННЫЙ. Найдите хотя-бы штук 10, а то у меня вот тоже нет под рукой многоядерных и многопроцессорных систем. Я доки видел, но таки не вдавался. Потому не помню.<br />чёрт его знает, что это за НЁХ.<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>две логические части: первая - выстроить в одну строчку три числа, вторая - удалить одно из них.</p></blockquote></div><p>эх... Ваще-то задача: выделить второе и третье число. Вы зачем-то выделяете ещё и первое. Если так рассуждать, то что вы [^:]* в начале не выделяете? Не число? Кстати вот ещё одна грубая ошибка: условие должно быть как можно более жёстким. Если в поле ТОЛЬКО ЦИФРЫ, то так и пишите: <strong>[0-9]+</strong>, скрипты и так опасные, потому всегда надо думать, и если условие не выполнилось, то либо выдавать ошибку и её проверять, либо эту ошибку обрабатывать как-то. Вот у вас только цифры, а вы пишите .* =&gt; злоумышленник сможет скормить вашему скрипту любую НЁХ. Да, это конечно <strong>в данном случае</strong> не важно, но... Зачем вам оставлять лишнюю дыру? Тут и не только в безопасности дело - если попадётся что-то не то, то <strong>поведение скрипта станет непредсказуемым</strong>. Оно может и не опасно, или безопасность вас не волнует, просто скрипт сработает хрен знает как, и выдаст хрен знает что. А дальше вы кормите конвейер хрен знает чем, и в итоге получаете не только хрен знает какую ошибку или хрен знает что, но ещё и хрен знает где. Естественно, исправлять тоже хрен знает как. Проще выкинуть скрипт в мусорку, как и всю вашу работу по созданию костылей и подпорочек. Уж поверьте мне, я такого быдлокода повыкидывал немало (ИЧСХ своего). Впрочем: наступать на грабли - ваше священное право. А если кто вам говорит &quot;не ходи туда, грабли&quot;, то можете его и послать, а чё - вы свободны.<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>ну не знаю я awk, и пока не испытываю потребности в его изучении... и что мне теперь? не предлагать альтернативные варианты? лизнуть розетку? повеситься?</p></blockquote></div><p>нет. Продолжать забивать шурупы молотком, ибо - работает. Ненадёжно, криво, сложно и долго; ну и хрен с ним. Разве это повод учится пользоваться отвёрткой? :p<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>для этого уже предполагается использовать bash...</p></blockquote></div><p>дык bash во первых считает через хрен пойми как, так и со строками работает не лучше. Его только как связку, ну или там для _простых_ операций с числами и строками. Ещё он тормооооознооооой. Т.е. в теоретических примерчиках bash всё умеет, вплоть до встроенной СУБД, а на практике... Как морской бой на BrainFuck&#039;е. Т.е. только простенькие задачи можно, вот например Патрег сделал БД в виде простого текствого файла, который потом грузится в bash-массив. Для сетевых интерфейсов, eth0, eth1, и т.д. Всё отлично работает. Вот как у меня. У меня этих eth ровно 3 штуки (на одном из компьютеров, на других вообще по одному).<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>это всеобщий метод и он вполне имеет право на существование.</p></blockquote></div><p>это с какого такого перепугу он стал &quot;всеобщим&quot;? Всеобщий метод - поделить программу на отдельные модули, и развивать их самостоятельно, до тех пор, пока разработчик сможет этот модуль целиком в голове держать. Как не сможет - делить модуль на отдельные части. Как же вы скрипт пишете, если даже один однострок в голове удержать не в состоянии?? IRL задачки куда как больше. У нас задачка вполне примитивная, и делить её имеет смысл только если у нас нет подходящего инструмента (т.е. в нашем случае нужно grep и sed записать одним скриптом, причём так, что-бы в этом скрипте было как можно меньше структурных единиц, например команд s, ну а потом нам придётся решить, как выделять повторяющиеся строчки, sed&#039;ом делать sort -u довольно костыльно(хоть и можно), потому придётся применить другой инструмент, при этом ещё и придётся подумать, что произойдёт на стыке этих команд, если что-то пойдёт не так. IRL это очень непростая задача, в итоге получится sed через bash-связку sort -u)<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>т.к. самое главное. чтобы что-то работало, работало без ошибок</p></blockquote></div><p>по вашему, правильный ответ в ЕДИНСТВЕННОМ случае это значит &quot;работает&quot;? Не... &quot;Работает&quot;, это когда строго доказано, что при ЛЮБЫХ входных данных программа выдаст верный ответ, или вменяемое сообщение об ошибке, если входные данные недопустимы. Это конечно идеал, но вашему скрипту до этого идеала как до самой дальней галактики.<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>и имело очевидный интерфейс</p></blockquote></div><p>в данном случае &quot;интерфейса&quot; в смысле человеко-машинного просто тупо нет. Есть интерфейс с ядром, потому тут проще. Это я про входной. Что касается выходного, то перед wc -l неплохо было-бы выдать удобочитаемый для человека листинг, в котором написано, на основании какой информации из ядра программа сделала такой вывод. Полезно хотя-бы в отладочных целях. Просто cat /proc/cpuinfo на такой листинг не катит, нужно где-то по середине оформить вывод в консоль нужных оформленных строчек. А то к ответу &quot;17&quot; веры у меня никакой нет. Т.ч. с интерфейсом у вас тоже никак.<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>а уж красота - это второй план.</p></blockquote></div><p>если честно, что такое &quot;красота&quot; по отношению к программе - я не знаю. Программа может быть &quot;рабочей и удобной&quot;, и &quot;нерабочей и неудобной&quot;. Это две крайние точки двухмерного пространства. Наша задача - достигнуть бесконечно удалённой точки, где абсцисса и ордината сходятся вместе, двигаясь из точки 0. Вот и всё.</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2012-03-27T02:50:13Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263312#p263312</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263309#p263309" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>я вам зря что-ли про $! рассказывал?! Это очень сильное колдунство. Попробуйте.</p></blockquote></div><p>я вообще не понял, причём тут это... подумал опечатка...<br /></p><div class="quotebox"><cite>man bash пишет:</cite><blockquote><p>! <br />Expands to the process ID of the most recently executed background (asynchronous) command.</p></blockquote></div><p>или что не так?<br /></p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>Однострок - тоже программа, и писать его можно вообще говоря тремя способами (как и программу) .</p></blockquote></div><p>только вот в этой программе важна скорость написания... и т.к. размер не большой, то количество костылей не выходит за рамки разумного.<br />кроме того мастдай конкатенацией костылей уж точно не славится... там что ни костыль, то комбайн...</p>]]></content>
			<author>
				<name><![CDATA[Fat-Zer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11911</uri>
			</author>
			<updated>2012-03-27T01:49:08Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263309#p263309</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263307#p263307" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>ну во первых, тут та же беда, что и с cat: зачем две команды-то? когда и sed это просто навороченная grep. Что, &quot;удобнее&quot;?</p></blockquote></div><p>скажите как это в <strong>одном</strong> sed скрипте сделать, учитывая наличие N. простым способом у меня с ходу не получилось...</p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>Во вторых, с core id разобрались? Зачем оно? Что-бы потом отсортировать, в предположении, что у процессоров на одно физическое ядро обязательно приходится уникальное core id? А почему это так? А что это вообще такое? Сама логика скрипта построена на единственном частном случае.</p></blockquote></div><p>ну да.... ничего лучшего пока не придумал... доков по сабжу не видел, код ковырять - не хочется... к тому же, если <strong>--=XliN=--</strong> не обманул всех со злым умыслом, то пример вполне достоверен.</p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>В третьих, а что так любят использовать sed с опцией -e? Да ещё и с двумя скриптами? Очевидно, что про точку с запятой вы знаете, но почему-то всё равно бьёте скрипт на две части? Опять-таки - зачем? Осложнить жизнь читателю?</p></blockquote></div><p>две логические части: первая - выстроить в одну строчку три числа, вторая - удалить одно из них.</p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>В четвёртых, вы бьёте строку на три поля, потом выводите поля №1, №2 и №3, и затем поле №1 стираете. Какой в этом смысл? Легче писать? Бред полный, просто-бы стёрли \1 в прошлой команде, и тогда первое поле не пропечатолось.</p></blockquote></div><p>мда... согласен... это выглядит нелогично... но см. п.3</p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>В пятых, для работы с полями уместнее gawk, а не эта ваша sed.</p></blockquote></div><p>ну не знаю я awk, и пока не испытываю потребности в его изучении... и что мне теперь? не предлагать альтернативные варианты? лизнуть розетку? повеситься?</p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>Она ещё и считать умеет, и смогла-бы просто посчитать число ядер, и поделить его на число cpu. (см. во вторых. На sed это сделать очень сложно)</p></blockquote></div><p>для этого уже предполагается использовать bash...</p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>Но самое главное конечно это маздайный метод тыка:<br />1. написать какую-то НЁХ<br />2. т.к. это работает совсем не так как надо, дописать чего-то для исправления/доделывания<br />3. goto 2, до тех пор, пока не получится верный ответ.</p></blockquote></div><p>это всеобщий метод и он вполне имеет право на существование. т.к. самое главное. чтобы что-то работало, работало без ошибок и имело очевидный интерфейс, а уж красота - это второй план.</p>]]></content>
			<author>
				<name><![CDATA[Fat-Zer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11911</uri>
			</author>
			<updated>2012-03-27T01:33:17Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263307#p263307</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263304#p263304" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>3. мне влом писать &quot;посчитайте количество строчек&quot;<br />4. в скриптах</p></blockquote></div><p>3. см пункт №2.<br />4. мимо кассы. Кстати, IRL в скриптах я что-то эту команду очень редко юзаю. Просто потому, что IRL надо либо получить строчку с результатом, и её юзать, либо получить список строк, и обрабатывать их отдельно. wc -l, как побочный результат (если это нужно), во втором случае можно и посчитать, если оно конечно надо. <br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>&nbsp; &nbsp; </p><div class="quotebox"><blockquote><p>Да и зачем оно нужно, если к BIOS&#039;у доступа всё равно нет?</p></blockquote></div><p>это как?</p></blockquote></div><p>два варианта:<br />1. доступа к BIOS нет(злой одмин не включает). Ну нет, и нет. Зачем узнавать то, что не изменить? Может у злого одмина какие-то свои резоны.<br />2. доступ есть (добрый одмин) - можно спросить, и при желании включить.<br />Ну конечно можно придумать третий случай, когда сервер свой, в соседней комнате, идти лениво. Ну дык пусть пока так работает... <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /><br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>дык порядок: сделал cat, подумал, нажал вверх дописал grep, не то... ещё подумал, исправил выражение итд..</p></blockquote></div><p>см. выше про маздайный метод. ИЧСХ, клавиш вам нажимать не меньше(с маздайным методом), если не больше. Правда нужно немного думать, но это полезно.<br />Однострок - тоже программа, и писать его можно вообще говоря тремя способами (как и программу) <br />1. каждый раз с нуля<br />2. добавляя костыли и подпорки<br />3. изменяя некоторые части, полностью или частично.<br />Какой способ лучше? Конечно №3. Но вы используете №2.<br />(вообще говоря, формально №1 и №2 это терминальные стадии №3, где вы видели IRL терминальные стадии??)<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>если файл на конце, то нужно сильно назад стрелками отбивать... а если у него ещё и имя большое...</p></blockquote></div><p>я вам зря что-ли про <strong>$!</strong> рассказывал?! Это очень сильное колдунство. Попробуйте.<br />(правда на grep &#039;xx&#039;&nbsp; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|sed &#039;&#039;|ещё 100500 команд данное колдунство уже не действует, если надо grep &#039;xx&#039; поменять)</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2012-03-27T01:14:57Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263304#p263304</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как узнать включен ли HyperThreading?]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=263302#p263302" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>да уж будьте добры, просветите, что тут не так...</p></blockquote></div><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>grep &#039;processor\|core id\|physical id&#039; /proc/cpuinfo | sed -re &#039;N;N;s/[^:]*: (.*)\n[^:]*: (.*)\n[^:]*: (.*)/\1 \2 \3/&#039; -e &#039;s/[^ ]* //&#039; | sort -u | wc -l</p></blockquote></div><p>ну во первых, тут та же беда, что и с cat: зачем две команды-то? когда и sed это просто навороченная grep. Что, &quot;удобнее&quot;? А зачем такое советовать? Если даёте совет, будьте любезны, напишите код грамотно, а не так, как вам это &quot;удобнее&quot;, как видите, за вами повторяют, и используют ваши команды для других целей. В данном случае _вам_ не нужно набирать grep, но _читателю_ ведь придётся? А для кого вы это вообще написали? для себя? (кстати, лично вас это не касается, но вообще это замечание важно для любой грамотности, в т.ч. и для русского - слово &quot;карова&quot; прочитать сложнее чем &quot;корова&quot;, хотя и так понятно, о чём тут речь).<br />Т.е. следует заменить grep &#039;условие&#039; | sed &#039;скрипт&#039; на sed &#039;/условие/{скрипт;}&#039;. Оно и читается легче, теми кто с sed знаком (кто не знаком всё равно не распарсит).</p><p>Во вторых, с core id разобрались? Зачем оно? Что-бы потом отсортировать, в предположении, что у процессоров на одно физическое ядро обязательно приходится уникальное core id? А почему это так? А что это вообще такое? Сама логика скрипта построена на единственном частном случае.</p><p>В третьих, а что так любят использовать sed с опцией -e? Да ещё и с двумя скриптами? Очевидно, что про точку с запятой вы знаете, но почему-то всё равно бьёте скрипт на две части? Опять-таки - зачем? Осложнить жизнь читателю?</p><p>В четвёртых, вы бьёте строку на три поля, потом выводите поля №1, №2 и №3, и затем поле №1 стираете. Какой в этом смысл? Легче писать? Бред полный, просто-бы стёрли \1 в прошлой команде, и тогда первое поле не пропечатолось.</p><p>В пятых, для работы с полями уместнее <strong>gawk</strong>, а не эта ваша sed. Она ещё и считать умеет, и смогла-бы просто посчитать число ядер, и поделить его на число cpu. (см. во вторых. На sed это сделать очень сложно)</p><p>Ну и ещё 100500 мелочей, о которых и вспоминать не хочется...</p><p>Но <strong>самое главное</strong> конечно это маздайный метод тыка:<br />1. написать какую-то НЁХ<br />2. т.к. это работает совсем не так как надо, дописать чего-то для исправления/доделывания<br />3. goto 2, до тех пор, пока не получится верный ответ.<br />Ну и что вы хотите получить от меня, акромя sage.jpg? Я уж молчу про то, что вы получите от тех, кто этот ваш writeonly &quot;код&quot; будет затачивать под свои нужды или поддерживать...</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2012-03-27T00:51:41Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=263302#p263302</id>
		</entry>
</feed>
