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