定时任务执行 报错command not found 解决方案

写在前面

定时任务脚本出现command not found报错,解决方案。

所需知识

  1. 定时任务
  2. shell脚本
  3. 环境变量

问题复现

编写了一个很简单的脚本,查看一下网卡信息。

[root@ecm-98ce ~]# cat ipif.sh
ip a s eth0
echo "---"
ifconfig eth0

在这里插入图片描述
但是将这个脚本放到crontab下执行,就报错了

#crontab
[root@ecm-98ce ~]# crontab -e
crontab: installing new crontab
[root@ecm-98ce ~]# crontab -l
#4. show nic info and save in file
* * * * * /bin/sh /root/ipif.sh &>> /tmp/ipif.info

#报错
[root@ecm-98ce ~]# tail /tmp/ipif.info
/root/exercise/day26/ipif.sh: line 1: ip: command not found
---
/root/exercise/day26/ipif.sh: line 3: ifconfig: command not found

解决方式

方法1. 使用绝对路径的命令:

which ip ifconfig
/usr/sbin/ip
/usr/sbin/ifconfig

[root@ecm-98ce ~]# cat ipif.sh
/usr/sbin/ip a s eth0
echo "---"
/usr/sbin/ifconfig eth0

方法2. 重新加载环境变量:

#1 重写定义环境变量PATH
```shell
[root@ecm-98ce ~]# cat ipif.sh
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin #添加这行
ip a s eth0
echo "---"
ifconfig eth0

#2 重新加载环境变量

[root@ecm-98ce ~]# cat ipif.sh
#!/bin/bash
source /etc/profile #添加这行
ip a s eth0
echo "---"
ifconfig eth0

成功解决截图

在这里插入图片描述

原理

  • 在定时任务运行命令或脚本的时候,只能识别到/bin或/usr/bin目录下面的命令
  • 只要不在这些目录下面的命令,就要使用绝对路径或者重新定义下PATH环境变量
  • 有部分命令存在在/sbin上的命令,crontab无法默认使用,所以需要使用绝对路径重写PATH变量重新加载环境变量

环境变量中的路径变量PATH 它告诉系统在哪些目录下查找可执行文件的路径,实现可以使用相对路径的命令
ls,系统将自动在PATH中的路径进行查找,查找到/usr/bin/ls后执行

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

相关推荐

  1. vscode导入自定义模块ModuleNotFoundError解决方案

    2024-05-14 16:20:09       28 阅读
  2. 2024年Ubuntu18.04执行do-release-upgrade解决方案

    2024-05-14 16:20:09       49 阅读
  3. opencv一些解决方案

    2024-05-14 16:20:09       57 阅读
  4. 深度学习_相关解决方案

    2024-05-14 16:20:09       39 阅读
  5. windows执行定时任务

    2024-05-14 16:20:09       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 16:20:09       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 16:20:09       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 16:20:09       87 阅读
  4. Python语言-面向对象

    2024-05-14 16:20:09       96 阅读

热门阅读

  1. 机器学习【简述】

    2024-05-14 16:20:09       32 阅读
  2. 【TypeScript声明合并简介以及使用方法】

    2024-05-14 16:20:09       40 阅读
  3. 【C++】字符串出现次数

    2024-05-14 16:20:09       33 阅读
  4. Mysql 锁

    Mysql 锁

    2024-05-14 16:20:09      37 阅读
  5. 图书管理数据库

    2024-05-14 16:20:09       36 阅读
  6. Android 桌面小组件 AppWidgetProvider(2)

    2024-05-14 16:20:09       28 阅读
  7. 什么是跨境物流管理系统,它有什么功能

    2024-05-14 16:20:09       26 阅读
  8. Spring redis工具类

    2024-05-14 16:20:09       37 阅读
  9. 算法打卡day45

    2024-05-14 16:20:09       42 阅读
  10. 二级和三级城市插件

    2024-05-14 16:20:09       32 阅读