linux下jar包的生存與開機自動啟動


前言
作為一名Android開發,有的時候也是要做做其他工作的,前段時間寫了一個很簡單的java消息轉發程序,因為和三方廠商合作,對方只提供了java的sdk,然而我們這邊都是清一色的C#后台開發人員,所以我就起到橋梁的作用了,總結一下簡單的工作,以后回望或許有所感想。

程序方面
怎么提供消息給C#程序員呢?那當然是RabbitMQ,這個相對簡單,也貼一下,萬一以后會用到MQ呢?

        // 設置配置信息
        if(factory == null){
               factory = new ConnectionFactory();  
               factory.setHost(Config.host);  
               factory.setPort(Config.port);
               factory.setVirtualHost(Config.virtualHost);
               factory.setUsername(Config.username);
               factory.setPassword(Config.password);
        }
        // 設置鏈接信息
        if(connection == null || (connection != null && !connection.isOpen())){
             connection = factory.newConnection();
             channel = connection.createChannel();  
             channel.exchangeDeclare(Config.EXCHANGE_NAME, "direct", durable);
             channel.confirmSelect();
        }   
        // 設置頻道信息
        if(channel == null || (channel != null && !channel.isOpen())){ 
            channel = connection.createChannel();
            channel.exchangeDeclare(Config.EXCHANGE_NAME, "direct", durable);
            channel.confirmSelect();
        }

// 發送消息
                channel.basicPublish(Config.EXCHANGE_NAME, Config.ezviz_key, MessageProperties.PERSISTENT_BASIC, 
                        msg.getBytes());

當然代碼里做了適當封裝,但MQ使用就是這樣了,當然這只是簡單的MQ使用,根據場景使用可能會使用別的類型,比如一個生產者多個消費者什么的。這方面推薦一個地址:https://www.cnblogs.com/luxiaoxun/p/3918054.html
我覺得他講得很適合初學者。

開發環境運行
因為這個消息轉發就是接入SDK,然后對消息進行處理,處理完畢之后按着C#程序員給我的格式,對處理完畢的消息進行類型轉換並json一下,然后發送到MQ隊列,很簡單,所以就打算用jar包的形式做后台跑在linux服務器上,那么我們很簡單的方法可以實現這個問題:

nohup /usr/java/jdk1.8.0_112/bin/java -jar /root/java/MessageForwarding.jar  >/root/java/message.log &

通過nohup指令使程序不依賴於控制台,這樣運行完畢之后可以ctrl+c,程序還繼續運行,上面的日志講jar包里面的打印語句都輸出到了message.log里面,這樣在程序里面的日志都能夠查看,當然看看需不需要寫一下定期清理,視情況而定了。這樣滿足了基本的功能需求,但是linux重啟自后怎么辦?其實這一塊說起來簡單,過程可能有點彎。
方法一:
通過java wrapper做這一塊工作,詳細的過程可以搜一下java wrapper,這方面的教程很多,這里貼一個官方網站吧:
https://wrapper.tanukisoftware.com

方法二:
通過我了解的linux的開機啟動文件,我想通過shell腳本完成這個事,我先把jar包放到/root/java/MessageForwarding.jar這里,然后編輯一個簡單的shell腳本(MessageForwarding.sh):

# !/bin/bash
# program
# test java open

export JAVA_HOME=/usr/java/jdk1.8.0_112
export JRE=/usr/java/jdk1.8.0_112/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE/lib:.
export PATH=$PATH:$JAVA_HOME/bin/:$JRE/bin
nohup java -jar /root/java/MessageForwarding.jar >/root/java/message.log &

當然很簡單,這就是執行jar包,運行一下,執行這個sh文件,沒有問題:可以通過:
ps -ef|grep java查詢一下進程。

開機啟動就需要操作/etc/rc.local文件,有可能linux系統不同文件有些區別,我之前看別的博客就沒成功,只要在這里執行這個文件就OK了。

這里寫圖片描述

保存退出,開機重啟,查詢一下進程,程序已經在進程中了,而且消息也在MQ隊列了。

最后

這個過程很簡單,記錄一下,不然以后連簡單的東西都忘記了,可能有錯誤的地方,也或許這樣做不太合適,希望批評指正:redzkh@gmail.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM