Unix Shell Script
功能 > Unix > Unix Shell Script
功能概述
從 5.4.0 版本開始,ActiveMQ Classic 配備了增強的 shell 腳本,用於在 Unix 環境中啟動、停止和管理代理程式。如需基本 activemq 和 activemq-admin 腳本的功能,請參閱ActiveMQ Classic 命令列工具參考。
這個 activemq
腳本將這兩個腳本合併為一個,並新增了一些新功能。除了常規的 activemq
和 activemq-admin
腳本外,它還新增了以下功能
- start - 在背景啟動代理程式。它將處理程序 ID 保存在
${ACTIVEMQ_DATA_DIR}/activemq.pid
中,以供日後參考。它接受與原始activemq
腳本相同的命令列參數,因此您可以執行如下操作bin/activemq start xbean:conf/activemq-stomp.xml
-
console - 在前景啟動代理程式。它基本上取代了舊的
activemq
腳本
(您可以中斷) -
stop - 停止在背景執行的代理程式。它會先嘗試使用 shutdown 工作來停止代理程式。如果該工作在 30 秒(可設定)內沒有返回,它將終止該進程。
-
restart - 停止正在執行的實例(如果有的話),並啟動新的實例
-
status - 檢查 activemq 進程是否正在執行(結束代碼:1 = 代理程式已關閉,0 = 代理程式已啟動)
- create - 建立一個 ACTIVEMQ_BASE 目錄,將代理程式實例與其二進位檔案分開,也就是說,它會在命令列指定的目錄中建立 ActiveMQ Classic 設定檔的副本,並指向二進位檔案。您可以使用新建立的實例中的
/bin
腳本啟動代理程式。bin/activemq create /path/to/brokers/mybroker
- browse - 顯示指定目的地中的選定訊息
bin/activemq browse FOO.BAR # use broker connection from configuration bin/activemq browse --amqurl tcp://127.0.0.1:61616 FOO.BAR
-
bstat - 執行預定義的查詢,顯示有關指定代理程式的有用統計資料
-
dstat - 執行預定義的查詢,顯示有關指定目的地類型的有用表格統計資料
- decrypt - 解密給定的文字
bin/activemq decrypt --input 'BkiT42A0CZfL1SanJIgxvQ==' --password asdasdasdasd
- encrypt - 加密給定的文字
bin/activemq encrypt --password TESTPASSWORD --input FOOBAR
- export - 將停止的代理程式資料檔案匯出到封存檔案,以便匯入到其他代理程式(例如 ActiveMQ Artemis)
$ bin/activemq export --file=archivefile
-
list - 列出指定 JMX 環境中所有可用的代理程式
- purge - 刪除與訊息選擇器相符的選定目的地的訊息
bin/activemq purge FOO.BAR # use jmx access data from configuration bin/activemq purge --jmxurl service:jmx:rmi:///jndi/rmi://127.0.0.1:11098/jmxrmi --jmxuser controlRole --jmxpassword abcd1234 FOO.BAR
- query - 顯示選定代理程式元件的屬性和統計資料
bin/activemq query # use jmx access data from configuration bin/activemq query --jmxurl service:jmx:rmi:///jndi/rmi://127.0.0.1:11098/jmxrmi --jmxuser controlRole --jmxpassword abcd1234
設定初始化腳本
為了讓 ActiveMQ Classic 伺服器正常運作,必須設定一些基本的系統變數。這些變數定義了代理程式將擁有的記憶體量、SSL、記錄、JAAS 選項等等。
5.11.0 及更高版本
初始化腳本的設定檔
從 5.11.0 版本開始,所有預設設定變數都已移至新的 env
腳本檔案,以便可以輕鬆地檢查和設定它們。
還有其他設定位置
腳本會依下列順序掃描以下位置的設定
- /etc/default/activemq
- $HOME/.activemqrc
- $INSTALLDIR/apache-activemq-
/bin/env
只會讀取第一個存在的檔案,其他檔案都會被忽略。
未定義的值會以自動方式探索。
5.11.0 之前的版本
這些參數可在 activemq
腳本本身中設定。
您可以使用 setup
命令建立額外的系統範圍預設檔案來設定代理程式。
(如果需要,請修改此檔案中的設定 - 由於此版本中意外套用了錯誤修復,預設條目看起來有點亂)
./activemq setup /etc/default/activemq
腳本的設定可以放在 /etc/default/activemq
或 $HOME/.activemqrc
中。請注意,這是腳本的設定,而不是用於設定 ActiveMQ Classic 的設定。
若要使用額外設定在同一個作業系統上執行多個實例,請將腳本重新命名或符號連結為符合 activemq-instance-<INSTANCENAME>
的名稱。這會將設定位置變更為 /etc/default/activemq-instance-<INSTANCENAME>
和 $HOME/.activemqrc-instance-<INSTANCENAME>
。/etc 中的設定檔具有較高的優先順序。
以 Unix 精靈執行 activemq
- 以「root」身分安裝 activemq 代理程式,使其以「activemq」身分執行
useradd -m activemq -d /srv/activemq cd /srv/activemq tar zxvf apache-activemq-<version>-bin.tar.gz$ ln -snf apache-activemq-<version> current chown -R activemq:users apache-activemq-<version>
- 建立全域預設設定並編輯設定
cp apache-activemq-<version>/bin/env /etc/default/activemq sed -i '~s/^ACTIVEMQ\_USER=""/ACTIVEMQ\_USER="activemq"/' /etc/default/activemq vim /etc/default/activemq chmod 644 /etc/default/activemq
- 將 Java 堆積設定為適合您系統環境和使用量的容量
- 考慮將「data」、「tmp」和「conf」資料夾移出安裝路徑
- 安裝初始化腳本
ln -snf /srv/activemq/current/bin/activemq /etc/init.d/activemq
- 在系統啟動時啟用初始化腳本
(待辦事項:未完成)# RHEL chkconfig --add activemq chkconfig activemq on # Debian/Ubuntu update-rc.d defaults activemq
執行多個實例
若要使用額外設定在同一個作業系統上執行多個實例,請將腳本重新命名或符號連結為符合 activemq-instance-<INSTANCENAME>
的名稱。
這會將設定位置變更為 /etc/default/activemq-instance-<INSTANCENAME>
和 $HOME/.activemqrc-instance-<INSTANCENAME>
。/etc 中的設定檔具有較高的優先順序。
適用於「以 Unix 精靈執行 activemq」程序的範例程序
範例**
mkdir /srv/activemq/instance1
cp -av /srv/activemq/current/conf/ /srv/activemq/instance1/
mkdir /srv/activemq/instance1/{data,tmp}
ln -snf /srv/activemq/current/bin/activemq /etc/init.d/activemq-instance-test1
cp /srv/activemq/install/bin/env /etc/default/activemq-instance-instance-test1
修改 /etc/default/activemq-instance-instance-test1 中的設定變數
ACTIVEMQ_HOME="/srv/activemq/current/"
ACTIVEMQ_CONF="/srv/activemq/instance1/conf"
ACTIVEMQ_DATA="/srv/activemq/instance1/data"
ACTIVEMQ_TMP="/srv/activemq/instance1/tmp"
控制實例
/etc/init.d/activemq-instance1 start|stop|restart|console|....
提示
如果您使用多個實例,則只能使用(「update-rc.d」或「chkconfig」)將主要實例新增至自動系統啟動,因為 LSB 標頭「Provides」必須是唯一的。
測試和回報 Unix 平台互通性問題
activemq 儲存庫提供了一個測試套件,用於驗證 Unix shell 腳本在不同平台上的正確運作。
- 下載測試套件
或者,複製原始程式碼儲存庫(來源)並選擇檔案assembly/src/test/scripts/init-script-testsuite
cd /tmp wget -c "https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob_plain;f=assembly/src/test/scripts/init-script-testsuite;hb=HEAD"
- 執行測試套件
cd <Installation Dir of the ActiveMQ Classic Script> ./activemq stop /tmp/init-script-testsuite 2>&1| tee /tmp/test-suite.log
- 可以透過下列程序提供詳細的偵錯資訊
export PS4=' ${BASH_SOURCE}:${LINENO}(${FUNCNAME\[0\]}) ' bash -x ./activemq <argument> 2>&1 |tee /tmp/detailed-debugging.log
- 建立票證並將記錄檔附加到票證。