информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеПортрет посетителяЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Фишинговая атака на Python-разработчиков 
 ФБР нашла русский след в атаках... 
 Массовый взлом SharePoint 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / sysadmin
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Прикол вот в чем 12.07.02 18:05  Число просмотров: 1077
Автор: PS <PS> Статус: Elderman
Отредактировано 12.07.02 18:07  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Как бы я вывод не перенаправлял, с 1,2 или без них - создаваемый файл - пуст !
А вот если никуда вывод не перенаправить, то при загрузке видна как она пишит: my_prog started..., интересно, а куда она будет писать дальше ? /proc/PID/fd/dev_console по прежнему пуст !!!
Внимание вопрос: почему этой строчки не оказывается в файле, куда перенаправляется stdout ?
Трабл в том, что я ей сейчас ничего кинуть не могу, что бы она мне о статусе сообщила (прога - сервачок, а клиентик не доступен).
Интересно, будет ли она и в дальнейшем так же молчаливо работать или соизволит писать в файл ?

И еще: есно в proc появляются мои открытые сокеты... хехе... никогда такое не делал, а интересно, из ОС в них что писать можно ? Сокеты типа INET, не LOCAL !
если тутда попытатся записать что либо vi , то ругается по страшному. Оно и понятно, но все же может как то можно ? ;)
<sysadmin>
Как запустить прогу в автозапуске ? 11.07.02 18:21  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Под линухом необходимо что бы прога запускалась сама при старте ОС. Но, необходимо что бы в проге на ./ выдавалась именно её директория (а не директория ссылки), и имя программы было её (если запускать из rc.d по ссылке, argv[0] будет именем ссылки, что для меня не подходит).
Так же необходимо что бы программа запускалась всегда, не зависимо от уровня загрузки.
Линухи SuSe 6, RH 7
man inittab ? 11.07.02 18:47  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
не стоит так... 12.07.02 11:21  
Автор: Night Knight [HZTeam.msk] <George Fedosejev> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Зачем такое извращение? Это не unixway. Запуску этой проги самое место в rc.local, что в SuSE, что в RedHat.

Для SuSE в /etc/init.d/ лежит sceleton, который очень легко руками правится под собственные нужды. Как вариант можно использовать для этой проги chroot. Вставить готовый скрипт запуска в нужные runlevels в СуСЕ очень легко с помощью insserv.

man chroot, man insserv.

Не знаю, есть ли в шапке insserv, но готовые скрипты при небольшой правке легко перекинуть с СуСИ в шапку.
не стоит так... 12.07.02 16:29  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> Зачем такое извращение? Это не unixway.

Это вопрос религии :)))

>Запуску этой проги
> самое место в rc.local, что в SuSE, что в RedHat.
>
> Для SuSE в /etc/init.d/ лежит sceleton, который очень
> легко руками правится под собственные нужды. Как вариант
> можно использовать для этой проги chroot. Вставить готовый
> скрипт запуска в нужные runlevels в СуСЕ очень легко с
> помощью insserv.
>
> man chroot, man insserv.
>
> Не знаю, есть ли в шапке insserv, но готовые скрипты при
> небольшой правке легко перекинуть с СуСИ в шапку.

Проблема в том что человеку нужен запуск программы независимо от уровня загрузки ...

PS: Я кстати всегда складываю что то левое действительно в rc.local
??????? 11.07.02 19:12  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
x:5:boot:/root/path/my_pog

reboot

ps -A

There isnt my_pog !!! Has not started :(
??????? 12.07.02 10:36  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> x:5:boot:/root/path/my_pog
>
> reboot
>
> ps -A
>
> There isnt my_pog !!! Has not started :(

Xmm...
xxx:::boot:/bin/pwd
пашет на ура ... может чего с программой ?
Ладно, запустить то я его запустил... 12.07.02 16:26  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
а что толку ? Консоли то под него нет. А лог в файл я не предусмотрел (переписывать лениво !).
В inittab >mylog не напишишь.
Создал командный файл, поместил его в директории с экзешником.
#!sh
/..../my_pog >mylog
в inittab запускаю командный файл, НО my_log создается в корне ! В /
Что за фигня ? Почему вкорне, а не в /etc ?
К тому же my_log пуст. Пусть хотя первая команда проги - это printf. Прога работает, и работает давно, всегда по нормальному запускалась.
И еще, если лог создался в корне, то при попытки открыть файл в программе fopen( "./somefile" ); где он его искать будет ? Тоже в корне ?
Ладно, запустить то я его запустил... 12.07.02 16:41  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> а что толку ? Консоли то под него нет.

здрасте ...
а /dev/console это что

> А лог в файл я не
> предусмотрел (переписывать лениво !).
> В inittab >mylog не напишишь.
> Создал командный файл, поместил его в директории с
> экзешником.
> #!sh
> /..../my_pog >mylog
сделай ка вот так:

/../my_prog 1> /.../out.log 2> /../err.log


шоб разобраться с диагностикой ...

> в inittab запускаю командный файл, НО my_log создается в
> корне ! В /

ну дык все правильно ...
pwd у тебя /

> Что за фигня ? Почему вкорне, а не в /etc ?

в скрипте можно поствить cd /etc но ImHO в таких случаях указывают полный путь ...

> К тому же my_log пуст. Пусть хотя первая команда проги -
> это printf. Прога работает, и работает давно, всегда по
> нормальному запускалась.
> И еще, если лог создался в корне, то при попытки открыть
> файл в программе fopen( "./somefile" ); где он его искать
> будет ? Тоже в корне ?

Да - твоя прога наследует / от init

обычно в таких случаях указывают полный путь
Прикол вот в чем 12.07.02 18:05  
Автор: PS <PS> Статус: Elderman
Отредактировано 12.07.02 18:07  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Как бы я вывод не перенаправлял, с 1,2 или без них - создаваемый файл - пуст !
А вот если никуда вывод не перенаправить, то при загрузке видна как она пишит: my_prog started..., интересно, а куда она будет писать дальше ? /proc/PID/fd/dev_console по прежнему пуст !!!
Внимание вопрос: почему этой строчки не оказывается в файле, куда перенаправляется stdout ?
Трабл в том, что я ей сейчас ничего кинуть не могу, что бы она мне о статусе сообщила (прога - сервачок, а клиентик не доступен).
Интересно, будет ли она и в дальнейшем так же молчаливо работать или соизволит писать в файл ?

И еще: есно в proc появляются мои открытые сокеты... хехе... никогда такое не делал, а интересно, из ОС в них что писать можно ? Сокеты типа INET, не LOCAL !
если тутда попытатся записать что либо vi , то ругается по страшному. Оно и понятно, но все же может как то можно ? ;)
Прикол вот в чем 12.07.02 18:26  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> Как бы я вывод не перенаправлял, с 1,2 или без них -
> создаваемый файл - пуст !
> А вот если никуда вывод не перенаправить, то при загрузке
> видна как она пишит: my_prog started..., интересно, а куда
> она будет писать дальше ? /proc/PID/fd/dev_console по
> прежнему пуст !!!
> Внимание вопрос: почему этой строчки не оказывается в
> файле, куда перенаправляется stdout ?

Xmm...
Ты stdout и stderr часом не закрываешь в своей программе ? Она демон ?

> Трабл в том, что я ей сейчас ничего кинуть не могу, что бы
> она мне о статусе сообщила (прога - сервачок, а клиентик не
> доступен).
> Интересно, будет ли она и в дальнейшем так же молчаливо
> работать или соизволит писать в файл ?
>
> И еще: есно в proc появляются мои открытые сокеты...
> хехе... никогда такое не делал, а интересно, из ОС в них
> что писать можно ? Сокеты типа INET, не LOCAL !
> если тутда попытатся записать что либо vi , то ругается по
> страшному. Оно и понятно, но все же может как то можно ? ;)


telnet localhost [твой порт]
и общайся с сервером руками :)
Во супер ! 12.07.02 18:54  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Программа пишит всегда (перенаправленна в файл или нет) на tty1. Почему именно на tty1 не понятно. Нравится ей наверно :)

> Xmm...
> Ты stdout и stderr часом не закрываешь в своей программе ?
> Она демон ?

Не, не закрываю и не демон. Обычная прога.
Во супер ! 12.07.02 19:20  
Автор: XR <eXtremal Research> Статус: The Elderman
Отредактировано 12.07.02 19:20  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
> Программа пишит всегда (перенаправленна в файл или нет) на
> tty1. Почему именно на tty1 не понятно. Нравится ей наверно
> :)

Ну тут мои телепатические способности кончаются и для более подробного
ответа больного надо бы в морг на вскрытие ;)
ну разве что попробуй

man console
man 4 tty

и man init до кучи

>
> > Xmm...
> > Ты stdout и stderr часом не закрываешь в своей
> программе ?
> > Она демон ?
>
> Не, не закрываю и не демон. Обычная прога.

Дык сделай все по уму:

1) сделай из нее демона (man daemon как вариант ... я правда делаю это все руками :))
2) логи пиши через сислог (man syslog)
3) посмотри как устроены аналоги
Ни какой телепатии ! 13.07.02 01:34  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
> Ну тут мои телепатические способности кончаются и для более
> подробного
> ответа больного надо бы в морг на вскрытие ;)

В морг так в морг.

Итак любой может провести эксперемент:
Пишим програмку:

#include <stdio.h>
#include <unistd.h>

int main()
{
for(;;)
{
printf( "TEST\n" );
sleep( 2 );
}

return 1;
}

Далее пишим батник, и обзываем его run:
#!/bin/sh
cd /root/test
./test

В inittab пишим: (я запускаюсь на третьем уровне, но это не принципиально !)
test:3:boot:/root/test/run

Даем команду reboot
Теперь можно наслаждаться надписями TEST на tty1

Когда надоест переправляем наш батник:
./test > log

Перезапускаемся. ОК, на экран ничего больше не сыпится. Идем в нашу директорию. Файл log появился. vi log. ОПС ! А он пуст ! И хде наши TEST ?!

Как видишь эксперемент примитивный и доступный всем. Чесно говоря смотреть что делается в ф-ии printk мне совсем в лом. Может кто нибудь объяснит что происходит ?

P.S. Переписывать свою прогу под демон, часть ядра и пр. не хочу.
P.P.S. Местом, что ниже спины чуял, что автозапуск в линухе имеет подводные камни.
Ни какой телепатии ! 15.07.02 13:28  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
> > Ну тут мои телепатические способности кончаются и для
> более
> > подробного
> > ответа больного надо бы в морг на вскрытие ;)
>
> В морг так в морг.
>
> Итак любой может провести эксперемент:
> Пишим програмку:
>
> #include <stdio.h>
> #include <unistd.h>
>
> int main()
> {
> for(;;)
> {
> printf( "TEST\n" );
> sleep( 2 );
> }
>
> return 1;
> }
>
> Далее пишим батник, и обзываем его run:
> #!/bin/sh
> cd /root/test
> ./test

Урок N 1

Никогда не называйте ваши программы так же как системные утилиты :)

man test

> В inittab пишим: (я запускаюсь на третьем уровне, но это не
> принципиально !)
> test:3:boot:/root/test/run
>
> Даем команду reboot
> Теперь можно наслаждаться надписями TEST на tty1
>
> Когда надоест переправляем наш батник:
> ./test > log
>
> Перезапускаемся. ОК, на экран ничего больше не сыпится.
> Идем в нашу директорию. Файл log появился. vi log. ОПС ! А
> он пуст ! И хде наши TEST ?!
>
> Как видишь эксперемент примитивный и доступный всем. Чесно
> говоря смотреть что делается в ф-ии printk мне совсем в
> лом. Может кто нибудь объяснит что происходит ?
>
> P.S. Переписывать свою прогу под демон, часть ядра и пр. не
> хочу.
> P.P.S. Местом, что ниже спины чуял, что автозапуск в линухе
> имеет подводные камни.
Урок N 2 15.07.02 14:03  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>
1) чуть перепишем тестик
#include <stdio.h>
#include <unistd.h>

int main()
{
 int i=0;
 for(;;)
 {
  system("tty");
  printf( "TEST\n" );
  sleep( 2 );
  if(i>5) break;
  i++;
 }

return 1;
}


---

gcc xxx.c -o xxx
и сваливаем xxx в /etc/rc.d


2) Пишем скриптик autoexec.sh
#!/bin/bash
cd /etc/rc.d
./xxx > /etc/autoexec.log


3) добавляем в /etc/inittab

xxx:::boot:/etc/rc.d/xxx

4) ребутим систему


5) находим в /etc/autoexec.log
вот такое вот
/dev/console
/dev/console
/dev/console
/dev/console
/dev/console
/dev/console
/dev/console
TEST
TEST
TEST
TEST
TEST
TEST
TEST

Для справки - дистрибутив Slackware 8.0

BTW: ну ка покажи ка вот что
---------------
ls -l /dev/tty[0-9] /dev/console
--------------
может у тебя в ЗуЗе чего не так с консолями ?

PS: вообще то для runlevel 3 такой фигне действительно место в rc.local
буферизация ? 15.07.02 17:33  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Ты немного подогнал тест. Если ты заметил - у меня нет выхода из проги.
Ты же его сделал ! Так и у меня работает (но это я понял, после того как прочел твой ответ).

Итак имеем буферизацию. Вернее очень на неё похоже.
Ну и как прикажешь мне с ней бороться ?
Вдогон 15.07.02 17:47  
Автор: XR <eXtremal Research> Статус: The Elderman
<"чистая" ссылка> <обсуждение закрыто>

> Ну и как прикажешь мне с ней бороться ?
man fflush

но я бы таки рекомендовал переписать твое поделие так как надо а не так как
оно есть сейчас ...
Какой, нафиг, fflush ? 15.07.02 21:31  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Это ф-ия стандартной библиотеки.
Не я открываю файл. Его открывает командный интерпретатор, и к этому файлу я не имею никакого отношения и доступа.
Очень элементарный fflush(NULL); ;))) 16.07.02 11:08  
Автор: XR <eXtremal Research> Статус: The Elderman
Отредактировано 16.07.02 11:10  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
> Это ф-ия стандартной библиотеки.
> Не я открываю файл. Его открывает командный интерпретатор,
> и к этому файлу я не имею никакого отношения и доступа.

То есть ты уверен что данные заcтряли не в буфере твоей задачи а в буфере shell-а ;))) ?

Еще разок запусти как мой тестовый пример и убедись что сие не так
Буферизуется printf

Для того чтобЫ сбрасывать ВСЕ буфера вызывай в цикле

fflush(NULL);

PS: Тут мы плавно переходим из раздела sysadmin в раздел программинг :)
Нет, мы остаемся в сисадмининге :))) 16.07.02 14:56  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
Только тема немного сменилась.
Теперь мы рассматриваем абстрактную програму, доступа к исходникам которой не имеем. А значит не можем в ней ничего изменить.
Итак, эта программа пишит в stdout, который буферизируется при перенаправлении в файл.
Вопрос: как средствами команд ОС сбросить этот буфер ?
Повторяю: программу менять не имеем права.
1  |  2 >>  »  




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach