#!/bin/bash
panduan="tcpdump -i any port 7100 -s0 -G 10 -w /ww/cs/%Y_%m%d_%H%M_%S.pcap"
NUM=ps -ef | grep tcpdump | grep -v grep | awk '{print $2}' | wc -l
PID=ps -ef | grep tcpdump | grep -v grep | awk '{print $2}'
echo date +%Y%m%d-%H:%M:%S
"检测服务: 是否存在,如果存在,则不运行:如果不存在,则启动程序"
if [ "${NUM}" -lt 3 ]; then
tcpdump -i any port 7100 -s0 -G 10 -w /ww/cs/%Y_%m%d_%H%M_%S.pcap&
fi
写了一个小脚本,直接运行脚本可以执行,但是放到crontab定时任务,总是无法执行,后台报错
20221117-20:45:01 检测服务: 是否存在,如果存在,则不运行:如果不存在,则启动程序
/ww/tcpdump.sh: line 7: tcpdump: command not found
想知道为啥,还请帮助
这不都说的很清楚吗,tcpdump这个命令没找到,环境变量的问题,你把tcpdump命令的绝对路径写出来
1.执行定时任务是普通用户还是root用户
2.如果是普通用户,在家目录 .bash_profile文件里添加
PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
3.如果是root用户,在/etc/profile中添加变量
PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
4.如下代码就可以正常运行了
#!/bin/bash
source /etc/profile
panduan="tcpdump -i any port 7100 -s0 -G 10 -w /ww/cs/%Y_%m%d_%H%M_%S.pcap"
NUM=ps -ef | grep tcpdump | grep -v grep | awk '{print $2}' | wc -l
PID=ps -ef | grep tcpdump | grep -v grep | awk '{print $2}'
echo date +%Y%m%d-%H:%M:%S "检测服务: 是否存在,如果存在,则不运行:如果不存在,则启动程序"
if [ "${NUM}" -lt 3 ]; then
tcpdump -i any port 7100 -s0 -G 10 -w /ww/cs/%Y_%m%d_%H%M_%S.pcap&
fi