The OpenNET Project / Index page

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

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

"Помогите разобраться с Bash и Ctrl+C"  +/
Сообщение от MakPol (ok) on 29-Июл-12, 22:39 
Доброго времени суток!

На днях писал очередной скрипт автоматизации на bash и столкнулся с забавной штукой - скрипт, который верой и правдой работал на Ubuntu 10.04 перестал корректно отрабатывать на Cent OS 6.2 и 6.3, а также воспроизвел ситуацию на Fedora 16. В общем вот что надо для воспроизведения:

/etc/init.d/testsh

#! /bin/bash
#
# testsh       Test bash
#
case "$1" in
  start)
/tmp/starttestscript.sh &
        ;;
  stop)
        
        ;;
  status)
        ;;
  restart|reload|force-reload)
        $0 stop
        $0 start
        rc=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart|reload|force-reload}"
        exit 2
esac

exit $rc

/tmp/sarttestscript.sh

#! /bin/bash - скрипт запуска проекта (когда запускается система, она пишет log-файл, тут я искуственно такой log-файл создал.
tcpdump >> /tmp/testfile.log

/tmp/sborkatestscript.sh - скрипт запуска процесса сборки проекта, запуска системы и вывод лога запуска на экран.

#! /bin/bash
/etc/init.d/testsh start
tail -f /tmp/testfile.log

Так вот, мой порядок действий:
1. Запускаю скрипт /tmp/sborkatestscript.sh и на экране у меня начинает бежать лог.
2. В это время смотрю работает ли моя "служба" при помощи ps -f -C tcpdump --no-headers
мне выводится что-то в роде:
# ps -f -C tcpdump --no-headers
tcpdump   5804  5802  5 15:27 pts/2    00:00:00 tcpdump
3. Как только я "насмотрелся лога" после запуска системы я выхожу из tail -f при помощи Сtrl+С
4. Далее хочу проверить ка там "служба" и вот что получаю
# ps -f -C tcpdump --no-headers
#
т.е. такого демона получается не запущено.

Не могу понять почему так происходит. Ведь запуск был от другого скрипта, да и как я понимаю ctrl+C должен повлиять то был только на прекращение tail.
Если посмотреть в pstree, то ИМХО не должно убивать запущенный процесс
        ├─konsole─┬─bash
        │         ├─bash───su───bash───sborkatestscrip───tail
        │         ├─bash───su───bash───pstree
        │         ├─bash───su───bash
        │         └─{konsole}
        ├─starttestscript───tcpdump
        
Ну и самое главное, на Ubuntu то у меня точно таой же скрипт работал.
Помогите пожалуйста разобраться как быть, мне надо работать именно по воспроизведенной на простых скриптах схеме и именно через tail.

Заранее большое спасибо!

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

Оглавление

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


1. "Помогите разобраться с Bash и Ctrl+C"  +/
Сообщение от Анонимус_нелогиниус on 30-Июл-12, 12:29 
Очень сложно. Я вообще ничего не понял.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Помогите разобраться с Bash и Ctrl+C"  +/
Сообщение от ze6ra (??) on 30-Июл-12, 13:13 
>[оверквотинг удален]
> мне выводится что-то в роде:
> # ps -f -C tcpdump --no-headers
> tcpdump   5804  5802  5 15:27 pts/2  
>  00:00:00 tcpdump
> 3. Как только я "насмотрелся лога" после запуска системы я выхожу из
> tail -f при помощи Сtrl+С
> 4. Далее хочу проверить ка там "служба" и вот что получаю
> # ps -f -C tcpdump --no-headers
> #
> т.е. такого демона получается не запущено.

По Ctrl-C закрываете tail, за ним завершается
скрипт с tailf который был лидером группы процессов запущенных из него. Когда завершается лидер то закрываются все остальные процессы в группе. Запускайте скрипт запуск вашего демона через  команду утилиту setsid которая отвяжет его от лидера группы и создаст новую группу для него.  

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

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

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




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

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