虚心学习,天天向上 2023-01-18 21:36 采纳率: 50%
浏览 48
已结题

shell脚本手动执行没问题,但在定时任务中涉及后台启动部分却执行失败

问题遇到的现象和发生背景

shell 脚本可以手动执行,执行正确,但放在crond定时任务中自动执行,执行也没问题,但是执行结果不对,有一个nohup后台启动命令确未执行成功

相关脚本
#!/bin/sh
kafka_logs=/data/kafka-logs/systerm-0
kafka_path=/data/logQueue/bin
kafka_config=/data/logQueue/config/server.properties
kafka_out=/var/log/kafka-server.log
disk_us=$(df -h| grep -w '/data' | awk '{print $5}' |sed 's/%//g')
#磁盘阀值
disk_to=1
#kakfa进程号
#kafka_pid=$(jps|grep -w 'Kafka' |awk '{print $1}')
#kafka_pid=$(ps -ef | grep -w "/data/logQueue" | grep -v grep | awk '{print $2}')

if [ "$disk_us" -lt "$disk_to" ];then
    exit 1;
else
   ps -ef | grep -w "/data/logQueue" | grep -v grep | awk '{print $2}' | xargs kill -9 && rm -rf $kafka_logs/* && sleep 5
   echo "11111"
   **nohup ${kafka_path}/kafka-server-start.sh ${kafka_config} > ${kafka_out} 2>&1 &**
   sleep 3
   pid=$(ps -ef | grep -w "/data/logQueue" | grep -v grep | awk '{print $2}')
   echo "${pid}" 
   if [ -z "${pid}" ];then
     echo "启动失败"
    ** nohup ${kafka_path}/kafka-server-start.sh ${kafka_config} > ${kafka_out} 2>&1 &**
     sleep 3
     echo "$(ps -ef | grep -w "/data/logQueue" | grep -v grep | awk '{print $2}')"
   else
     echo "启动成功"
     exit 0
   fi
   echo "完成"
fi

星号(**)标记部分在手动执行下没问题,但是放在定时任务中却执行失败,/var/spool/mail/root下没有相关报错信息,烦请帮忙看看,此脚本是什么问题,为什么放在crond定时任务中执行却失败
  • 写回答

2条回答 默认 最新

  • 快撑死的鱼 2023-01-18 23:26
    关注

    回答不易,求求您采纳点赞哦

    有几个潜在的原因可以解释为什么 shell 脚本在手动执行时可以正常工作,而通过 cron 定时任务执行时却不能。以下是一些可能的原因:

    • 环境变量:脚本可能依赖某些环境变量,这些环境变量仅在手动执行脚本时设置,但在通过 cron 执行时不会设置。确保脚本已设置所有必需的环境变量。

    • 权限:脚本可能需要某些通过 cron 执行时未授予的权限。确保脚本具有执行所有命令的必要权限。

    • 文件路径:脚本可能包含通过 cron 执行时不同的文件路径。确保脚本使用绝对文件路径而不是相对文件路径。

    • Cron 配置:确保cron 配置正确。该脚本应以您手动运行它的同一用户身份执行,并使用相同的环境变量。

    • Nohup 命令:nohup 命令用于在后台运行命令,即使用户注销也是如此。但是 nohup 命令在通过 cron 执行时可能无法正常工作。您可以尝试将输出重定向到一个文件,然后检查该文件以查看命令是否正常运行。

    • 时间:如果脚本正在终止 kafka 进程然后启动它,则可能存在时间问题导致脚本在完成终止前一个进程之前启动进程。尝试在终止进程和启动新进程之间增加一些睡眠时间。

    重要的是检查每个可能的原因并分别测试脚本以找到问题的根本原因。检查日志以查看脚本在通过 cron 执行时是否生成任何错误消息也可能会有所帮助。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月28日
  • 已采纳回答 1月20日
  • 创建了问题 1月18日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来