Cron任务未自动运行求助:显卡销量采集脚本手动可执行
问题排查与修正方案
一、Cron任务的核心错误
- 路径拼写错误:
/user/bin/bash是错误路径,正确应为/usr/bin/bash(少了字母s) - 语法格式错误:Cron的月份字段用
nov-dec不兼容标准解析逻辑,建议改用数字范围11-12;另外你写的脚本路径/sells_Cards/sold.sh是根目录路径,实际脚本在/home/ubuntu/sells_Cards/sold.sh,必须写完整绝对路径。
二、采集脚本的问题
- 输出文件路径错误:脚本里的
sales.txt是相对路径,Cron运行时默认工作目录是用户主目录(/home/ubuntu),执行后会把文件写到主目录,而非你预期的sells_Cards文件夹下,需要改为绝对路径。 - Curl依赖不稳定:
curl=$(which curl)依赖Cron的PATH环境变量,而Cron默认PATH范围很窄,可能找不到curl,建议直接用curl的绝对路径(手动执行which curl可获取,比如/usr/bin/curl)。
三、修正后的内容
修正后的采集脚本(sold.sh)
#!/bin/bash # 直接使用curl绝对路径,避免环境变量问题 CURL="/usr/bin/curl" RTX3060="http://0.0.0.0:5000/rtx3060" RTX3070="http://0.0.0.0:5000/rtx3070" RTX3080="http://0.0.0.0:5000/rtx3080" RTX3090="http://0.0.0.0:5000/rtx3090" RX6700="http://0.0.0.0:5000/rx6700" # 指定输出文件的绝对路径 OUTPUT_FILE="/home/ubuntu/sells_Cards/sales.txt" function output_(){ $CURL $RTX3060 $RTX3070 $RTX3080 $RTX3090 $RX6700 > $OUTPUT_FILE } output_
修正后的Cron任务(执行crontab -e修改)
# 11-12月每分钟执行脚本 */1 * * 11-12 * /usr/bin/bash /home/ubuntu/sells_Cards/sold.sh
四、额外验证步骤
- 给脚本添加执行权限:执行
chmod +x /home/ubuntu/sells_Cards/sold.sh - 查看Cron执行日志:Ubuntu下执行
grep CRON /var/log/syslog,能看到任务是否触发、是否有错误提示。
内容的提问来源于stack exchange,提问作者Raouf Yahiaoui
相关产品推荐
相关产品推荐

