Страница 1 из 1

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

Добавлено: 2010-04-27 10:16:14
XaTTa6bl4
Здравствуйте. Возникла необходимость дампить трафик с некоторых хостов для анализа. Для этого был написан следующий скрипт 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 нет?

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

Добавлено: 2010-04-27 12:07:42
x6e6564
добавить в скрипт или в crontab (man 5 crontab)

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

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

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

Добавлено: 2010-04-27 12:18:34
Гость
настойте ротеит логов и не *** мозг

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

Добавлено: 2010-04-27 14:22:23
XaTTa6bl4
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 (то есть выводится только половина строки вместо целой...).

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

Добавлено: 2010-04-27 14:35:00
terminus
количество строк и столбцов можно указать как глобальные shell переменные.
что-то вроде

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

COLS=120
ROWS=240
посмотрите вывод команды:

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

Добавлено: 2010-04-27 15:28:47
XaTTa6bl4
terminus
Спасибо, это как вариант. Но мне удалось решить проблему добавлением к ps -ax ключа -w

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

Добавлено: 2010-04-27 15:30:25
Гость
я все таки переспрошу
зачем что то запускать и потом убивать? и только для того что бы создавать новый файл

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

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

Добавлено: 2010-06-16 16:13:56
schizoid
killall tcpdump
:)

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

Добавлено: 2012-04-26 11:18:45
yurybx
Прикол в том, что после ротации дампа tcpdump не может писать дамп. (флаг B указывал в newsyslog.conf)

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

Добавлено: 2012-04-27 16:37:41
rayder
почитайте маны по tcpdump-у, тогда поймете что это значит:

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

tcpdump -t -W 5 -ni nfe0 -G 5 -w %s.tcpdump.log