我需要一个脚本来每小时运行一个新进程。
我创建了一个bash脚本,计划每小时通过cron运行一次。它只在第一次工作,否则失败。
如果从shell运行,它可以很好地工作。
这是脚本:
#!/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 :(得分:1)
这是OP 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
的完整路径。
答案 1 :(得分: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&