解决命令行执行shell脚本成功,但crontab执行失败

实际生产案例

生产机房自建PPTP客户端通过拨号连接到生产机房,但是一旦客户端网络是意外断线再重新拨号

会产生IP冲突,于是写了一个脚本监控PPTP的IP是否有多个(一般冲突以后会生成2个IP)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
#author Liuyueming
. /etc/profile                 #开始没有加这个环境变量
for i in {10..35}
do
    n=`ifconfig|grep 10.13.0.${i}|wc -l`   #循环取ip并计数
#   echo `ifconfig|grep 10.13.0.${i}`
        if [ $n -gt 1 ]                 #如果同一个ip出现两次及大于1说明ip冲突需要清除 
            then
                for network in `ip add|grep 10.13.0.$i|sed 's#^.*global ##g'` #取出重复ip的网卡名删除掉
                  do
                    ip addr flush $network
                  done
        fi
 
done

手动执行没有报错,但是放入crontab执行就会报错提示命令ifconfig not find

 

命令行执行脚本成,但crontab执行shell脚本不成功是由于两个原因导致 
解决方法 
1. 路径问题 
查看crontab中执行该脚本的路径是否正确。例如:

*/1 * * * * cd /mypath/;./my_shell.sh > /dev/null 2>&1

2. 环境变量问题导致 
在shell脚本中加入环境变量文件生效的命令,一般加在脚本的第二行: 
有两种方法可以使环境变量文件生效:

  • 方法1:
.  /etc/profile

注意: . 和 /etc/profile 空格

  • 方法2:
source /etc/profile
posted @   minseo  阅读(7081)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示