项目结构示例
/home/ubuntu/project/
├── py310/ # Python 虚拟环境目录
│ ├── bin/python
│ └── …
└── xxxJob/
├──── init.py
├──── load_env.py
├──── cloudScript/
│ ├──── init.py
│ └──── signHiFiNi.py
└──
创建虚拟环境并安装依赖
cd /home/ubuntu/project
python3 -m venv py310
source py310/bin/activate
pip install -r requirements.txt
`测试脚本运行是否正常
在项目根目录下(/home/ubuntu/project)执行:
/home/ubuntu/project/py310/bin/python -m xxxJob.cloudScript.signHiFiNi✅ 如果正常执行,无
ModuleNotFoundError,说明导入路径没问题。
在 crontab 中配置任务
编辑任务:
crontab -e添加以下内容(示例为每 5 分钟执行一次):
*/5 * * * * cd /home/ubuntu/project && /home/ubuntu/project/py310/bin/python -m xxxJob.cloudScript.signHiFiNi >> /home/ubuntu/project/xxxJob/sign.log 2>&1命令详解
| 部分 | 说明 |
|---|---|
cd /home/ubuntu/project |
切换到项目根目录(包路径的起点) |
/home/ubuntu/project/py310/bin/python |
指定虚拟环境中的 Python 解释器 |
-m xxxJob.cloudScript.signHiFiNi |
以模块形式执行脚本,自动解析 import |
>> sign.log 2>&1 |
追加输出和错误到日志文件 |
查看日志输出
tail -f /home/ubuntu/project/xxxJob/sign.log常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
ModuleNotFoundError: No module named 'load_env' |
Python 从 cloudScript/ 启动导致路径错误 |
用 -m 模块方式执行或设置 PYTHONPATH |
python 命令在 cron 中找不到 |
cron 没加载环境变量 | 写 Python 绝对路径 /home/ubuntu/project/py310/bin/python |
| 脚本在手动运行正常但 cron 不执行 | 环境变量不同 | 用 cd 切换目录 + 绝对路径执行 |
| 没有输出 | cron 的 stdout/stderr 没被捕获 | 重定向 >> /path/to/log 2>&1 |
备用方案(若不使用包导入)
如果你的脚本直接用文件路径运行(非 -m 模式),可以设置临时 PYTHONPATH:
*/5 * * * * cd /home/ubuntu/project/xxxJob && PYTHONPATH=$(pwd) /home/ubuntu/project/py310/bin/python cloudScript/signHiFiNi.py >> /home/ubuntu/project/xxxJob/sign.log 2>&1验证任务是否已注册
crontab -l输出类似:
*/5 * * * * cd /home/ubuntu/project && /home/ubuntu/project/py310/bin/python -m xxxJob.cloudScript.signHiFiNi >> /home/ubuntu/project/xxxJob/sign.log 2>&1推荐实践总结
| 场景 | 推荐命令 |
|---|---|
| 长期稳定运行(生产) | /home/ubuntu/project/py310/bin/python -m xxxJob.cloudScript.signHiFiNi |
| 单文件测试 | PYTHONPATH=$(pwd) python cloudScript/signHiFiNi.py |
| 临时调试 | source py310/bin/activate && python ... |
| 日志查看 | tail -f sign.log |
维护建议:
- 定期清理日志文件;
- 用绝对路径一律防止路径丢失;
- 不要依赖
$(pwd)或相对路径; - 确保 cron 使用的用户有正确的权限。
作者备注:
这份指南适用于 Ubuntu / Debian / CentOS 等常见 Linux 服务器。
建议测试命令先在终端中手动运行一次,确认无误后再加入 crontab。
作者:admin 创建时间:2025-11-07 11:48
最后编辑:admin 更新时间:2025-11-07 11:56
最后编辑:admin 更新时间:2025-11-07 11:56