The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"передать файл через буфер"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на рабочей станции (Разное)
Изначальное сообщение [ Отслеживать ]

"передать файл через буфер"  +/
Сообщение от Сеня (??) on 21-Окт-12, 13:25 
есть скрипт условно вида
echo "blablabla"> file1 | proga1 < file1 > file2

возник вопрос:
как скормить программе proga1  file1 не производя его запись на диск,поскольку диск ноутбучный ssd и запись пары миллиардов file убьют его нафиг :(
proga1 умеет брать данные только из файла
мысли решения кроме ram-диска не приходят,но явно же должен быть другой вариант


Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "передать файл через буфер"  +/
Сообщение от XAnder (ok) on 22-Окт-12, 10:03 
> echo "blablabla"> file1 | proga1 < file1 > file2
> как скормить программе proga1  file1 не производя его запись на диск,поскольку
> proga1 умеет брать данные только из файла
> мысли решения кроме ram-диска не приходят,но явно же должен быть другой вариант

Что если проге1 вместо настоящего файла подсунуть трубу (pipe, FIFO), а данные заливать в другой конец этой трубы? Как-то так (не проверял):

$ mkfifo pipe
$ proga1 pipe &
$ echo "blablabla" > pipe

С прогами, читающими файлы строго последовательно, такое обычно хорошо прокатывает.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "передать файл через буфер"  +/
Сообщение от Andrey Mitrofanov on 22-Окт-12, 10:21 
>> echo "blablabla"> file1 | proga1 < file1 > file2
>> как скормить программе proga1  file1 не производя его запись на диск,поскольку
>> proga1 умеет брать данные только из файла
>> мысли решения кроме ram-диска не приходят,но явно же должен быть другой вариант
> Что если проге1 вместо настоящего файла подсунуть трубу (pipe, FIFO), а данные
> заливать в другой конец этой трубы? Как-то так (не проверял):

Он тащем-та это и написал. Только пару лишних под-строк '> file1' и '< file1' нагенерил:

echo "blablabla" | proga1 > file2

Некоторые эстеты написали бы даже:

proga1 <<<"blablabla" > file2


Далее... Перечитываею отквоченное и ещё раз перечитываю...

>> proga1 умеет брать данные только из файла

proga1 <( echo "blablabla" ) >file2

- даст проге именно имя _созданного _шелом пайпа в arg[1].

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "передать файл через буфер"  +/
Сообщение от XAnder (ok) on 22-Окт-12, 10:35 
> Он тащем-та это и написал. Только пару лишних под-строк '> file1' и
> '< file1' нагенерил:

Да нет, у него труба получилась бы безымянная, а proga1, судя по всему, хочет файл с именем из командной строки своей.

> echo "blablabla" | proga1 > file2
> Некоторые эстеты написали бы даже:
> proga1 <<<"blablabla" > file2

Эстетов оставим в покое :-)

> Далее... Перечитываею отквоченное и ещё раз перечитываю...
>>> proga1 умеет брать данные только из файла
> proga1 <( echo "blablabla" ) >file2
> - даст проге именно имя _созданного _шелом пайпа в arg[1].

Верно, но это же башизм, если мне не изменяет склероз.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "передать файл через буфер"  +/
Сообщение от Andrey Mitrofanov on 22-Окт-12, 17:01 
> Верно, но это же башизм, если мне не изменяет склероз.

Глазасный! Углядел требование поссикс-совместимости в указании раздела = "(Разное)"?

___сработало - bash,zsh,ksh(ужос!"AT&T"?!), не сработало tcsh,dash

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "передать файл через буфер"  +/
Сообщение от XAnder (ok) on 22-Окт-12, 17:18 
>> Верно, но это же башизм, если мне не изменяет склероз.
> Глазасный! Углядел требование поссикс-совместимости в указании раздела = "(Разное)"?
> ___сработало - bash,zsh,ksh(ужос!"AT&T"?!), не сработало tcsh,dash

Эх... Ну да, каюсь, есть у меня бзик на совместимости. Даже если точно знаю, что мой скрипт нигде, окромя подконтрольных мне систем выполняться не будет. Однако же когда-то это мне сэкономило кучу времени при переезде с фряхи на линух. А главный минус заключается в том, что порою совершенно банальные скрипты в погоне за совместимостью разрастаются до галактических размеров.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

5. "передать файл через буфер"  +/
Сообщение от Сеня (??) on 22-Окт-12, 17:13 
>[оверквотинг удален]
>> заливать в другой конец этой трубы? Как-то так (не проверял):
> Он тащем-та это и написал. Только пару лишних под-строк '> file1' и
> '< file1' нагенерил:
> echo "blablabla" | proga1 > file2
> Некоторые эстеты написали бы даже:
> proga1 <<<"blablabla" > file2
> Далее... Перечитываею отквоченное и ещё раз перечитываю...
>>> proga1 умеет брать данные только из файла
> proga1 <( echo "blablabla" ) >file2
> - даст проге именно имя _созданного _шелом пайпа в arg[1].

по разному крутил по всем вариантам самое безобидное получил Syntax error: "(" unexpected
proga1 имя файла хочет реальное
прикрутил пока через tmpfs -работает шустрее, но не по-человечески же это

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

7. "передать файл через буфер"  +/
Сообщение от XAnder (ok) on 22-Окт-12, 17:37 
> по разному крутил по всем вариантам самое безобидное получил Syntax error: "("
> unexpected
> proga1 имя файла хочет реальное
> прикрутил пока через tmpfs -работает шустрее, но не по-человечески же это

1. Что за система, что за шелл? (ну там про телепатов и всё такое... :-)

2. Как крутили? Если хотите помощи, постарайтесь изложить, что уже успели предпринять, приведите команды, чтобы не повторяться.

3. Вот, проверил, работает:

$ mkfifo pipe
$ cat pipe > log &
$ echo "blablabla" > pipe
$ cat log
blablabla
[1] + Done                       cat pipe 1>log
$

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "передать файл через буфер"  +/
Сообщение от Сеня (??) on 22-Окт-12, 17:53 

> 1. Что за система, что за шелл? (ну там про телепатов и
> всё такое... :-)

:) да понятно конечно
ubuntu 11.10  пробовал bash и даже csh

> 2. Как крутили? Если хотите помощи, постарайтесь изложить, что уже успели предпринять,
> приведите команды, чтобы не повторяться.

все три приведенных способа и пробовал
с echo и cat и у меня работает :) ,а вот с конкретной proga1 -не работает
выкрутился пока прогоном файлов через виртуалку (sudo mount -o remount,size=512m /dev/shm)

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "передать файл через буфер"  +/
Сообщение от XAnder (ok) on 23-Окт-12, 12:31 
> все три приведенных способа и пробовал
> с echo и cat и у меня работает :) ,а вот с
> конкретной proga1 -не работает

Значит эта прога или читает файл не строго последовательно или пытается определить его размер, или отображает файл в память или ещё как-то отклоняется от обычного простого поведения. Про FIFO можно забыть. Промежуточный файл всё равно придётся делать тем или иным образом.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "передать файл через буфер"  +/
Сообщение от pavel_simple (ok) on 25-Окт-12, 07:30 
> есть скрипт условно вида
> echo "blablabla"> file1 | proga1 < file1 > file2
> возник вопрос:
> как скормить программе proga1  file1 не производя его запись на диск,поскольку
> диск ноутбучный ssd и запись пары миллиардов file убьют его нафиг
> :(
> proga1 умеет брать данные только из файла
> мысли решения кроме ram-диска не приходят,но явно же должен быть другой вариант

echo "blablabla" | proga1 /dev/stdin file2

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру