在从 crontab 运行的 sh 脚本中找不到命令 [重复]

Posted

技术标签:

【中文标题】在从 crontab 运行的 sh 脚本中找不到命令 [重复]【英文标题】:Command not found in sh script running from crontab [duplicate] 【发布时间】:2021-01-14 23:57:26 【问题描述】:

我有一个运行的 sh 文件:python -m grafana_backup.cli save --config $settings_file。

我从 crontab 运行此文件,运行 .sh 文件,但出现此错误:python: command not found。

crontab 中的 shell 是 SHELL=/bin/bash,.sh 文件中的 shell 是 #!/bin/bash

【问题讨论】:

您是否使用某种虚拟环境来运行python?如果是这样,您可能希望在调用 python 之前在 shell 脚本中获取激活脚本。 行得通!就是这个问题,谢谢。 【参考方案1】:

做:

    'which python3' - 可能的结果是 /usr/bin/python3 将 #1 的结果添加到 crontab 命令中

一般建议: 对您的 sh 脚本正在使用的每个资源使用 完整路径

【讨论】:

作为 SHELL 变量? 没有。只需在 sh 脚本中将 python 替换为 /usr/bin/python3(假设您的 python 在 usr/bin 下) 可能会比激活虚拟环境(或 conda env)更复杂,如果 python 的路径不在默认 @987654324 中,这是很可能的情况@ 在 cron 环境中。 我现在遇到的问题是:/usr/bin/python3: No module named grafana_backup 似乎使用python的完整路径也改变了我当前的路径,我无法访问该模块

以上是关于在从 crontab 运行的 sh 脚本中找不到命令 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python 脚本在 docker 容器中找不到使用 CRON 运行的 ENV 变量

Docker,MySQL - 在 .sh 文件中找不到命令

在 sh shell 中找不到源命令

Bash变量分配中找不到命令错误

sh Crontab确保python脚本正在运行

linux 环境下bash脚本中找不到命令