Доброго времени суток!На днях писал очередной скрипт автоматизации на 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.
Заранее большое спасибо!