You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon Linux 2 EC2中手动执行脚本redis-cli正常,crontab执行报错命令未找到

解决crontab执行备份脚本时找不到redis-cli的问题

问题原因

crontab运行时的环境变量PATH比用户手动登录时的PATH精简很多(默认通常只有/usr/bin:/bin),而你编译安装的redis-cli所在目录不在这个默认PATH里,所以手动执行能找到命令,crontab执行时却找不到。

可行解决方法

  • 在脚本中使用redis-cli的绝对路径调用

    1. 手动执行which redis-cli,得到redis-cli的绝对路径(比如/home/ec2-user/redis/src/redis-cli)
    2. 打开备份脚本backup-elasticache-to-s3.sh,把所有redis-cli的调用替换成这个绝对路径,比如把redis-cli --tls ...改成/home/ec2-user/redis/src/redis-cli --tls ...
  • 将redis-cli复制到系统默认PATH目录
    执行以下命令(替换成你的redis-cli实际路径):

    sudo cp /home/ec2-user/redis/src/redis-cli /usr/bin/
    sudo chmod 755 /usr/bin/redis-cli
    

    这样系统所有环境都能直接找到redis-cli,不管是手动还是crontab执行都没问题。

  • 在crontab中指定PATH
    编辑ec2-user的crontab:

    crontab -e
    

    在文件最顶部添加一行(替换成redis-cli所在的实际目录):

    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/ec2-user/redis/src
    

    保存退出后,crontab执行时就会包含这个目录,能找到redis-cli。

  • 在脚本开头设置PATH
    打开备份脚本,在#!/bin/bash下面添加一行(替换成redis-cli所在的实际目录):

    export PATH=$PATH:/home/ec2-user/redis/src
    

    这样脚本执行时会自动把该目录加入环境变量,解决找不到命令的问题。

内容的提问来源于stack exchange,提问作者PirateApp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:17:46