The OpenNET Project / Index page

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

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

"Виртуальная папка для процесса."  +/
Сообщение от exp131 email(??) on 21-Фев-12, 10:27 
Уважаемые господа, дамы если таковые имеются.

Помогите разобраться с такой проблемой:
Есть определенный процесс для работы с сетью. Этот процесс использует для хранения временных файлов, например: /tmp/procname/ Однако есть необходимость запускать несколько параллельных процессов (реализовано через screen). Но проблема в том что они все пытаются писать/читать в /tmp/procname/ и в результате возникают коллизии, когда один процесс переписывает данные другого.
Хотелось как-то сделать так что бы каждый процесс считал что пишет в /tmp/procname а на самом деле эти каталоги были бы разные для каждого. Например создать что-то вроде алиаса. Пробовал жестко разделить процессы по Jail'ам, но на сервере 1 IP и все работают через него. Да и процессов параллельно нужно держать около 200. А создавать 200 jail накладно.

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

Оглавление

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


1. "Виртуальная папка для процесса."  +/
Сообщение от PavelR (??) on 21-Фев-12, 10:40 
>[оверквотинг удален]
> временных файлов, например: /tmp/procname/ Однако есть необходимость запускать несколько
> параллельных процессов (реализовано через screen). Но проблема в том что они
> все пытаются писать/читать в /tmp/procname/ и в результате возникают коллизии, когда
> один процесс переписывает данные другого.
> Хотелось как-то сделать так что бы каждый процесс считал что пишет в
> /tmp/procname а на самом деле эти каталоги были бы разные для
> каждого. Например создать что-то вроде алиаса. Пробовал жестко разделить процессы по
> Jail'ам, но на сервере 1 IP и все работают через него.
> Да и процессов параллельно нужно держать около 200. А создавать 200
> jail накладно.

Наскриптуй чруты (chroot)

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

2. "Виртуальная папка для процесса."  +/
Сообщение от exp131 email(ok) on 21-Фев-12, 10:44 
>[оверквотинг удален]
>> параллельных процессов (реализовано через screen). Но проблема в том что они
>> все пытаются писать/читать в /tmp/procname/ и в результате возникают коллизии, когда
>> один процесс переписывает данные другого.
>> Хотелось как-то сделать так что бы каждый процесс считал что пишет в
>> /tmp/procname а на самом деле эти каталоги были бы разные для
>> каждого. Например создать что-то вроде алиаса. Пробовал жестко разделить процессы по
>> Jail'ам, но на сервере 1 IP и все работают через него.
>> Да и процессов параллельно нужно держать около 200. А создавать 200
>> jail накладно.
> Наскриптуй чруты (chroot)

Думал об этом, но это так же придется копировать всю структуру файловой системы в новый chroot, а процессов много и так же много будет копий. А симлинки из под чрута не видны. Или я что-то делаю не так?


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

5. "Виртуальная папка для процесса."  +/
Сообщение от PavelR (??) on 21-Фев-12, 10:49 
>[оверквотинг удален]
>>> /tmp/procname а на самом деле эти каталоги были бы разные для
>>> каждого. Например создать что-то вроде алиаса. Пробовал жестко разделить процессы по
>>> Jail'ам, но на сервере 1 IP и все работают через него.
>>> Да и процессов параллельно нужно держать около 200. А создавать 200
>>> jail накладно.
>> Наскриптуй чруты (chroot)
> Думал об этом, но это так же придется копировать всю структуру файловой
> системы в новый chroot, а процессов много и так же много
> будет копий. А симлинки из под чрута не видны. Или я
> что-то делаю не так?

всю - не надо, только необходимую программе.
можно сделать одну базовую файловую структуру и копировать её скриптом при запуске.

а можно разрабов пнуть и сделать по-нормальному.

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

6. "Виртуальная папка для процесса."  +/
Сообщение от exp131 email(ok) on 21-Фев-12, 10:51 
>[оверквотинг удален]
>>>> Jail'ам, но на сервере 1 IP и все работают через него.
>>>> Да и процессов параллельно нужно держать около 200. А создавать 200
>>>> jail накладно.
>>> Наскриптуй чруты (chroot)
>> Думал об этом, но это так же придется копировать всю структуру файловой
>> системы в новый chroot, а процессов много и так же много
>> будет копий. А симлинки из под чрута не видны. Или я
>> что-то делаю не так?
> всю - не надо, только необходимую программе.
> можно сделать одну базовую файловую структуру и копировать её скриптом при запуске.

Как вариант можно попробовать.

> а можно разрабов пнуть и сделать по-нормальному.

Уже, но разрабы далеко и пока вестей от них мало.


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

3. "Виртуальная папка для процесса."  +/
Сообщение от Andrey Mitrofanov on 21-Фев-12, 10:45 
> временных файлов, например: /tmp/procname/ Однако есть необходимость запускать несколько

Если програма вдруг берёт честь /tmp из переменной TMP окружения, то ...
Если програма вдруг берёт честь procname/ из имени процесса, то ...

И то, и другое проверяется научным методом тыка.

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

4. "Виртуальная папка для процесса."  +/
Сообщение от exp131 email(ok) on 21-Фев-12, 10:48 
>> временных файлов, например: /tmp/procname/ Однако есть необходимость запускать несколько
> Если програма вдруг берёт честь /tmp из переменной TMP окружения, то ...

TMP не берет, проверено. (В первую очередь)

> Если програма вдруг берёт честь procname/ из имени процесса, то ...

А вот это как проверить?


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

7. "Виртуальная папка для процесса."  +/
Сообщение от Andrey Mitrofanov on 21-Фев-12, 10:52 
>> Если програма вдруг берёт честь procname/ из имени процесса, то ...
> А вот это как проверить?

Бинарник переименовать, хардлинка д.б.достаточно.

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

8. "Виртуальная папка для процесса."  +/
Сообщение от exp131 email(ok) on 21-Фев-12, 10:53 
>>> Если програма вдруг берёт честь procname/ из имени процесса, то ...
>> А вот это как проверить?
> Бинарник переименовать, хардлинка д.б.достаточно.

Не не помогает. Видимо путь жестко "зашит" в программе.

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

9. "Виртуальная папка для процесса."  +/
Сообщение от тень_pavel_simple on 21-Фев-12, 10:56 
>>>> Если програма вдруг берёт честь procname/ из имени процесса, то ...
>>> А вот это как проверить?
>> Бинарник переименовать, хардлинка д.б.достаточно.
> Не не помогает. Видимо путь жестко "зашит" в программе.

1. LD_PRELOAD
2. отредактровать путь
3. отредактировать прогу

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

10. "Виртуальная папка для процесса."  +/
Сообщение от exp131 email(ok) on 21-Фев-12, 10:58 
>>>>> Если програма вдруг берёт честь procname/ из имени процесса, то ...
>>>> А вот это как проверить?
>>> Бинарник переименовать, хардлинка д.б.достаточно.
>> Не не помогает. Видимо путь жестко "зашит" в программе.
> 1. LD_PRELOAD

Что это?
> 2. отредактровать путь

Так оно и нужно. Но как это сделать?
> 3. отредактировать прогу

Вариант рассматривается, но ввиду удаленности разрботчиков не сильно активно.


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

11. "Виртуальная папка для процесса."  +/
Сообщение от тень_pavel_simple on 21-Фев-12, 11:03 
>>>>>> Если програма вдруг берёт честь procname/ из имени процесса, то ...
>>>>> А вот это как проверить?
>>>> Бинарник переименовать, хардлинка д.б.достаточно.
>>> Не не помогает. Видимо путь жестко "зашит" в программе.
>> 1. LD_PRELOAD
> Что это?

http://lmgtfy.com/?q=unix+ld_preload
>> 2. отредактровать путь
> Так оно и нужно. Но как это сделать?

незнаю как во фряхе делать mount --bind -- но можно 100500 разделов замонтирjвать в один каталог попутно запуская просессы, вариант с симлинком должен прjйти -- в случае еслb прога не открывает и закрывает постоянно
>> 3. отредактировать прогу
> Вариант рассматривается, но ввиду удаленности разрботчиков не сильно активно.

бинари тоже можно -- при определённой сноровке -- включая такие изощерённые способы как elfsh


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

12. "Виртуальная папка для процесса."  +/
Сообщение от SubGun (ok) on 21-Фев-12, 12:16 
> Не не помогает. Видимо путь жестко "зашит" в программе.

Название программы секрет или она личного производства?

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

13. "Виртуальная папка для процесса."  +/
Сообщение от cryo (ok) on 21-Фев-12, 12:45 
>>>> Если програма вдруг берёт честь procname/ из имени процесса, то ...
>>> А вот это как проверить?
>> Бинарник переименовать, хардлинка д.б.достаточно.
> Не не помогает. Видимо путь жестко "зашит" в программе.

Если путь точно зашит в прогу в абсолютном виде, то берешь бинарь и говоришь:

sed -i .orig 's#/tmp/procname#/tmp/procna01#g' твой-бинарь

ВАЖНО! Длина строки должна остаться такой же!!! Иначе получишь нерабочую прогу.

ну или посмотри в бинарь на предмет как точно там путь зашит:

strings твой-бинарь | grep tmp

И соотв. подправь sed.

ВАЖНО! Длина строки должна остаться такой же!!! Иначе получишь нерабочую прогу.

Вот, к примеру, что получим с sed:

for ((i=1; i <= 20; i=$i+1)); do j=`printf "%02d" $i`; sed "s/usage:/UsA$j:/g" /usr/bin/sed > test.$i; done

./test.20 -?  
UsA20: sed ...

./test.2 -?
UsA02: sed ...


И т.д. Идея понятна? Можно создать сколько угодно экземпляров твоей программы с разными именами зашитого в прогу каталога и разными именами самой программы.

ВАЖНО! Длина строки должна остаться такой же!!! Иначе получишь нерабочую прогу.

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

14. "Виртуальная папка для процесса."  +/
Сообщение от cryo (ok) on 21-Фев-12, 12:46 
[удалено]
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "Виртуальная папка для процесса."  +/
Сообщение от exp131 email(ok) on 21-Фев-12, 13:33 
Проблема решилась. Разработчики откликнулись и исправили прогу. Всем спасибо за помощь.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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




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

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