2017-02-15 3 views
0

毎時新しいプロセスを実行するスクリプトが必要です。プロセスを検索して終了させ、bashスクリプトで新しいプロセスを開始する

毎回cronで実行する予定のbashスクリプトを作成しました。それは最初に動作しますが、それ以外は失敗します。

シェルから実行すると、完全に機能します。ここで

はスクリプトです:

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

なぜcronジョブが失敗していますか?

+0

これはBashスクリプトではありません(そうでないとShebangが言います)。 – Biffen

+1

[どうすれば失敗しますか?](http://importblogkit.com/2015/07/does-not-work/) 'killall'や少なくとも' pidof'を使うことはできませんか? – Biffen

+0

@abkrim、 'pkill -f tcpdump'を使ってプロセスを終了します。 – sat

答えて

1

はこれが答え、質問自体にOP addedです。コメントの後のスクリプトの

補正は、私はちょうどtcpdumpへの完全なパスを使用するために必要であることを

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

(それが正常に動作します)。

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ínea7:tcpdump:ローダーが見つかりませんでした。 – abkrim

+0

@abkrim欠落したパスが問題になった場合、どのようにして初めて動作しますか? –

+0

**環境**あなたの質問にAwnserは、このシステムで@ cirAthos、古いコメント、ユーザーの等しいbash環境、そのcronではありません – abkrim

関連する問題