2017-02-15 3 views
0

Мне нужен скрипт для запуска нового процесса каждый час.Поиск и уничтожение процесса и запуск нового процесса на скрипте bash

Я создал сценарий bash, который планируется запускать каждый час через cron. Он работает только в первый раз, но не работает иначе.

Если вы работаете из корпуса, он отлично работает.

Вот сценарий:

#!/bin/sh 

ps -ef | grep tcpdump | grep -v grep | awk '{print $2}' | xargs kill 
sleep 2 
echo "Lanzando tcpdump" 
tcpdump -ni eth0 -s0 proto TCP and port 25 -w /root/srv108-$(date +%Y%m%d%H%M%S).smtp.pcap 

хрон

@hourly /root/analisis.sh > /dev/null 2>&1 

Почему не удается работу хрон?

+0

Это не сценарий Bash (shebang говорит иначе). – Biffen

+1

[Как это не удается?] (Http://importblogkit.com/2015/07/does-not-work/) И вы не можете использовать 'killall' или, по крайней мере,' pidof'? – Biffen

+0

@abkrim, используйте 'pkill -f tcpdump', чтобы убить процесс. – sat

ответ

1

Это ответ ОП added к самому вопросу.

Исправление сценария после комментариев (это работает отлично)

#!/bin/bash 

pkill -f tcpdump 
/usr/sbin/tcpdump -ni eth0 -s0 proto TCP and port 25 -w /root/srv108-$(date +%Y%m%d%H%M%S).smtp.pcap 

То есть, мне просто нужно использовать полный путь к tcpdump.

0

Неисправность может быть связана с работой cron, никогда не заканчивающейся - вы начинаете новый tcpdump на переднем плане, который будет работать вечно.

Попробуйте этот упрощенный сценарий:

#!/bin/bash 
killall tcpdump 
tcpdump -ni eth0 -s0 proto TCP and port 25 -w /root/srv108-$(date +%Y%m%d%H%M%S).smtp.pcap& 
+0

Быстро ответьте. Реально не проблема, что вы говорите. С отладки я вижу проблему. '/root/analisis.sh: línea 7: tcpdump: no roder found'. – abkrim

+0

@abkrim, если недостающий путь является проблемой, как это работает в первый раз? –

+0

** enviroment **. Awnser к вашему вопросу относится к более старым комментариям, а не к равному bash среде пользователя, что cron, на этой системе @SirAthos – abkrim

Смежные вопросы