2017-02-15 2 views
0

je besoin d'un script pour l'exécution d'un nouveau processus à chaque heure.Recherche et tuer processus et démarrer un nouveau processus de script bash

J'ai créé un script bash qui est programmé pour exécuter toutes les heures par Cron. Cela ne fonctionne que la première fois mais échoue autrement.

Si exécuté à partir de la coquille, il fonctionne parfaitement.

Voici le script:

#!/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 

Cron

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

Pourquoi le travail cron échec?

+0

Ce n'est pas un script Bash (le tralala dit autrement). – Biffen

+1

[Comment échouer?] (Http://importblogkit.com/2015/07/does-not-work/) Et tu ne peux pas utiliser 'killall', ou au moins' pidof'? – Biffen

+0

@abkrim, Utilisez 'pkill -f tcpdump' pour tuer un processus. – sat

Répondre

1

Ceci est la réponse de l'OP added à la question elle-même.

Correction du script après les commentaires (il fonctionne très bien)

#!/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 

qui est, je juste besoin d'utiliser le chemin complet tcpdump.

0

L'échec peut être lié à la tâche cron jamais finir - vous commencez une nouvelle tcpdump au premier plan, qui se déroulera à jamais.

Essayez ce script simplifié:

#!/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

Soyez rapidement répondre. Vraiment pas de problème ce que tu dis. Avec le débogage, je vois un problème. '/root/analisis.sh: ligne 7: tcpdump: aucun roder trouvé'. – abkrim

+0

@abkrim si le chemin manquant est le problème, comment ça marche la première fois? –

+0

** environnement **. Répondant à votre question sont sur les anciens commentaires, pas égal bash environnement de l'utilisateur, ce cron, sur ce système @SirAthos – abkrim