Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

linux Ubuntu подскажите нормальную виртуальную машину для запуска файлов

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

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

я нашел lxc -, но потом прочитал что она не сильно хороша и что у нее есть много недоработок

подскажите какуюто нормальную вирт машину..., а если и совсем не влом то ссилку как ее нужно ставить

или может существует иной способ безопасно запустить такие приложения

мне как бы не нужно ставить в этой машине какие то ОС или еще что нибудь... просто нужно безопасно запускать файлы не боясь что ихний код что нибудь сделает не то

знаю тема специфическая, но может кто нить знает что то об єтом

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

если я из джавы через Runtime.getRuntime ().exec (...) — запускаю файл на выполнение то как мне узнать память какую он потребляет?

какую команду выполнить?

Например, так (или вынести «ps aux» в sh-файл):

Runtime.getRuntime().exec("ps aux").getOutputStream();

С ходу не помню правильные флаги, почитайте ман по ps.

IMHO qemu/kvm + oprofile w jit support

В джаве вроде можно довольно легко считать выходные потоки процесса, запущенного из нее.

ну можно... только от какие потоки вы имели ввиду...?
если я из джавы через Runtime.getRuntime ().exec (...) — запускаю файл на выполнение то как мне узнать память какую он потребляет?
какую команду выполнить?
думал сделать так:

pidof -s name_of_proc — достает ПИД из имени процеса -, но имя процеса не уникально и может повторятся...


1) померять память
2) запустить процес
3) снова померять память и отнять разницу

(я думаю что это не очень хороший алгоритм)

Не очень:) Как по мне лучше:

Как вариант можете выполнить ps и проанализировать ее выходной поток (это конечно изврат).

В джаве вроде можно довольно легко считать выходные потоки процесса, запущенного из нее.

com.sun.management.OperatingSystemMXBean

Если я все правильно помню, то он вам вернет инфу про ОС, а не про конкретный процесс.

java.lang.management.MemoryUsage

Этот, вроде бы, только про процесс джавы, вы же запускаете новый.

RuntimeMXBean

Runtime.getRuntime ().totalMemory ()

Это, вроде бы, тоже инфа про состояние процесса Джавы.

если вам не сложно назовите их

назову если вам интересно, но смысла большого из них нет (хотя я их только на лине тестил)

вот этот код выводит все (или почти все) средства для работы с памятью и с процесором

OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
        for (Method method : operatingSystemMXBean.getClass().getDeclaredMethods())
        {
            method.setAccessible(true);
            if (method.getName().startsWith("get")
                    && Modifier.isPublic(method.getModifiers()))
            {
                Object value;
                try
                {
                    value = method.invoke(operatingSystemMXBean);
                } catch (Exception e)
                {
                    value = e;

} // try
                System.out.println(method.getName() + " = " + Long.valueOf(value.toString())/1024/1024);
            } // if
        } // fo

тоесть это такие класы и ф-и как
java.lang.management.MemoryUsage
com.sun.management.OperatingSystemMXBean
RuntimeMXBean
Runtime.getRuntime ().totalMemory ()
искал на многих сайтах… и видил один и тот же алгоритм только разными способами (класами)
1) померять память
2) запустить процес
3) снова померять память и отнять разницу
(я думаю что это не очень хороший алгоритм)
если вирт боксы решат эту проблему своей внутреней статистикой то я буду очень рад (каюсь, я к ним еще не сильно смотрел)

нащет ps — еслы бы я мог узнать айди вызываемого процеса то в таком случае это далобы толк…, а так я только могу узнать айди главного процеса… так что думаю это отпадает

запускается файл через Runtime ().getRuntime ().exec (...); и нужно померять сколько памяти сожрал єтот запущеній процес... знаю в джаве есть много класов для єтого...

К сожалению, я так не извращался таким не занимался, по этому не знаю о каких классах вы говорите (если вам не сложно назовите их).
Для меня лично, очень сомнительно что это можно сделать средствами джавы. Как вариант можете выполнить ps и проанализировать ее выходной поток (это конечно изврат).

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

silverwolf
извиняюсь за долгое отсутствие... (сесия у меня:))
померять память — это как на разных контестных сайтах (типа acmp.ru)... запускается файл через Runtime ().getRuntime ().exec (...); и нужно померять сколько памяти сожрал єтот запущеній процес... знаю в джаве есть много класов для єтого... я юзал их, но все они відавали уж очень неправдоподобній результат...

PS єто все исполняется на линуксе... убунте...

И все-таки VirtualBox. Под него накручивается какой-нибудь минимальный Линукс из тех, которые LiveCD/USB и готова площадка для экспериментов. Вобщем-то затрачиваемые ресурсы больше от гостаевой ОС зависят, чем от самой ВМ. У меня сейчас на ноуте целая виртуальная сеть бегает на таких ВМ.

ну сли ві уже память зацепили то может кто нибудь скажет как ее померять в джаве для запускаемых процесов...?)

Что вы подразумеваете под процессом? Опишите задачу подробнее.

ну сли ві уже память зацепили то может кто нибудь скажет как ее померять в джаве для запускаемых процесов...?)

Как минимум можно запускать с низким приоритетом.

Ну это не выход, а затычка.

Для памяти есть ulimit, для проца сходу не скажу, но какие-то утилиты должны быть.

Та если поискать то можно все сделать. Все таки, ИМХО, проще заплатить за ВМВаре или взять что-то бесплатное и не знать проблем, особенно с заменой нод и масштабируемостью.

создать отдельного пользователя.

А потребление проца и памяти как ограничить?

gonzo
ну, а если код будет открівать какой то сокет...? ведь chroot єто не предупреждает...

вот неплохой пример того чего я хочу єто разные контесты... типа acmp.ru там юзеры шлют свой код и он там исполняется..., а если они захотят открыть сокет? или создать дишний файл?

Вадим Міхневич

вони занадто громіздкі... мені треба просто запустити з консолі деякі виконуючі файли у якійсь вірт машині

Я користувався VMWare. Спочатку. Але там шароварна ліцензія, і ще якісь моменти не подобалися (вже не пригадаю, але чи-то з мишею якісь приколи, чи ще щось...) Потім перейшов на VirtualBox — вона є в репозиторіях Убунту, фріварна, звісно. Зараз її використовую.

Щоправда, мушу зазначити одну перевагу VMWare — там образ диску зберігається у кількох файлах, тоді як у VirtualBox — один величеезний файлище (втім, глибоко не копав — не виключено, що це також можна налаштувати).

Модеры, запарили удалять.

А что лучше мазератти или бентли? ТУт дело вкуса. Копайся в манах и выбирай. Оба приложения используюдца в весьма солидных и здоровых решениях.

Что лучше мазератти или бентли?

ясен пень бентли лучше

Что лучше мазератти или бентли? Дело вкуса. И те, и те решения используюдца многими компаниями.


бсдунов

немного не понял… вы о FreeBSD? если да то я же написал что у меня убунту…

ок… спасибо…, а не подскажите что из этого лучше?

Підписатись на коментарі