Как убить процесс (tcpdump) по cron?

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
XaTTa6bl4
рядовой
Сообщения: 23
Зарегистрирован: 2008-08-01 15:32:44

Как убить процесс (tcpdump) по cron?

Непрочитанное сообщение XaTTa6bl4 » 2010-04-27 10:16:14

Здравствуйте. Возникла необходимость дампить трафик с некоторых хостов для анализа. Для этого был написан следующий скрипт dump.sh:

Код: Выделить всё

#!/usr/local/bin/bash
#Const
#------------------------------------------------------------------------------------------------------------------
HOST_IP=10.10.10.2
CAP_DATE=$(date +%Y-%m-%d)
FILE_NAME="$CAP_DATE.trf"
PATH1=/usr/opt/$HOST_IP/$CAP_DATE
PID_ID=$(ps -ax | grep 'tcpdump -n -i em0 -s0 -C100 -w' | grep $HOST_IP | grep -v grep | awk '{print $1}')
#-------------------------------------------------------------------------------------------------------------------

if [ -n "$PID_ID" ] 
 then
  kill -KILL $PID_ID ;
fi 

mkdir -p $PATH1 &&
cd $PATH1 &&
tcpdump -n -i em0 -s0 -C100 -w $FILE_NAME host $HOST_IP ;
и в crontab была добавлена запись:

Код: Выделить всё

0	0	*	*	*	root	/usr/opt/dump.sh | mail root
То есть этот скрипт запускаеться каждые сутки в 00:00. При этом должен убиваться процесс tcpdump за предыдущий день и запускаться новый. Если этот скрипт запускать руками, то все работает как надо... Если же запускать его из crontab, то скрипт выполняется, но старый процесс tcpdump так и остается висеть в процессах... Как убить tcpdump по крону? Почему при запуске скрипта руками все работает как задумано, а при запуске из crontab нет?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

x6e6564
проходил мимо

Re: Как убить процесс (tcpdump) по cron?

Непрочитанное сообщение x6e6564 » 2010-04-27 12:07:42

добавить в скрипт или в crontab (man 5 crontab)

Код: Выделить всё

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
либо в срипте указывать полные пути.


XaTTa6bl4
рядовой
Сообщения: 23
Зарегистрирован: 2008-08-01 15:32:44

Re: Как убить процесс (tcpdump) по cron?

Непрочитанное сообщение XaTTa6bl4 » 2010-04-27 14:22:23

x6e6564 писал(а):добавить в скрипт или в crontab (man 5 crontab)

Код: Выделить всё

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
либо в срипте указывать полные пути.
Спасибо за совет, но проблема была немножко не в этом... Дело в том, что пути я всегда прописываю заранее в файлах типа .cshrc и .profile (и в /etc/crontab), поэтому awk и подобные команды работали корректно.
Проблема была в том, что результат команды ps -ax почему-то обрезается при вызове из crontab (то есть выводится только половина строки вместо целой...).

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Как убить процесс (tcpdump) по cron?

Непрочитанное сообщение terminus » 2010-04-27 14:35:00

количество строк и столбцов можно указать как глобальные shell переменные.
что-то вроде

Код: Выделить всё

COLS=120
ROWS=240
посмотрите вывод команды:
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

XaTTa6bl4
рядовой
Сообщения: 23
Зарегистрирован: 2008-08-01 15:32:44

Re: Как убить процесс (tcpdump) по cron?

Непрочитанное сообщение XaTTa6bl4 » 2010-04-27 15:28:47

terminus
Спасибо, это как вариант. Но мне удалось решить проблему добавлением к ps -ax ключа -w

Гость
проходил мимо

Re: Как убить процесс (tcpdump) по cron?

Непрочитанное сообщение Гость » 2010-04-27 15:30:25

я все таки переспрошу
зачем что то запускать и потом убивать? и только для того что бы создавать новый файл

ротеит логов не проще настроить ?? не?

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: Как убить процесс (tcpdump) по cron?

Непрочитанное сообщение schizoid » 2010-06-16 16:13:56

killall tcpdump
:)
ядерный взрыв...смертельно красиво...жаль, что не вечно...

yurybx
рядовой
Сообщения: 11
Зарегистрирован: 2011-03-17 12:11:20

Re: Как убить процесс (tcpdump) по cron?

Непрочитанное сообщение yurybx » 2012-04-26 11:18:45

Прикол в том, что после ротации дампа tcpdump не может писать дамп. (флаг B указывал в newsyslog.conf)

rayder
лейтенант
Сообщения: 661
Зарегистрирован: 2008-12-18 16:29:43
Откуда: Ukraine/Kiev
Контактная информация:

Re: Как убить процесс (tcpdump) по cron?

Непрочитанное сообщение rayder » 2012-04-27 16:37:41

почитайте маны по tcpdump-у, тогда поймете что это значит:

Код: Выделить всё

tcpdump -t -W 5 -ni nfe0 -G 5 -w %s.tcpdump.log
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.