反馈已提交

网络繁忙

Shell脚本执行结果说明

  • 文档创建者:Roxy
  • 历史版本:8
  • 最近更新:Marlon.Zhao 于 2024-06-14
  • 1. 概述

    用户在使用 Shell 脚本调用外部任务时,需要了解 FineDataLink 的调用任务是否执行成功。

    同时本文给出推荐的 shell 脚本书写方式。

    2. 判断 Shell 脚本任务执行成功

    FineDataLink 中脚本运行成功或者失败是根据如下进程退出码(exit code)来进行判断的:

    • 退出码 0:表示脚本执行成功。

    • 其它退出码:表示失败。

    注1:如果 exit 没有指定数字,则默认为exit 0,即脚本执行成功。

    注2:exit 命令是退出命令,当脚本执行到 exit 时整个 Shell 就会退出执行,不会再执行后续命令。

    2.1 脚本中直接调用 exit

    比如下面这个脚本,结尾直接调用了 exit,没有指定数字,那么默认为 exit 0,即脚本执行成功:

    Shell 脚本执行该脚本,在 FineDataLink 节点执行结果就一定是成功的。

    2.2 脚本中不调用 exit

    此时整个 Shell 脚本的退出码(exit code)和脚本中最后一条命令一致。

    例如这样一个脚本

    lss
    echo 66

    执行结果可以看到第一个命令执行失败,第二个命令执行成功。此时使用$? 可以获取到上一个命令的 exit code,那么此时 Shell 脚本的退出码(exit code)就是 0,即执行成功,如下图所示:

    FineDataLink 中也会认为整个 Shell 脚本执行成功,在运行日志中返回执行成功说明。

    将同样的命令执行顺序对调一下,执行结果可以看到第一个命令执行成功,第二个命令执行失败。此时使用$?可以获取到上一个命令的 exit code,那么此时 Shell 脚本的退出码(exit code)就是 127,即执行失败,如下图所示:

    FineDataLink 中也会认为整个 Shell 脚本执行失败。

    3. 推荐的脚本书写方式

    基于本文第二章的说明,给出推荐的脚本书写方式:

    1)推荐一个 Shell 脚本中执行一个任务,且在脚本结尾不要调用 exit 。以保证在 FineDataLink 中任务运行日志返回结果总是准确的。

    2)如果业务场景中需要实现一个 Shell 脚本执行多个任务,可以结合判断脚本的成功还是失败,用$?以及参数赋值,获取脚本中每个任务的 exit code 并进行乘法或者加法运算实现整个脚本执行结果判断。

    3.1 Shell 脚本中任一任务执行失败,节点算执行失败

    将多个返回码 exit code 进行加法运算。只要有一个任务执行失败(不为0),最终返回码就是不为0,即整个 Shell 脚本执行失败

    例如某脚本如下:

    echo 666
    lss
    echo log
    ls

    将每个任务后都设置参数赋值任务执行结果,例如 lss 执行后取出其返回码并赋值给 a ,并在脚本最后将所有任务的执行结果相加。

    echo 666
    lss
    a=$?
    echo log
    ls
    b=$?
    exit `expr $a + $b`

    然后使用命令执行任务,会发现 lss 任务执行失败,如下图所示:

    使用命令 echo $? 查看任务执行结果,即可看到返回值为 127,即整个 Shell 脚本任务执行失败,如下图所示:

    此时在 FineDataLink 中执行任务,日志提示任务执行失败,如下图所示:

    3.2 Shell 脚本中任一任务执行成功,节点算作执行成功

    将多个返回码 exit code 进行乘法运算。只要有一个任务执行成功(为0),最终返回码就是0,即整个 Shell 脚本执行成功。

    将每个任务后都设置参数赋值任务执行结果,例如 lss 执行后取出其返回码并赋值给 a ,并在脚本最后将所有任务的执行结果相乘。

    echo 666
    lss
    a=$?
    echo log
    ls
    b=$?
    exit `expr $a \* $b`

    执行脚本,虽然 lss 任务执行失败,但是任务返回码为 0 ,即执行成功。

    此时在 FineDataLink 中执行任务,日志提示任务执行成功,如下图所示:

    注:如果需要更详细的日志输出,可将日志等级调整为INFO:日志等级设置

    附件列表


    主题: 数据开发-定时任务
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持