{"id":27345,"date":"2024-11-24T19:17:35","date_gmt":"2024-11-24T11:17:35","guid":{"rendered":"https:\/\/fwq.ai\/blog\/?p=27345"},"modified":"2024-11-24T19:17:35","modified_gmt":"2024-11-24T11:17:35","slug":"rabbitmq%e4%b8%ad5%e4%b8%aashell%e8%84%9a%e6%9c%ac%e7%9a%84%e6%9c%ac%e8%b4%a8-%e6%8e%a8%e8%8d%90","status":"publish","type":"post","link":"https:\/\/fwq.ai\/blog\/27345\/","title":{"rendered":"RabbitMQ\u4e2d5\u4e2ashell\u811a\u672c\u7684\u672c\u8d28 \u2013 \u63a8\u8350"},"content":{"rendered":"<p>\u4ece\u6587\u7ae0\u4e2d\u53ef\u4ee5\u770b\u5230\uff0c5\u4e2ashell\u811a\u672c\u4e2d\u7684rabbitmqctl\u3001rabbitmq-server\u3001rabbitmq-plugins\u90fdinclude\u4e86rabbitmq-env\u811a\u672c\uff0c\u800crabbitmq-env\u811a\u672cinclude\u4e86rabbitmq-defaults\u3002rabbitmq-defaults\u7684\u9ed8\u8ba4\u8bbe\u7f6e\uff0c\u800c\u4e14rabbitmq-env\u662frabbmitmq\u7684\u771f\u6b63\u914d\u7f6eshell\uff08\u5e76\u975e\u914d\u7f6e\u6587\u4ef6\uff09\u3002\u7ed3\u5408\u8be5\u6587\u7ae0\uff0c\u6ce8\u91ca\u4e86rabbit 3.6.6\u76845\u4e2a\u6587\u4ef6\u3002<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>1\u3001rabbitmq-defaults<\/strong><\/h2>\n<pre>#!\/bin\/sh -e\r\n#\u53c2\u6570-e\u8868\u793a\u4e00\u65e6\u51fa\u9519\uff0c\u5c31\u9000\u51fa\u5f53\u524d\u7684shell\r\n\r\n# RABBITMQ_HOME\u53d8\u91cf\u5728rabbitmq-env\u811a\u672c\u4e2d\u5b9a\u4e49\u4e86,rabbitmq-env\u811a\u672cinclude\u4e86\u8be5\u6587\u4ef6\u3002\r\nSYS_PREFIX=${RABBITMQ_HOME}\r\n\r\n### next line will be updated when generating a standalone release\r\nERL_DIR=\r\n\r\nCLEAN_BOOT_FILE=start_clean\r\nSASL_BOOT_FILE=start_sasl\r\n\r\nif [ -f \"${RABBITMQ_HOME}\/erlang.mk\" ]; then\r\n    # RabbitMQ is executed from its source directory. The plugins\r\n    # directory and ERL_LIBS are tuned based on this.\r\n    RABBITMQ_DEV_ENV=1\r\nfi\r\n\r\n#--------------------------------------------\r\n# \u5b9a\u4e49\u4e86\u76f8\u5173\u6587\u4ef6\u7684\u8def\u5f84\r\n# 2\u4e2a\u914d\u7f6e\u6587\u4ef6\u3001\u65e5\u5fd7\u76ee\u5f55\u3001\u6570\u636e\u76ee\u5f55\u3001\u63d2\u4ef6\u76ee\u5f55\u3001\u542f\u7528\u63d2\u4ef6\u76ee\u5f55\r\n# rabbitmq\u4f7f\u7528\u7684mnesia\u7684\u6570\u636e\u5e93,\u5173\u4e8emnesia\u53ef\u4ee5\u81ea\u884c\u767e\u5ea6\u3002Mnesia[m'ni\u02d0z\u026a\u0259]\r\n# Mnesia\u4e0eErlang\u7f16\u7a0b\u8bed\u8a00\u662f\u7d27\u8026\u5408\u7684\uff0c\u4f7f\u5f97Erlang\u51e0\u4e4e\u6210\u4e3a\u6570\u636e\u5e93\u7f16\u7a0b\u8bed\u8a00\r\n#--------------------------------------------\r\n# \u6839\u636e\u672c\u4eba\u7684\u559c\u597d,\u8c03\u6574\u4e86\u4e0b\u914d\u7f6e\u6587\u4ef6\u7684\u540d\u79f0\u2028\r\n# \u8c03\u6574\u524d:CONF_ENV_FILE=${SYS_PREFIX}\/etc\/rabbitmq\/rabbitmq-env.conf\u2028\r\n# \u5176\u4ed6\u7684\u914d\u7f6e\u6587\u4ef6\u8def\u5f84(\u5305\u62ec\u65e5\u5fd7\u3001\u6570\u636e\u7b49),\u5c06\u5728\/etc\/rabbitmq-env.conf\u7684\u6587\u4ef6\u4e2d\u91cd\u65b0\u914d\u7f6e.\u2028\r\n# \u66f4\u6539\u7684\u539f\u5219\u5c3d\u91cf\u5c11\u7684\u66f4\u6539rabbit\u76845\u4e2ashell\u811a\u672c,\u540c\u65f6\u4e5f\u56e0\u4e3arabbitmq\u542f\u52a8\u547d\u4ee4\u4e2d\u65e0\u6cd5\u652f\u6301\u52a0\u914d\u7f6e\u6587\u4ef6\r\n\u2028#--------------------------------------------\r\nBOOT_MODULE=\"rabbit\"\r\nCONFIG_FILE=${SYS_PREFIX}\/etc\/rabbitmq\/rabbitmq\r\nLOG_BASE=${SYS_PREFIX}\/var\/log\/rabbitmq\r\nMNESIA_BASE=${SYS_PREFIX}\/var\/lib\/rabbitmq\/mnesia\r\nENABLED_PLUGINS_FILE=${SYS_PREFIX}\/etc\/rabbitmq\/enabled_plugins\r\nPLUGINS_DIR=\"${RABBITMQ_HOME}\/plugins\"\r\nCONF_ENV_FILE=${SYS_PREFIX}\/etc\/rabbitmq-env.conf\r\n\r\n##### \u8c03\u8bd5\u533a \u5f00\u59cb \u8fd0\u884c\u8bf7\u6ce8\u91ca\u4e0b\u9762\u5404\u884c#####\r\necho \"SYS_PREFIX:\"${SYS_PREFIX}\r\necho \"CLEAN_BOOT_FILE:\"${CLEAN_BOOT_FILE}\r\necho \"SASL_BOOT_FILE:\"${SASL_BOOT_FILE}\r\necho \"CONFIG_FILE:\"${CONFIG_FILE}\r\necho \"LOG_BASE:\"${LOG_BASE}\r\necho \"MNESIA_BASE:\"${MNESIA_BASE}\r\necho \"ENABLED_PLUGINS_FILE:\"${ENABLED_PLUGINS_FILE}\r\necho \"PLUGINS_DIR:\"${PLUGINS_DIR}\r\necho \"CONF_ENV_FILE:\"${CONF_ENV_FILE}\r\n##### \u8c03\u8bd5\u533a \u7ed3\u675f #####<\/pre>\n<p><strong>\u8fd0\u884c .\/rabbitmq-defaults<\/strong><\/p>\n<pre>SYS_PREFIX:\/usr\/local\/rabbitmq\r\nCLEAN_BOOT_FILE:start_clean\r\nSASL_BOOT_FILE:start_sasl\r\nCONFIG_FILE:\/usr\/local\/rabbitmq\/etc\/rabbitmq.conf\r\nLOG_BASE:\/usr\/local\/rabbitmq\/var\/log\/rabbitmq\r\nMNESIA_BASE:\/usr\/local\/rabbitmq\/var\/lib\/rabbitmq\/mnesia\r\nENABLED_PLUGINS_FILE:\/usr\/local\/rabbitmq\/etc\/rabbitmq\/enabled_plugins\r\nPLUGINS_DIR:\/usr\/local\/rabbitmq\/plugins\r\nCONF_ENV_FILE:\/usr\/local\/rabbitmq\/etc\/rabbitmq-env.conf<\/pre>\n<h2>2\u3001rabbitmq-env<\/h2>\n<pre>#!\/bin\/sh -e\r\n# \u53c2\u6570-e\u8868\u793a\u4e00\u65e6\u51fa\u9519\uff0c\u5c31\u9000\u51fa\u5f53\u524d\u7684shell\r\n\r\n# \u9632\u6b62\u91cd\u590d\u52a0\u8f7d\u8be5\u6587\u4ef6,RABBITMQ_ENV_LOADED\u53d8\u91cf,\u5728\u811a\u672c\u4e2d\u540e\u9762\u5b9a\u4e49\u4e86\u3002\r\nif [ \"$RABBITMQ_ENV_LOADED\" = 1 ]; then\r\n    return 0;\r\nfi\r\n\r\n#--------------------------------------------\r\n# -z\u8868\u793a\u53d8\u91cf$RABBITMQ_SCRIPTS_DIR\u662f\u5426\u6709\u503c\r\n# \u6839\u636e\u8fd0\u884c\u7684\u811a\u672c\u8def\u5f84\u4ee5\u53ca\u662f\u5426\u6709\u8f6f\u94fe,\u5b9a\u4e49\u4e86\u811a\u672c\u7684\u8def\u5f84 $SCRIPT_PATH,\r\n# \u4ee5\u53ca\u811a\u672c\u7684\u76ee\u5f55$RABBITMQ_SCRIPTS_DIR\r\n#--------------------------------------------\r\nif [ -z \"$RABBITMQ_SCRIPTS_DIR\" ]; then\r\n    # We set +e here since since our test for \"readlink -f\" below needs to\r\n    # be able to fail.\r\n    set +e\r\n    # Determine where this script is really located (if this script is\r\n    # invoked from another script, this is the location of the caller)\r\n    SCRIPT_PATH=\"$0\"\r\n    while [ -h \"$SCRIPT_PATH\" ] ; do\r\n        # Determine if readlink -f is supported at all. TODO clean this up.\r\n        FULL_PATH=`readlink -f $SCRIPT_PATH 2&gt;\/dev\/null`\r\n        if [ \"$?\" != \"0\" ]; then\r\n          REL_PATH=`readlink $SCRIPT_PATH`\r\n          if expr \"$REL_PATH\" : '\/.*' &gt; \/dev\/null; then\r\n            SCRIPT_PATH=\"$REL_PATH\"\r\n          else\r\n            SCRIPT_PATH=\"`dirname \"$SCRIPT_PATH\"`\/$REL_PATH\"\r\n          fi\r\n        else\r\n          SCRIPT_PATH=$FULL_PATH\r\n        fi\r\n    done\r\n    set -e\r\n\r\n    RABBITMQ_SCRIPTS_DIR=`dirname $SCRIPT_PATH`\r\nfi\r\n\r\n\r\nrmq_realpath() {\r\n    local path=$1\r\n\r\n    if [ -d \"$path\" ]; then\r\n        cd \"$path\" &amp;&amp; pwd\r\n    elif [ -f \"$path\" ]; then\r\n        cd \"$(dirname \"$path\")\" &amp;&amp; echo $(pwd)\/$(basename \"$path\")\r\n    else\r\n        echo \"$path\"\r\n    fi\r\n}\r\n\r\n#--------------------------------------------\r\n# \u6839\u636e$RABBITMQ_SCRIPTS_DIR,\u5f97\u51faRABBITMQ_HOME.\r\n# \u672c\u4eba\u7684\u73af\u5883\u4e2d,$RABBITMQ_SCRIPTS_DIR=\/usr\/local\/rabbitmq\/sbin\r\n# \u6240\u4ee5$RABBITMQ_HOME=\/usr\/local\/rabbitmq\r\n#--------------------------------------------\r\nRABBITMQ_HOME=\"$(rmq_realpath \"${RABBITMQ_SCRIPTS_DIR}\/..\")\"\r\n\r\n## Set defaults\r\n. ${RABBITMQ_SCRIPTS_DIR}\/rabbitmq-defaults\r\n\r\n#--------------------------------------------\r\n# Set environment vars RABBITMQ_&lt;\u53d8\u91cf&gt; to defaults if not set\r\n# \u5982\u679c\u76f8\u5173\u53c2\u6570\u6ca1\u6709\u914d\u7f6e\u90a3\u4e48\u8868\u8fbe\u5f0f\"x\" = \"x$\u53c2\u6570KEY\"\u6c38\u8fdc\u6210\u7acb\uff0c\u5219\u8bbe\u7f6e\u76f8\u5173\u53c2\u6570\u7684\u9ed8\u8ba4\u503c\r\n#--------------------------------------------\r\n\r\nDEFAULT_SCHEDULER_BIND_TYPE=\"db\"\r\n[ \"x\" = \"x$RABBITMQ_SCHEDULER_BIND_TYPE\" ] &amp;&amp; RABBITMQ_SCHEDULER_BIND_TYPE=${DEFAULT_SCHEDULER_BIND_TYPE}\r\n\r\nDEFAULT_DISTRIBUTION_BUFFER_SIZE=32000\r\n[ \"x\" = \"x$RABBITMQ_DISTRIBUTION_BUFFER_SIZE\" ] &amp;&amp; RABBITMQ_DISTRIBUTION_BUFFER_SIZE=${DEFAULT_DISTRIBUTION_BUFFER_SIZE}\r\n\r\n## Common defaults\r\nSERVER_ERL_ARGS=\"+P 1048576 +t 5000000 +stbt $RABBITMQ_SCHEDULER_BIND_TYPE +zdbbl $RABBITMQ_DISTRIBUTION_BUFFER_SIZE\"\r\n\r\n# We save the current value of $RABBITMQ_PID_FILE in case it was set by\r\n# an init script. If $CONF_ENV_FILE overrides it again, we must ignore\r\n# it and warn the user.\r\n#--------------------------------------------\r\n# \u5982\u679cRABBITMQ_PID_FILE\u5df2\u7ecf\u5b58\u5728,\u800c$CONF_ENV_FILE\u5219\u65e0\u6cd5\u8986\u76d6\u3002\r\n#--------------------------------------------\r\n\r\nsaved_RABBITMQ_PID_FILE=$RABBITMQ_PID_FILE\r\n\r\n## Get configuration variables from the configure environment file\r\n[ \"x\" = \"x$RABBITMQ_CONF_ENV_FILE\" ] &amp;&amp; RABBITMQ_CONF_ENV_FILE=${CONF_ENV_FILE}\r\n\r\n[ -f ${RABBITMQ_CONF_ENV_FILE} ] &amp;&amp; . ${RABBITMQ_CONF_ENV_FILE} || true\r\n\r\nif [ \"$saved_RABBITMQ_PID_FILE\" -a \\\r\n     \"$saved_RABBITMQ_PID_FILE\" != \"$RABBITMQ_PID_FILE\" ]; then\r\n    echo \"WARNING: RABBITMQ_PID_FILE was already set by the init script to:\" 1&gt;&amp;2\r\n    echo \"           $saved_RABBITMQ_PID_FILE\" 1&gt;&amp;2\r\n    echo \"         The value set in rabbitmq-env.conf is ignored because it\" 1&gt;&amp;2\r\n    echo \"         would break the init script.\" 1&gt;&amp;2\r\n\r\n    RABBITMQ_PID_FILE=\"$saved_RABBITMQ_PID_FILE\"\r\nfi\r\n\r\n[ \"x\" = \"x$RABBITMQ_USE_LONGNAME\" ] &amp;&amp; RABBITMQ_USE_LONGNAME=${USE_LONGNAME}\r\nif [ \"xtrue\" = \"x$RABBITMQ_USE_LONGNAME\" ] ; then\r\n    RABBITMQ_NAME_TYPE=-name\r\n    [ \"x\" = \"x$HOSTNAME\" ] &amp;&amp; HOSTNAME=`env hostname -f`\r\n    [ \"x\" = \"x$NODENAME\" ] &amp;&amp; NODENAME=rabbit@${HOSTNAME}\r\nelse\r\n    RABBITMQ_NAME_TYPE=-sname\r\n    [ \"x\" = \"x$HOSTNAME\" ] &amp;&amp; HOSTNAME=`env hostname`\r\n    [ \"x\" = \"x$NODENAME\" ] &amp;&amp; NODENAME=rabbit@${HOSTNAME%%.*}\r\nfi\r\n\r\n##--- Set environment vars RABBITMQ_&lt;var_name&gt; to defaults if not set\r\n\r\nrmq_normalize_path() {\r\n    local path=$1\r\n\r\n    # Remove redundant slashes and strip a trailing slash\r\n    echo \"$path\" | sed -e 's#\/\\{2,\\}#\/#g' -e 's#\/$##'\r\n}\r\n\r\nrmq_normalize_path_var() {\r\n    local var warning\r\n\r\n    local prefix=\"WARNING:\"\r\n\r\n    for var in \"$@\"; do\r\n        local path=$(eval \"echo \\\"\\$$var\\\"\")\r\n        case \"$path\" in\r\n        *\/)\r\n            warning=1\r\n            echo \"$prefix Removing trailing slash from $var\" 1&gt;&amp;2\r\n            ;;\r\n        esac\r\n\r\n        eval \"$var=$(rmq_normalize_path \"$path\")\"\r\n\r\n        if [ \"x$warning\" = \"x1\" ]; then\r\n            prefix=\"        \"\r\n        fi\r\n    done\r\n}\r\n\r\nrmq_check_if_shared_with_mnesia() {\r\n    local var warning\r\n\r\n    local mnesia_dir=$(rmq_realpath \"${RABBITMQ_MNESIA_DIR}\")\r\n    local prefix=\"WARNING:\"\r\n\r\n    for var in \"$@\"; do\r\n        local dir=$(eval \"echo \\\"\\$$var\\\"\")\r\n\r\n        case $(rmq_realpath \"$dir\") in\r\n        ${mnesia_dir})\r\n            warning=1\r\n            echo \"$prefix $var is equal to RABBITMQ_MNESIA_DIR\" 1&gt;&amp;2\r\n            ;;\r\n        ${mnesia_dir}\/*)\r\n            warning=1\r\n            echo \"$prefix $var is located inside RABBITMQ_MNESIA_DIR\" 1&gt;&amp;2\r\n            ;;\r\n        esac\r\n\r\n        if [ \"x$warning\" = \"x1\" ]; then\r\n            prefix=\"        \"\r\n        fi\r\n    done\r\n\r\n    if [ \"x$warning\" = \"x1\" ]; then\r\n        echo \"$prefix =&gt; Auto-clustering will not work ('cluster_nodes' in rabbitmq.config)\" 1&gt;&amp;2\r\n    fi\r\n}\r\n\r\nDEFAULT_NODE_IP_ADDRESS=auto\r\nDEFAULT_NODE_PORT=5672\r\n[ \"x\" = \"x$RABBITMQ_NODE_IP_ADDRESS\" ] &amp;&amp; RABBITMQ_NODE_IP_ADDRESS=${NODE_IP_ADDRESS}\r\n[ \"x\" = \"x$RABBITMQ_NODE_PORT\" ] &amp;&amp; RABBITMQ_NODE_PORT=${NODE_PORT}\r\n\r\n[ \"x\" = \"x$RABBITMQ_NODE_IP_ADDRESS\" ] &amp;&amp; [ \"x\" != \"x$RABBITMQ_NODE_PORT\" ] &amp;&amp; RABBITMQ_NODE_IP_ADDRESS=${DEFAULT_NODE_IP_ADDRESS}\r\n[ \"x\" != \"x$RABBITMQ_NODE_IP_ADDRESS\" ] &amp;&amp; [ \"x\" = \"x$RABBITMQ_NODE_PORT\" ] &amp;&amp; RABBITMQ_NODE_PORT=${DEFAULT_NODE_PORT}\r\n\r\n[ \"x\" = \"x$RABBITMQ_DIST_PORT\" ] &amp;&amp; RABBITMQ_DIST_PORT=${DIST_PORT}\r\n[ \"x\" = \"x$RABBITMQ_DIST_PORT\" ] &amp;&amp; [ \"x\" = \"x$RABBITMQ_NODE_PORT\" ] &amp;&amp; RABBITMQ_DIST_PORT=$((${DEFAULT_NODE_PORT} + 20000))\r\n[ \"x\" = \"x$RABBITMQ_DIST_PORT\" ] &amp;&amp; [ \"x\" != \"x$RABBITMQ_NODE_PORT\" ] &amp;&amp; RABBITMQ_DIST_PORT=$((${RABBITMQ_NODE_PORT} + 20000))\r\n\r\n[ \"x\" = \"x$RABBITMQ_NODENAME\" ] &amp;&amp; RABBITMQ_NODENAME=${NODENAME}\r\n[ \"x\" = \"x$RABBITMQ_IO_THREAD_POOL_SIZE\" ] &amp;&amp; RABBITMQ_IO_THREAD_POOL_SIZE=${IO_THREAD_POOL_SIZE}\r\n[ \"x\" = \"x$RABBITMQ_SERVER_ERL_ARGS\" ] &amp;&amp; RABBITMQ_SERVER_ERL_ARGS=${SERVER_ERL_ARGS}\r\n[ \"x\" = \"x$RABBITMQ_CONFIG_FILE\" ] &amp;&amp; RABBITMQ_CONFIG_FILE=${CONFIG_FILE}\r\n[ \"x\" = \"x$RABBITMQ_LOG_BASE\" ] &amp;&amp; RABBITMQ_LOG_BASE=${LOG_BASE}\r\n[ \"x\" = \"x$RABBITMQ_MNESIA_BASE\" ] &amp;&amp; RABBITMQ_MNESIA_BASE=${MNESIA_BASE}\r\n[ \"x\" = \"x$RABBITMQ_SERVER_START_ARGS\" ] &amp;&amp; RABBITMQ_SERVER_START_ARGS=${SERVER_START_ARGS}\r\n[ \"x\" = \"x$RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS\" ] &amp;&amp; RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=${SERVER_ADDITIONAL_ERL_ARGS}\r\n[ \"x\" = \"x$RABBITMQ_SERVER_CODE_PATH\" ] &amp;&amp; RABBITMQ_SERVER_CODE_PATH=${SERVER_CODE_PATH}\r\n[ \"x\" = \"x$RABBITMQ_MNESIA_DIR\" ] &amp;&amp; RABBITMQ_MNESIA_DIR=${MNESIA_DIR}\r\n[ \"x\" = \"x$RABBITMQ_MNESIA_DIR\" ] &amp;&amp; RABBITMQ_MNESIA_DIR=${RABBITMQ_MNESIA_BASE}\/${RABBITMQ_NODENAME}\r\n[ \"x\" = \"x$RABBITMQ_IGNORE_SIGINT\" ] &amp;&amp; RABBITMQ_IGNORE_SIGINT=\"true\"\r\n[ \"xtrue\" = \"x$RABBITMQ_IGNORE_SIGINT\" ] &amp;&amp; RABBITMQ_IGNORE_SIGINT_FLAG=\"+B i\"\r\n\r\nrmq_normalize_path_var \\\r\n    RABBITMQ_CONFIG_FILE \\\r\n    RABBITMQ_LOG_BASE \\\r\n    RABBITMQ_MNESIA_BASE \\\r\n    RABBITMQ_MNESIA_DIR\r\n\r\n[ \"x\" = \"x$RABBITMQ_PID_FILE\" ] &amp;&amp; RABBITMQ_PID_FILE=${PID_FILE}\r\n[ \"x\" = \"x$RABBITMQ_PID_FILE\" ] &amp;&amp; RABBITMQ_PID_FILE=${RABBITMQ_MNESIA_DIR}.pid\r\nrmq_normalize_path_var RABBITMQ_PID_FILE\r\n\r\n[ \"x\" = \"x$RABBITMQ_BOOT_MODULE\" ] &amp;&amp; RABBITMQ_BOOT_MODULE=${BOOT_MODULE}\r\n\r\n[ \"x\" = \"x$RABBITMQ_PLUGINS_EXPAND_DIR\" ] &amp;&amp; RABBITMQ_PLUGINS_EXPAND_DIR=${PLUGINS_EXPAND_DIR}\r\n[ \"x\" = \"x$RABBITMQ_PLUGINS_EXPAND_DIR\" ] &amp;&amp; RABBITMQ_PLUGINS_EXPAND_DIR=${RABBITMQ_MNESIA_BASE}\/${RABBITMQ_NODENAME}-plugins-expand\r\nrmq_normalize_path_var RABBITMQ_PLUGINS_EXPAND_DIR\r\n\r\n[ \"x\" != \"x$RABBITMQ_ENABLED_PLUGINS_FILE\" ] &amp;&amp; RABBITMQ_ENABLED_PLUGINS_FILE_source=environment\r\n[ \"x\" = \"x$RABBITMQ_ENABLED_PLUGINS_FILE\" ] &amp;&amp; RABBITMQ_ENABLED_PLUGINS_FILE=${ENABLED_PLUGINS_FILE}\r\nrmq_normalize_path_var RABBITMQ_ENABLED_PLUGINS_FILE\r\n\r\n[ \"x\" != \"x$RABBITMQ_PLUGINS_DIR\" ] &amp;&amp; RABBITMQ_PLUGINS_DIR_source=environment\r\n[ \"x\" = \"x$RABBITMQ_PLUGINS_DIR\" ] &amp;&amp; RABBITMQ_PLUGINS_DIR=${PLUGINS_DIR}\r\nrmq_normalize_path_var RABBITMQ_PLUGINS_DIR\r\n\r\n## Log rotation\r\n[ \"x\" = \"x$RABBITMQ_LOGS\" ] &amp;&amp; RABBITMQ_LOGS=${LOGS}\r\n[ \"x\" = \"x$RABBITMQ_LOGS\" ] &amp;&amp; RABBITMQ_LOGS=\"${RABBITMQ_LOG_BASE}\/${RABBITMQ_NODENAME}.log\"\r\n[ \"x\" = \"x$RABBITMQ_SASL_LOGS\" ] &amp;&amp; RABBITMQ_SASL_LOGS=${SASL_LOGS}\r\n[ \"x\" = \"x$RABBITMQ_SASL_LOGS\" ] &amp;&amp; RABBITMQ_SASL_LOGS=\"${RABBITMQ_LOG_BASE}\/${RABBITMQ_NODENAME}-sasl.log\"\r\n\r\nrmq_normalize_path_var \\\r\n    RABBITMQ_LOGS \\\r\n    RABBITMQ_SASL_LOGS\r\n\r\n[ \"x\" = \"x$RABBITMQ_CTL_ERL_ARGS\" ] &amp;&amp; RABBITMQ_CTL_ERL_ARGS=${CTL_ERL_ARGS}\r\n\r\n# Check if files and directories non-related to Mnesia are configured\r\n# to be in $RABBITMQ_MNESIA_DIR. If this is the case, issue a warning\r\n# because it will prevent auto-clustering from working (the node will be\r\n# considered non-virgin).\r\n\r\nrmq_check_if_shared_with_mnesia \\\r\n    RABBITMQ_CONFIG_FILE \\\r\n    RABBITMQ_LOG_BASE \\\r\n    RABBITMQ_PID_FILE \\\r\n    RABBITMQ_PLUGINS_EXPAND_DIR \\\r\n    RABBITMQ_ENABLED_PLUGINS_FILE \\\r\n    RABBITMQ_PLUGINS_DIR \\\r\n    RABBITMQ_LOGS \\\r\n    RABBITMQ_SASL_LOGS\r\n\r\n##--- End of overridden &lt;var_name&gt; variables\r\n\r\n## Development-specific environment.\r\nif [ \"${RABBITMQ_DEV_ENV}\" ]; then\r\n    if [ \"$(basename \"$0\")\" = 'rabbitmq-plugins' -a \\( \\\r\n         \"$RABBITMQ_PLUGINS_DIR_source\" != 'environment' -o \\\r\n         \"$RABBITMQ_ENABLED_PLUGINS_FILE_source\" != 'environment' \\) ]; then\r\n        # We need to query the running node for the plugins directory\r\n        # and the \"enabled plugins\" file.\r\n        eval $( (${RABBITMQ_SCRIPTS_DIR}\/rabbitmqctl eval \\\r\n            '{ok, P} = application:get_env(rabbit, plugins_dir),\r\n             {ok, E} = application:get_env(rabbit, enabled_plugins_file),\r\n             io:format(\r\n               \"plugins_dir=\\\"~s\\\"~n\"\r\n               \"enabled_plugins_file=\\\"~s\\\"~n\", [P, E]).' \\\r\n            2&gt;\/dev\/null | head -n 2) || :)\r\n        if [ \"${plugins_dir}\" -a \\\r\n             \"$RABBITMQ_PLUGINS_DIR_source\" != 'environment' ]; then\r\n            RABBITMQ_PLUGINS_DIR=\"${plugins_dir}\"\r\n        fi\r\n        if [ \"${enabled_plugins_file}\" -a \\\r\n             \"$RABBITMQ_ENABLED_PLUGINS_FILE_source\" != 'environment' ]; then\r\n            RABBITMQ_ENABLED_PLUGINS_FILE=\"${enabled_plugins_file}\"\r\n        fi\r\n    fi\r\n\r\n    if [ -d \"${RABBITMQ_PLUGINS_DIR}\" ]; then\r\n        # RabbitMQ was started with \"make run-broker\" from its own\r\n        # source tree. Take rabbit_common from the plugins directory.\r\n        ERL_LIBS=\"${RABBITMQ_PLUGINS_DIR}:${ERL_LIBS}\"\r\n    else\r\n        # RabbitMQ runs from a testsuite or a plugin. The .ez files are\r\n        # not available under RabbitMQ source tree. We need to look at\r\n        # $DEPS_DIR and default locations.\r\n\r\n        if [ \"${DEPS_DIR}\" -a -d \"${DEPS_DIR}\/rabbit_common\/ebin\" ]; then\r\n            # $DEPS_DIR is set, and it contains rabbitmq-common, use\r\n            # this.\r\n            DEPS_DIR_norm=\"${DEPS_DIR}\"\r\n        elif [ -f \"${RABBITMQ_SCRIPTS_DIR}\/..\/..\/..\/erlang.mk\" -a \\\r\n               -d \"${RABBITMQ_SCRIPTS_DIR}\/..\/..\/rabbit_common\/ebin\" ]; then\r\n            # Look at default locations: \"deps\" subdirectory inside a\r\n            # plugin or the Umbrella.\r\n            DEPS_DIR_norm=\"${RABBITMQ_SCRIPTS_DIR}\/..\/..\"\r\n        fi\r\n        DEPS_DIR_norm=$(rmq_realpath \"${DEPS_DIR_norm}\")\r\n\r\n        ERL_LIBS=\"${DEPS_DIR_norm}:${ERL_LIBS}\"\r\n    fi\r\nelse\r\n    if [ -d \"${RABBITMQ_PLUGINS_DIR}\" ]; then\r\n        # RabbitMQ was started from its install directory. Take\r\n        # rabbit_common from the plugins directory.\r\n        ERL_LIBS=\"${RABBITMQ_PLUGINS_DIR}:${ERL_LIBS}\"\r\n    fi\r\nfi\r\n\r\nERL_LIBS=${ERL_LIBS%:}\r\nif [ \"$ERL_LIBS\" ]; then\r\n    export ERL_LIBS\r\nfi\r\n\r\nRABBITMQ_ENV_LOADED=1\r\n\r\n# Since we source this elsewhere, don't accidentally stop execution\r\ntrue\r\n\r\n\r\n##### \u8c03\u8bd5\u533a \u5f00\u59cb \u8fd0\u884c\u8bf7\u6ce8\u91ca\u4e0b\u9762\u5404\u884c#####\r\necho \"SCRIPT_PATH:\"${SCRIPT_PATH}\r\necho \"SCRIPT_DIR:\"${SCRIPT_DIR}\r\necho \"RABBITMQ_HOME:\"${RABBITMQ_HOME}\r\necho \"SERVER_ERL_ARGS:\"${SERVER_ERL_ARGS}\r\necho \"CONF_ENV_FILE:\"${CONF_ENV_FILE}\r\necho \"RABBITMQ_USE_LONGNAME:\"${RABBITMQ_USE_LONGNAME}\r\necho \"HOSTNAME:\"${HOSTNAME}\r\necho \"NODENAME:\"${NODENAME}\r\necho \"RABBITMQ_NODE_IP_ADDRESS:\"${RABBITMQ_NODE_IP_ADDRESS}\r\necho \"RABBITMQ_NODE_PORT:\"${RABBITMQ_NODE_PORT}\r\necho \"RABBITMQ_DIST_PORT:\"${RABBITMQ_DIST_PORT}\r\necho \"RABBITMQ_NODENAME:\"${RABBITMQ_NODENAME}\r\necho \"RABBITMQ_SERVER_ERL_ARGS:\"${RABBITMQ_SERVER_ERL_ARGS}\r\necho \"RABBITMQ_CONFIG_FILE:\"${RABBITMQ_CONFIG_FILE}\r\necho \"RABBITMQ_LOG_BASE:\"${RABBITMQ_LOG_BASE}\r\necho \"RABBITMQ_MNESIA_BASE:\"${RABBITMQ_MNESIA_BASE}\r\necho \"RABBITMQ_SERVER_START_ARGS:\"${RABBITMQ_SERVER_START_ARGS}\r\necho \"RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS:\"${RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS}\r\necho \"RABBITMQ_MNESIA_DIR:\"${RABBITMQ_MNESIA_DIR}\r\necho \"RABBITMQ_PID_FILE:\"${RABBITMQ_PID_FILE}\r\necho \"RABBITMQ_PLUGINS_EXPAND_DIR:\"${RABBITMQ_PLUGINS_EXPAND_DIR}\r\necho \"RABBITMQ_ENABLED_PLUGINS_FILE:\"${RABBITMQ_ENABLED_PLUGINS_FILE}\r\necho \"RABBITMQ_PLUGINS_DIR:\"${RABBITMQ_PLUGINS_DIR}\r\necho \"RABBITMQ_LOGS:\"${RABBITMQ_LOGS}\r\necho \"RABBITMQ_SASL_LOGS:\"${RABBITMQ_SASL_LOGS}\r\necho \"RABBITMQ_CTL_ERL_ARGS:\"${RABBITMQ_CTL_ERL_ARGS}\r\n##### \u8c03\u8bd5\u533a \u7ed3\u675f #####<\/pre>\n<p><strong>\u00a0\u6267\u884c .\/rabbitmq-env\u00a0<\/strong><\/p>\n<pre>SCRIPT_PATH:.\/rabbitmq-env\r\nSCRIPT_DIR:\r\nRABBITMQ_HOME:\/usr\/local\/rabbitmq\r\nSERVER_ERL_ARGS:+P 1048576 +t 5000000 +stbt db +zdbbl 32000\r\nCONF_ENV_FILE:\/usr\/local\/rabbitmq\/etc\/rabbitmq\/rabbitmq-env.conf\r\nRABBITMQ_USE_LONGNAME:\r\nHOSTNAME:localhost.localdomain\r\nNODENAME:rabbit@localhost\r\nRABBITMQ_NODE_IP_ADDRESS:\r\nRABBITMQ_NODE_PORT:\r\nRABBITMQ_DIST_PORT:25672\r\nRABBITMQ_NODENAME:rabbit@localhost\r\nRABBITMQ_SERVER_ERL_ARGS:+P 1048576 +t 5000000 +stbt db +zdbbl 32000\r\nRABBITMQ_CONFIG_FILE:\/usr\/local\/rabbitmq\/etc\/rabbitmq.conf\r\nRABBITMQ_LOG_BASE:\/usr\/local\/rabbitmq\/var\/log\/rabbitmq\r\nRABBITMQ_MNESIA_BASE:\/usr\/local\/rabbitmq\/var\/lib\/rabbitmq\/mnesia\r\nRABBITMQ_SERVER_START_ARGS:\r\nRABBITMQ_SERVER_ADDITIONAL_ERL_ARGS:\r\nRABBITMQ_MNESIA_DIR:\/usr\/local\/rabbitmq\/var\/lib\/rabbitmq\/mnesia\/rabbit@localhost\r\nRABBITMQ_PID_FILE:\/usr\/local\/rabbitmq\/var\/lib\/rabbitmq\/mnesia\/rabbit@localhost.pid\r\nRABBITMQ_PLUGINS_EXPAND_DIR:\/usr\/local\/rabbitmq\/var\/lib\/rabbitmq\/mnesia\/rabbit@localhost-plugins-expand\r\nRABBITMQ_ENABLED_PLUGINS_FILE:\/usr\/local\/rabbitmq\/etc\/rabbitmq\/enabled_plugins\r\nRABBITMQ_PLUGINS_DIR:\/usr\/local\/rabbitmq\/plugins\r\nRABBITMQ_LOGS:\/usr\/local\/rabbitmq\/var\/log\/rabbitmq\/rabbit@localhost.log\r\nRABBITMQ_SASL_LOGS:\/usr\/local\/rabbitmq\/var\/log\/rabbitmq\/rabbit@localhost-sasl.log\r\nRABBITMQ_CTL_ERL_ARGS:<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4ece\u6587\u7ae0\u4e2d\u53ef\u4ee5\u770b\u5230\uff0c5\u4e2ashell\u811a\u672c\u4e2d\u7684rabbitmqctl\u3001rabbitmq-server\u3001rabbitmq-plugins\u90fdinclude\u4e86rabbitmq-env\u811a\u672c\uff0c\u800crabbitmq-env\u811a\u672cinclude\u4e86rabbitmq-defaults\u3002rabbitmq-defaults\u7684\u9ed8\u8ba4\u8bbe\u7f6e\uff0c\u800c\u4e14rabbitmq-env\u662frabbmitmq\u7684\u771f\u6b63\u914d\u7f6eshell\uff08\u5e76\u975e\u914d\u7f6e\u6587\u4ef6\uff09\u3002\u7ed3\u5408\u8be5\u6587\u7ae0\uff0c\u6ce8\u91ca\u4e86rabbit 3.6.6\u76845\u4e2a\u6587\u4ef6\u3002 &nbsp; 1\u3001rabbitmq-defaults #!\/bin\/sh -e #\u53c2\u6570-e\u8868\u793a\u4e00\u65e6\u51fa\u9519\uff0c\u5c31\u9000\u51fa\u5f53\u524d\u7684shell # RABBITMQ_HOME\u53d8\u91cf\u5728rabbitmq-env\u811a\u672c\u4e2d\u5b9a\u4e49\u4e86,rabbitmq-env\u811a\u672cinclude\u4e86\u8be5\u6587\u4ef6\u3002 SYS_PREFIX=${RABBITMQ_HOME} ### next line will be updated when generating a standalone release ERL_DIR= CLEAN_BOOT_FILE=start_clean SASL_BOOT_FILE=start_sasl if [ -f &#8220;${RABBITMQ_HOME}\/erlang.mk&#8221; ]; then # RabbitMQ is executed from its source directory. The plugins # directory and ERL_LIBS are tuned based on this. RABBITMQ_DEV_ENV=1 fi #&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; # \u5b9a\u4e49\u4e86\u76f8\u5173\u6587\u4ef6\u7684\u8def\u5f84 # [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-27345","post","type-post","status-publish","format-standard","hentry","category-docker"],"_links":{"self":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/27345","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/comments?post=27345"}],"version-history":[{"count":1,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/27345\/revisions"}],"predecessor-version":[{"id":27353,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/posts\/27345\/revisions\/27353"}],"wp:attachment":[{"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/media?parent=27345"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/categories?post=27345"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fwq.ai\/blog\/wp-json\/wp\/v2\/tags?post=27345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}