Linux下crontab运行含conda的bash脚本报找不到环境及权限错误如何解决
问题根因与解决方案
你遇到的两个报错对应两个不同的问题:
Could not find conda environment是由于非anaconda安装用户执行脚本时,默认没有加载对应conda配置,且激活命令未明确指定环境名,导致无法定位到安装在administrator目录下的conda环境PermissionError是由于当前执行脚本的用户没有/share/RosAtom-V/Logs/目录的读写权限,无法写入日志文件
具体解决步骤
- 首先修改bash脚本,明确指定conda配置路径与激活环境,解决环境找不到的问题,修改后脚本示例如下(如果是自定义环境将
base替换为你的实际环境名即可):#!/bin/bash # 直接加载administrator用户的conda全局配置,避免环境变量识别异常 source /home/administrator/anaconda3/etc/profile.d/conda.sh # 明确指定要激活的环境 conda activate base python /share/****/VK_RU_YAR.py conda deactivate - 其次解决权限问题,两种可选方案:
- 方案1:给当前执行用户开放日志目录读写权限,执行命令:
# 替换为你实际的执行用户名和用户组 sudo chown -R 执行用户名:执行用户组 /share/RosAtom-V/Logs/ # 安全性要求不高的场景也可以直接给所有用户开放权限 sudo chmod -R 777 /share/RosAtom-V/Logs/ - 方案2:不用修改目录权限,直接切换为administrator用户执行脚本,同时可以避免conda环境识别问题,执行命令为:
sudo -u administrator bash /你的脚本存放路径/脚本名.sh
- 方案1:给当前执行用户开放日志目录读写权限,执行命令:
- 如果是配置在crontab中执行,更推荐直接将定时任务配置到administrator用户的crontab列表中,无需额外修改权限或脚本:
执行命令sudo crontab -u administrator -e,在打开的编辑页中添加你的定时任务规则即可。
内容的提问来源于stack exchange,提问作者kostya ivanov
相关产品推荐
相关产品推荐

