VirtualIreland.ru - Виртуальная Ирландия
Вернуться   VirtualIreland.ru - Виртуальная Ирландия > Живем в Ирландии > IT и Связь

IT и Связь Обсуждение "айтишных" вопросов и средств связи

Ответ
 
Опции темы Опции просмотра
Старый 30.08.2007, 12:56   #1
Заслуженный Участник
 
Аватар для ixania
 
Сообщений: 2,951
Благодарности: 1,004 в 534 сообщениях Поиск благодарностей ixania
По умолчанию Java-исты хелп!!!!!!!!!

Проблемка тут у меня на AIX, имеется чтот вроде этого:

PHP код:
String cmd "/usr/sbin/mkitab my_service:2:wait:/etc/rc.my_servcie start > /dev/console 2>&1 # some comments";

 
Runtime rt Runtime.getRuntime();
            
Process proc rt.exec(cmd); 
Так вот эта гадина exec чтото там вытворяет са этим cmd и mkitab не срабатывает, тож самое с командной строки работает на ура. Если cmd выглядит так:

PHP код:
String cmd "/usr/sbin/mkitab my_service:2:wait:/etc/rc.my_servcie"
тож все работает, как не кручу не могу заставить первый вариант работать.
__________________
Complaining Is Stupid. Either Act or Forget.
ixania вне форума   Ответить с цитированием

Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок
Старый 30.08.2007, 13:06   #2
Заслуженный Участник
 
Аватар для dzher
 
Сообщений: 2,705
Благодарности: 1,165 в 612 сообщениях Поиск благодарностей dzher
По умолчанию Re: Java-исты хелп!!!!!!!!!

Цитата:
Сообщение от ixania Посмотреть сообщение
Проблемка тут у меня на АИХ, имеется чтот вроде этого:

PHP код:
Стринг цмд "/уср/сбин/мкитаб мы_сервице:2:wаит:/етц/рц.мы_сервцие старт > /дев/цонсоле 2>&1 # соме цомментс";

 
Рунтиме рт Рунтиме.гетРунтиме();
            
Процесс проц рт.ехец(цмд); 
Так вот эта гадина ехец чтото там вытворяет са этим цмд и мкитаб не срабатывает, тож самое с командной строки работает на ура. Если цмд выглядит так:

PHP код:
Стринг цмд "/уср/сбин/мкитаб мы_сервице:2:wаит:/етц/рц.мы_сервцие"
тож все работает, как не кручу не могу заставить первый вариант работать.
дык, и [C]шный [execp] не с"ест первый вариант ... об"яснять почему ?
заверни команду в [sh] файлец - без переназначний [IO] (!) ...

dzher добавил 30.08.2007 в 14:09
Цитата:
Сообщение от dzher Посмотреть сообщение
дык, и [C]шный [execp] не с"ест первый вариант ... об"яснять почему ?
.
бтw, есть ешо [Runtime.exec(String[] аргс)] - т.е. прога с параметрами

Последний раз редактировалось dzher, 30.08.2007 в 13:09. Причина: Добавлено сообщение
dzher вне форума   Ответить с цитированием
Благодарность от:
ixania (30.08.2007)
Старый 30.08.2007, 13:14   #3
Заслуженный Участник
 
Аватар для ixania
 
Сообщений: 2,951
Благодарности: 1,004 в 534 сообщениях Поиск благодарностей ixania
По умолчанию Re: Java-исты хелп!!!!!!!!!

про .sh файлик я думал, посмотрю что наши всезнайки скажут, покамись пробую решить проблему малой кровью. И все перенамправление там эт для записи в initab, а не для перенаправления mkitab аутпута, даж провбовал в \" \" заворачивать все что дается mkitab.
__________________
Complaining Is Stupid. Either Act or Forget.
ixania вне форума   Ответить с цитированием
Старый 30.08.2007, 13:16   #4
Заслуженный Участник
 
Аватар для pasha
 
Сообщений: 1,235
Благодарности: 55 в 39 сообщениях Поиск благодарностей pasha
По умолчанию Re: Java-исты хелп!!!!!!!!!

IMHO

If you want to process the stream to either redirect it or pipe it into another program, you must do so programmatically, using the java.io package. Listing 4.7 properly redirects the standard output stream of the jecho process into a file.




http://www.javaworld.com/javaworld/j...ps.html?page=4

pasha добавил 30.08.2007 в 14:19
или так - это точно работает:

static void System(String command) {

String s = null;

try {

Process p = Runtime.getRuntime().exec(command);

BufferedReader stdInput = new BufferedReader(new InputStreamReader(
p.getInputStream()));

BufferedReader stdError = new BufferedReader(new InputStreamReader(
p.getErrorStream()));

// read the output from the command
while ((s = stdInput.readLine()) != null) {
System.out.println(s); перенаправляй здесь
}

// read any errors from the attempted command
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}

} catch (IOException e) {
System.err.println(e.getMessage());
}
}

Последний раз редактировалось pasha, 30.08.2007 в 13:21. Причина: Добавлено сообщение
pasha вне форума   Ответить с цитированием
Благодарность от:
ixania (30.08.2007)
Старый 30.08.2007, 13:21   #5
Заслуженный Участник
 
Аватар для ixania
 
Сообщений: 2,951
Благодарности: 1,004 в 534 сообщениях Поиск благодарностей ixania
По умолчанию Re: Java-исты хелп!!!!!!!!!

Эт забыл уточнить, приведенный код упрощен, оригинал все это делает, мануалы читать умею, спрашиваю о том чего в мануалах нету

Цитата:
Сообщение от pasha Посмотреть сообщение
IMHO

If you want to process the stream to either redirect it or pipe it into another program, you must do so programmatically, using the java.io package. Listing 4.7 properly redirects the standard output stream of the jecho process into a file.
....................
ixania добавил 30.08.2007 в 14:58
PHP код:
#include <unistd.h>
int main()
{

char *cmd[] ={"/usr/sbin/mkitab","my_service:2:wait:/etc/rc.my_servcie start > /dev/console 2>&1 # some comments",0};
  
execvp("mkitab"cmd);
  return 
0;

Работает наура
__________________
Complaining Is Stupid. Either Act or Forget.

Последний раз редактировалось ixania, 30.08.2007 в 13:58. Причина: Добавлено сообщение
ixania вне форума   Ответить с цитированием
Старый 30.08.2007, 17:32   #6
Practical UNIX Terrorist
 
Аватар для rojer
 
Откуда: bray.ie<-dub.ie<-msk.ru<-ykt.ru
Сообщений: 2,291
Благодарности: 1,257 в 647 сообщениях Поиск благодарностей rojer
По умолчанию Re: Java-исты хелп!!!!!!!!!

чё-то я не понял, а где тот sh/bash, который будет твои > интерпретировать?
надо так:

/bin/sh -c "/bin/echo qwe > /dev/null 2>&1"

ну и, конечно, вворачивать коммент непосредственно в эту строчку - отдельное извращение.

rojer добавил 30.08.2007 в 18:37
не, ixania, я понял что ты пытаешься сделать.
твои извращения с /dev/console проглатывает как раз тот sh, которому ява скармливает аргумент.

надо так:

String cmd = "/usr/sbin/mkitab 'my_service:2:wait:/etc/rc.my_servcie start > /dev/console 2>&1 # some comments'";

(всё внимание на одинарные кавычки).

но есть мнение, что если ты вызываешь mkitab откуда-то из явы, то ты что-то делаешь неправильно.

и *определённо* неправильно совать всякую левотню в inittab.
__________________
Even if a billion people believe something it can still be ridiculous.

Последний раз редактировалось rojer, 30.08.2007 в 17:37. Причина: Добавлено сообщение
rojer вне форума   Ответить с цитированием
Благодарность от:
ixania (31.08.2007)
Старый 31.08.2007, 09:21   #7
Спам-робот
 
Аватар для svu
 
Откуда: Ленинград --> Петербург --> Dublin --> Cork --> Castleisland --> Tralee
Сообщений: 20,480
Благодарности: 12,385 в 6,695 сообщениях Поиск благодарностей svu
По умолчанию Re: Java-исты хелп!!!!!!!!!

"sh -c" поможет отцу демократии
svu вне форума   Ответить с цитированием
Старый 31.08.2007, 09:24   #8
просто
 
Аватар для abg
 
Сообщений: 7,824
Благодарности: 2,301 в 1,077 сообщениях Поиск благодарностей abg
По умолчанию Re: Java-исты хелп!!!!!!!!!

rojer, инсталляторы для всяких продуктов часто как раз на яве и пишут.
__________________
все вопросы по форуму VI направляйте администрации.
abg вне форума   Ответить с цитированием
Старый 31.08.2007, 09:35   #9
Заслуженный Участник
 
Аватар для ixania
 
Сообщений: 2,951
Благодарности: 1,004 в 534 сообщениях Поиск благодарностей ixania
По умолчанию Re: Java-исты хелп!!!!!!!!!

Цитата:
Сообщение от rojer Посмотреть сообщение
чё-то я не понял, а где тот sh/bash, который будет твои > интерпретировать?
надо так:

/bin/sh -c "/bin/echo qwe > /dev/null 2>&1"

ну и, конечно, вворачивать коммент непосредственно в эту строчку - отдельное извращение.

rojer добавил 30.08.2007 в 18:37
не, ixania, я понял что ты пытаешься сделать.
твои извращения с /dev/console проглатывает как раз тот sh, которому ява скармливает аргумент.

надо так:

String cmd = "/usr/sbin/mkitab 'my_service:2:wait:/etc/rc.my_servcie start > /dev/console 2>&1 # some comments'";

(всё внимание на одинарные кавычки).

но есть мнение, что если ты вызываешь mkitab откуда-то из явы, то ты что-то делаешь неправильно.

и *определённо* неправильно совать всякую левотню в inittab.
Правельно понял 'my_service:2:wait:/etc/rc.my_servcie start > /dev/console 2>&1 # some comments' идет как аргумент для mkitab

ixania добавил 31.08.2007 в 10:37
Цитата:
Сообщение от svu Посмотреть сообщение
"sh -c" поможет отцу демократии
Не думаю, это совсем из другой оперы, я ведь не шел скрипт запускаю

ixania добавил 31.08.2007 в 11:39
Блин не пашет с :

String cmd = "/usr/sbin/mkitab 'my_service:2:wait:/etc/rc.my_servcie start > /dev/console 2>&1 # some comments'";

Этот дебильный exec всеравно анализирует пробелы, и дробит все на параметры
__________________
Complaining Is Stupid. Either Act or Forget.

Последний раз редактировалось ixania, 31.08.2007 в 10:39. Причина: Добавлено сообщение
ixania вне форума   Ответить с цитированием
Старый 31.08.2007, 12:41   #10
Заслуженный Участник
 
Аватар для ixania
 
Сообщений: 2,951
Благодарности: 1,004 в 534 сообщениях Поиск благодарностей ixania
По умолчанию Re: Java-исты хелп!!!!!!!!!

Гыыы, стыдно признатся, но я почемуто тормозил вариант с:

PHP код:
String[] cmdarray = new String[2];

cmdarray[0]= "/usr/sbin/mkitab";
cmdarray[1]= "\" my_service:2:wait:/etc/rc.my_servcie start > /dev/console 2>&1 # some comments\"";

 
Runtime rt Runtime.getRuntime();
            
Process proc rt.exec(cmdarray); 
работает на ура, тоести вызывается данный exec

PHP код:
public Process exec(String[] cmdarray)
             
throws IOException 
Еще пригляделся а там в

PHP код:
public Process exec(String cmd)
             
throws IOException 
вызывается токенайзер, кторому побарабану все кавычки.

вот так вот
__________________
Complaining Is Stupid. Either Act or Forget.
ixania вне форума   Ответить с цитированием
Старый 31.08.2007, 14:20   #11
Practical UNIX Terrorist
 
Аватар для rojer
 
Откуда: bray.ie<-dub.ie<-msk.ru<-ykt.ru
Сообщений: 2,291
Благодарности: 1,257 в 647 сообщениях Поиск благодарностей rojer
По умолчанию Re: Java-исты хелп!!!!!!!!!

abg> rojer, инсталляторы для всяких продуктов часто как раз на яве и пишут.

такой вещи как "инсталлятор на яве" не должно существовать. продукт должен распространяться в виде пакета. может быть _конфигуратор_ на яве, который пишет конфиг куда-нибудь в /etc, если это системный софт, или в ~/.product, если это что-то юзерское. но трогать систему за всякие чувствительные места, типа inittab, категорически противопоказано.

rojer добавил 31.08.2007 в 15:24
... потому что после инсталлятора что мы будем писать? правильно, апдейтер. и конфигуратор, конечно. и будет как в винде: 100 вариантов инсталляторов и 10000 апдейтеров, у каждого свой.
так вот, всё это уже придумано до нас. не надо городить этот огород, надо просто сделать правильные пакеты трёх самых распространённых типов.
__________________
Even if a billion people believe something it can still be ridiculous.

Последний раз редактировалось rojer, 31.08.2007 в 14:24. Причина: Добавлено сообщение
rojer вне форума   Ответить с цитированием
Старый 31.08.2007, 14:28   #12
Заслуженный Участник
 
Аватар для ixania
 
Сообщений: 2,951
Благодарности: 1,004 в 534 сообщениях Поиск благодарностей ixania
По умолчанию Re: Java-исты хелп!!!!!!!!!

Нее исталятор у нас этого не делает, есть конфигуратор, который в зависимоти от юзерских пожелании и привилегии это делает.
__________________
Complaining Is Stupid. Either Act or Forget.
ixania вне форума   Ответить с цитированием
Старый 31.08.2007, 14:40   #13
Practical UNIX Terrorist
 
Аватар для rojer
 
Откуда: bray.ie<-dub.ie<-msk.ru<-ykt.ru
Сообщений: 2,291
Благодарности: 1,257 в 647 сообщениях Поиск благодарностей rojer
По умолчанию Re: Java-исты хелп!!!!!!!!!

напрасно делает всё равно.
иниттаба не существует, забудьте про иниттаб.
правильный способ - это добавть свой скриптик в /etc/init.d и включить себя во время загрузки. в редхате это chkconfig, в дебиане что-то другое.
да, инит будет вашу софтину рестартовать, если она упадёт, но: либо делайте чтоб софтина не падала, либо, если уж она такая падучая, напишите минимальный шелл-враппер, который будет while true; do /usr/sbin/my_buggy_daemon -f; sleep 10; done (где -f - stay in foreground)
и корректный стоп чтобы был, да.
__________________
Even if a billion people believe something it can still be ridiculous.
rojer вне форума   Ответить с цитированием

Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок
Старый 31.08.2007, 14:53   #14
Заслуженный Участник
 
Аватар для ixania
 
Сообщений: 2,951
Благодарности: 1,004 в 534 сообщениях Поиск благодарностей ixania
По умолчанию Re: Java-исты хелп!!!!!!!!!

Цитата:
Сообщение от rojer Посмотреть сообщение
напрасно делает всё равно.
иниттаба не существует, забудьте про иниттаб.
правильный способ - это добавть свой скриптик в /etc/init.d и включить себя во время загрузки. в редхате это chkconfig, в дебиане что-то другое.
да, инит будет вашу софтину рестартовать, если она упадёт, но: либо делайте чтоб софтина не падала, либо, если уж она такая падучая, напишите минимальный шелл-враппер, который будет while true; do /usr/sbin/my_buggy_daemon -f; sleep 10; done (где -f - stay in foreground)
и корректный стоп чтобы был, да.
Эт ты про AIX говоришь?
__________________
Complaining Is Stupid. Either Act or Forget.
ixania вне форума   Ответить с цитированием
Старый 31.08.2007, 15:58   #15
Practical UNIX Terrorist
 
Аватар для rojer
 
Откуда: bray.ie<-dub.ie<-msk.ru<-ykt.ru
Сообщений: 2,291
Благодарности: 1,257 в 647 сообщениях Поиск благодарностей rojer
По умолчанию Re: Java-исты хелп!!!!!!!!!

> Эт ты про AIX говоришь?

нет, в эти дебри я не лезу. аикс можете трогать за иниттаб сколько угодно
__________________
Even if a billion people believe something it can still be ridiculous.
rojer вне форума   Ответить с цитированием
Ответ



Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать на сообщения
Вы не можете добавлять вложения
Вы не можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщ.
Что делать? Хелп!!! Alex S IT и Связь 4 17.10.2005 19:13
Барабанные тормоза - Хелп ! Andrew Shahoff Автотранспорт 22 28.01.2005 10:32
.....ХЕЛП..... Алёнчик! Общие темы 5 11.07.2004 15:09
люди,хелп! ~Majachok~ Работа в Ирландии 62 01.06.2004 09:47


Часовой пояс GMT, времени сейчас: 12:18.


vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd., Русификация: zCarot, Vovan & Co
©2003-2025 VirtualIreland.ru - Виртуальная Ирландия