AnyChat技术支持论坛

标题: 关于linux服务器下让业务服务器在后台运行的解决方案 [打印本页]

作者: 佰锐科技-李永星    时间: 2015-8-4 17:34
标题: 关于linux服务器下让业务服务器在后台运行的解决方案
本帖最后由 佰锐科技-李永星 于 2015-8-13 16:50 编辑

在linux终端正常运行java程序,当关闭终端窗口时,连带这java程序也会终止。如何让java程序在后台运行,可以用:
export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH && java -Dfile.encoding=UTF-8 -jar ./anychatcallcenterserver.jar >> /dev/null &

说明:
1、export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH:这种做法,只是临时设置变量 LD_LIBRARY_PATH ,下次开机,一切设置将不复存在。
2、-Dfile.encoding=UTF-8:设置系统属性 file.encoding 为 UTF-8,简单说就是默认字符集是在 java 虚拟机启动时决定的。
3、>> /dev/null :表示空设备,这里就是把日志记录到空设备里,就是不记录日志。
4、& :&后台运行。

配置步骤
1、启动linux核心服务器,参考:AnyChat使用攻略之独立部署Linux视频服务器

2、打开一个终端,找到SDK目录下bin\serversdk\,在命令方式运行:export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH && java -Dfile.encoding=UTF-8 -jar ./anychatcallcenterserver.jar >> /dev/null &

3、关闭终端,打开一个新终端,查询anychat运行的程序:ps -ef | grep anychat,此时可以看到关闭终端后callcenterserver已经在后台运行:

4、也可以把以上命令保存成一个.sh批处理文件,下次每次运行批处理就可以了。
-------------------------------------------------------------------------------------------------
5、如果需要开机就启动服务,现以RedHat6.4 64位操作系统为例,步骤如下
(1)、找到/etc/rc.local文件,用记事件打开此文件,如图(此处是设置开机启动核心服务器)所示进行编辑:

(2)、您也可以复制:export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH && java -Dfile.encoding=UTF-8 -jar ./anychatcallcenterserver.jar >> /dev/null & 到rc.local文件中,但要注意的是 ./这个目录路径需要配置成绝对路径。
6、Ubuntu 如何配置开机启动,请参考帖子AnyChat服务器在Linux平台上开机自启动配置流程


作者: CoCoChen    时间: 2015-8-13 15:40
您好 ,我用你提供的方法设置后台运行时,提示: Exception in thread "main" java.lang.UnsatisfiedLinkError: no anychatserver4java in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
        at java.lang.Runtime.loadLibrary0(Runtime.java:823)
        at java.lang.System.loadLibrary(System.java:1028)
        at com.bairuitech.anychat.AnyChatServerSDK.<clinit>(AnyChatServerSDK.java:231)
        at com.bairuitech.server.CallCenterServer.main(CallCenterServer.java:27)
然后就一直卡在最后一行不动了,能帮忙看下嘛?
作者: 陈文仲    时间: 2015-8-13 16:00
CoCoChen 发表于 2015-8-13 15:40
您好 ,我用你提供的方法设置后台运行时,提示: Exception in thread "main" java.lang.UnsatisfiedLinkEr ...

您好,提示的错误是没有找到 anychatserver4java 这个库文件,对应的目录下面有这个文件吗?
作者: CoCoChen    时间: 2015-8-13 16:08
就是没有发现anychatserver4java这个文件,倒是有libanychatserver4java.so  这个文件
作者: 陈文仲    时间: 2015-8-13 16:14
CoCoChen 发表于 2015-8-13 16:08
就是没有发现anychatserver4java这个文件,倒是有libanychatserver4java.so  这个文件

试一下直接修改runcallcenterserver.sh脚本,然后直接运行 ./runcallcenterserver.sh
作者: CoCoChen    时间: 2015-8-13 16:20
你的意思是将runcallcenterserver.sh脚本的内容由expor tLD_LIBRARY_PATH=./:$LD_LIBRARY_PATH && java -Dfile.encoding=UTF-8 -jar ./anychatcallcenterserver.jar改成
expor tLD_LIBRARY_PATH=./:$LD_LIBRARY_PATH && java -Dfile.encoding=UTF-8 -jar ./anychatcallcenterserver.jar  >> /dev/null &这个吗?但是我直接运行脚本是没有什么问题的
作者: CoCoChen    时间: 2015-8-13 16:21
你的意思是将runcallcenterserver.sh脚本的内容由expor tLD_LIBRARY_PATH=./:LD_LIBRARY_PATH && java -Dfile.encoding=UTF-8 -jar ./anychatcallcenterserver.jar改成
expor tLD_LIBRARY_PATH=./:LD_LIBRARY_PATH && java -Dfile.encoding=UTF-8 -jar ./anychatcallcenterserver.jar  >> /dev/null &这个吗?但是我直接运行没有修改之前的脚本是没有什么问题的,
作者: CoCoChen    时间: 2015-8-13 16:21
我去  怎么变成表情了。。。。。。。 表情处是 :符号
作者: 陈文仲    时间: 2015-8-13 16:21
CoCoChen 发表于 2015-8-13 16:20
你的意思是将runcallcenterserver.sh脚本的内容由expor tLD_LIBRARY_PATH=./LD_LIBRARY_PATH && java -Df ...

是的,修改后才是后台运行。
作者: CoCoChen    时间: 2015-8-13 16:25
.......不知道怎么回事,我直接将脚本里面的内容复制出来 再在起后面手动加上>> /dev/null & 就可以了,已经好了,谢谢!
作者: CoCoChen    时间: 2015-8-13 16:33
我晓得了  难道libanychatserver4java.so就是那个anychatserver4java 库文件  我就说怎么好熟悉的感觉,一直没有反应过来。。。。,不知道为什么直接复制网页上的命令去执行就不得行
作者: 佰锐科技-李永星    时间: 2015-8-13 16:39
CoCoChen 发表于 2015-8-13 16:25
.......不知道怎么回事,我直接将脚本里面的内容复制出来 再在起后面手动加上>> /dev/null & 就可以了,已 ...

是这个:(:)的原因,原来在编辑的时候用半角会显示笑脸,后来用全角替换了,所以你在输入的个命令时最好手动输入,不要拷贝的方式
作者: CoCoChen    时间: 2015-8-13 16:42
应该是  主要是以前复制惯了 都没出问题过 被麻痹了




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3