微信订阅号二维码

本页内容二维码:

本栏目热门内容
  • Acrobat虚拟PDF打印机执行...
  • LINKSYS交换机登录WEB界面...
  • 又一次RAID 5阵列故障记录...
  • 解决VMware vSphere ESXi ...
  • 修改CentOS发行信息以绕过...
  • Windows Server 2008 重命...
  • 解决虚拟化运行的 Windows...
  • Intel Nehalem CPU Errata...
  • 某卢瑟装机搞得一踏糊涂,...
  • 解决MySQL Cluster 备份总...
  • MegaCli安装及使用杂记
  • 解决WSUS显示客户端不全的...
  • 解决 VMWare vSphere 6 客...
  • 解决Windows Server 2008 ...
  • 本站服务器RAID 5阵列双硬...
  • 网站数据库从MySQL 5.0升...
  • 解决MariaDB使用Percona X...
  • 修改arpwatch使通知邮件主...
  • Linux 下的分区调整工具GP...
  • DELL PowerEdge 820 报CPU...
  • 程序员漫画:如何用8种不...
  • 解决很好用的多合一即时通...
  • 使用 GParted 进行虚拟机...
  • 解决Samba WINS服务的错误...
  • 解决Squid代理HTTP时在浏...
  • 用Delphi编写使用到ADO的D...
  • 网站简单改版
  • 索尼系列手提电脑备份失败...
  • Dell R900服务器 BMC firm...
  • 更多...

    安装MegaRAID存储管理器17.05.06版的好一番折腾(Linux篇)

    作者:Sender  来源:WaveCN.com  发布日期:2023-02-01  最后修改日期:2023-02-01

    article banner

    其实会有人问,为何要升级?

    17.05.06版本是被定义为“Critical”级别的升级,在于移除了log4j这个组件。如果有关注网络安全,都应该知道log4j的“核弹级”漏洞的事情。所以这个版本是必须要升级的。

    继上一篇《安装MegaRAID存储管理器17.05.06版的一番折腾(Windows篇)》之后,接着是在Linux环境下的折腾。如果不太了解情况的读者,可以先看看上一篇,以及更早的一篇入门级介绍:《安装 MegaRAID 存储管理器集中监控 DAS 存储状态》。

    MSM这个版本在Linux环境下卸载安装的问题都比Windows版本复杂。折腾下来最大的感觉是MSM的开发人员有那么一种“反正你都用上Linux了,有问题你自己一定有能力搞定,所以我们就随便一点”的态度。

    就以MSM的RPM包内容为例,把MSM的后台服务在运行时产生的DEBUG日志文件带上内容打包进去了,时间戳还是2014年;还有各种文件属性错误标记为可执行......真是无力吐槽。

    所以这篇东西真的是折腾了我好久才弄出来。

    那么下面介绍在 Linux 服务器环境的安装、升级和卸载,全文以CentOS 7为例。

    1、从卸载之前的版本开始

    如果要升级MSM,需要先卸载旧版本(17.05.00或更早版本)。按README,安装脚本能自动检查和卸载旧版本......实际很多问题。

    那么先手工卸载?按README,用root用户运行卸载脚本uninstaller.sh即可,它会自动完成卸载......实际也是有问题。

    问题后面再介绍。真正有效的卸载步骤和操作过程如下:

    (1)检查是否有安装snmpd服务,如果没有,先补充安装;
    (2)手工停止正在运行的vivaldiframeworkd服务;
    (3)手工运行shutdown脚本,退出依然(!)在后台运行的java进程,注意要cd进入该目录后以sh带脚本文件名参数方式才能正常运行;
    (4)最后运行uninstaller.sh,完成安装。

    yum install net-snmp net-snmp-utils
    systemctl enable snmpd
    systemctl stop vivaldiframeworkd
    cd /usr/local/MegaRAID\\ Storage\\ Manager/Framework/
    sh shutdown.sh
    cd ..
    ./uninstaller.sh
    

    解释:

    (1)MSM组成部分中的sas_snmp-17.05-0003 和 sas_ir_snmp-17.05-0003两个RPM包的卸载脚本设置了从snmpd服务中取消登记的过程,如果服务器上没有安装snmpd服务,卸载过程会提示%preun脚本执行失败,sas相关两个软件包删除失败,卸载中止:

    Uninstalling sas_ir_snmp-16.05-0200
    Unregistering Service
    Failed to start snmpd.service: Unit not found.
    错误:%preun(sas_ir_snmp-16.05-0200.x86_64) 脚本执行失败,退出状态码为 5
    错误:sas_ir_snmp-16.05-0200.x86_64: 删除 已失败
    Uninstalling sas_snmp-16.05-0200
    Unregistering Service
    Failed to start snmpd.service: Unit not found.
    错误:%preun(sas_snmp-16.05-0200.x86_64) 脚本执行失败,退出状态码为 5
    错误:sas_snmp-16.05-0200.x86_64: 删除 已失败
    

    绝对不能使用rpm的--noscripts参数强制忽略脚本而卸载sas相关软件包。因为卸载脚本执行的操作不仅是取消模块登记,还包括了各种配置文件和启动服务的清理,忽略脚本就会导致该清理的没有清理。

    (2)如果不先行完全停止后台服务,有可能会提示有活动的客户端连接(实际并没有)而不能卸载,出错信息如下:

    Uninstalling MegaRAID_Storage_Manager-16.05.04-00
    Framework running
    Inside loadVivaldikeyProp
    localePath for res file::zh
    frameworkWWN :192.168.49.51:3071:0
    frameworkWWN :192.168.49.51:3071:0
    System time before socket connection:Fri Jan 13 15:36:02 CST 2023
    SSL_STRONG_ENCRYPTION  File Name is ::./StrongSSLEncryption.ini
    iniFlag isDISABLE
    frameworkWWN :192.168.49.51:3071:0
    LOCAL Registered client :: 127.0.0.1:0:8
    LOCAL Registered client :: 127.0.0.1:49260:1
    REMOTE Registered client :: 192.168.140.1:49276:4
    LOCAL Registered client :: 192.168.49.51:3071:0
    REMOTE Registered client :: 192.168.140.1:49263:3
    LOCAL Registered client :: 127.0.0.1:49261:2
    frameworkWWN :192.168.49.51:3071:0
    ActiveClientList created
    The machines with the following IP(s) has active Client connected to this server.
    192.168.140.1
    Disconnect all the connections or shutdown Framework and retry.
    错误:%preun(MegaRAID_Storage_Manager-16.05.04-00.noarch) 脚本执行失败,退出状态码为 1
    错误:MegaRAID_Storage_Manager-16.05.04-00.noarch: 删除 已失败
    

    见上文提示“The machines with the following IP(s) has active Client connected to this server.”

    另外,由于systemctl stop操作并未能有效调用shutdown.sh去停止后台服务,只是更改了服务的状态而已。所以要手工执行shutdown.sh脚本。

    2、然后是安装过程

    假设所有的安装材料均已经上传到服务器并放置在/root/msm目录内,如下:

    [root@server ~]# ll msm
    -rw-r--r--. 1 root root 47089267 2月  24 2022 17.05.06.00_MSM_Linux-x64.zip
    -rw-r--r--. 1 root root     3158 1月  31 16:32 fixed_msm_scripts.tar.gz
    -rw-r--r--. 1 root root    78030 1月  11 10:45 javax.activation.jar
    -rw-r--r--. 1 root root 41349408 1月  12 21:46 OpenJDK8U-jre_x64_linux_hotspot_8u352b08.tar.gz
    

    其中 fixed_msm_scripts.tar.gz 是本人对MSM的脚本修改调整后的打包文件,可以通过以下百度网盘链接下载:

    baidu pan share

     

    链接:https://pan.baidu.com/s/1fNHo_eQ7sFw6L4VXiS-2fA?pwd=ykdg

    提取码:ykdg

    整个安装过程操作汇总如下:

    # 确保已经安装snmpd,并启用
    yum install net-snmp net-snmp-utils
    systemctl enable snmpd
    # 进入安装材料目录,解压安装包,其中MSM要解压两次
    cd /root/msm
    tar zxf fixed_msm_scripts.tar.gz
    tar zxf OpenJDK8U-jre_x64_linux_hotspot_8u352b08.tar.gz
    unzip 17.05.06.00_MSM_Linux-x64.zip
    tar zxf MSM_linux_x64_installer-17.05.06-00.tar.gz
    # javax.activation.jar放入jre的bin目录
    mv javax.activation.jar jdk8u352-b08-jre/bin
    # 覆盖有问题的检查删除旧版本的脚本
    \\cp fixed_msm_scripts/deleteOldVersion.sh ./disk
    # 直接完整安装
    cd disk
    ./RunRPM.sh
    # 检查是否后台服务已经在运行,若是,停止服务
    ps aux | grep FrameworkManager 
    systemctl stop vivaldiframeworkd
    # 再检查一次,因为服务基本上是没有停。若未停,手工执行脚本停掉服务
    ps aux | grep FrameworkManager
    cd /usr/local/MegaRAID\\ Storage\\ Manager/Framework/
    ./shutdown.sh
    # 配置环境,创建符号链接避免目录名中的空格干扰
    ln -s /usr/local/MegaRAID\\ Storage\\ Manager/ /usr/local/msm
    # 私有化转入JRE并缩短目录名
    mv /root/msm/jdk8u352-b08-jre/ /usr/local/msm/jre
    chcon -u system_u -t usr_t -R /usr/local/msm/jre
    # 替换脚本,实现使用私有JRE运行
    cd /root/msm/fixed_msm_scripts/
    \\cp msm_profile /etc/rc.d/init.d
    \\cp vivaldiframeworkd /etc/rc.d/init.d
    \\cp startup.sh /usr/local/msm/Framework/
    \\cp shutdown.sh /usr/local/msm/Framework/
    \\cp startupui.sh /usr/local/msm
    # 重新加载守护进程服务信息,启动服务和检查服务状态
    systemctl daemon-reload
    systemctl start vivaldiframeworkd
    systemctl status vivaldiframeworkd
    ps aux | grep FrameworkManager
    # 启动客户端,尝试发现、登录和操作
    cd /usr/local/msm
    ./startupui.sh
    # 完成后,删除/etc/profile文件中调用msm_profile的行。
    sed -i '/msm_profile/d' /etc/profile
    

    以上过程详细解释如下:

    (1)如果未安装启用snmpd服务,则安装sas_snmp和sas_ir_snmp两个RPM包时都会报告如下的执行安装后脚本出错:

    Installing sas_snmp-17.05-0003
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:sas_snmp-17.05-0003              ################################# [100%]
    /etc/snmp/snmpd.conf file not found. Please check the filepath
    Exiting .....
    warning: %post(sas_snmp-17.05-0003.x86_64) scriptlet failed, exit status 1
    Installing sas_ir_snmp-17.05-0003
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:sas_ir_snmp-17.05-0003           ################################# [100%]
    /etc/snmp/snmpd.conf file not found. Please check the filepath
    Exiting .....
    warning: %post(sas_ir_snmp-17.05-0003.x86_64) scriptlet failed, exit status 1
    

    (2)解压OpenJDK 8 JRE后要放入javax.activation.jar到其内的 bin 目录。

    mv javax.activation.jar jdk8u352-b08-jre/bin
    

    (3)修正 deleteOldVersion.sh 检查和删除旧版本的脚本的一个错误:

    ./deleteOldVersion.sh: 第 20 行:[: =: 期待一元表达式
    

    原因是upgradesetuptype变量不一定有被赋值,导致该行判断出错。修正方法是把该行的判断条件从单中括号改为用双中括号括住,如下图的第21行:

    deleteOldVersion.sh code fix

    (4)为了简化安装过程,直接运行安装包解压目录下的RunRPM.sh而不执行install.csh。相当于完整安装,所有选项都是按默认。

    这种方式不需要为安装脚本 installer.csh 在系统上安装已经被淘汰的c shell,从奥卡姆剃刀原理出发,这种方式更好。

    吐槽:实际整个MSM软件包就只有这一个脚本需要c shell,它就应该基于bash重写!而且它还有语法嵌套错误!问答过程不直观还容易误导!

    至于安装过程的那几个选择其实已经没必要去考虑。

    选择完整安装,就算服务器上没有启用GUI环境,也不会有问题,只是即时告警功能不生效,本机客户端用不了。只要MSM后台服务能正常运行,服务器的远程管理就能实现。

    其它选项:加密证书位数、告警事件范围,都可以通过修改配置文件来调节。

    (5)如果操作系统环境中已经存在可用的Java环境,在安装后MSM的后台服务就有可能已经启动运行。可以通过ps进行检查,例如:

    [root@server ~]# ps a | grep FrameworkManager | grep -v grep
      7044 pts/0    Sl     0:03 /bin/java -classpath /bin/javax.activation.jar:rt.jar:jsse.jar:jce.jar:javax.mail.jar:Framework.jar -Djava.library.path=. Framework.FrameworkManager
    

    如上结果即服务正在运行。在后续配置前应先杀掉该java进程。由于进程停止的脚本有BUG,简单的:

    systemctl stop vivaldiframeword
    

    实际并没有让java进程终止。所以要KILL或者像笔者这样手工运行shutdown.sh:

    cd /usr/local/MegaRAID\\ Storage\\ Manager/Framework/
    ./shutdown.sh
    

    去停止服务进程。

    (6)配置私有JRE运行环境,重点在于MSM的安装目录名有空格,会导致MSM服务启动脚本中定义的 LD_PRELOAD 环境变量在被ld.so处理时出错:

    ERROR: ld.so: object 'amd64/libjsig.so' from LD_PRELOAD cannot be preloaded: ignored.
    

    MSM服务就会启动失败。原因是ld.so对LD_PRELOAD的处理过程不支持对路径中的空白字符进行任何转义操作。关于ld.so,可参考:

    https://www.man7.org/linux/man-pages/man8/ld.so.8.html

    解决办法是通过符号链接绕过这个问题。

    因此,在/usr/local下创建名为msm的符号链接到 /usr/local/MegaRAID Storage Manager 目录。

    ln -s /usr/local/MegaRAID\\ Storage\\ Manager/ /usr/local/msm
    

    (7)移动OpenJD 8 JRE的目录到MSM的安装目录下,顺便把目录名改短,比如改成 jre。

    mv jdk8u352-b08-jre/ /usr/local/msm/jre
    chcon -u system_u -t usr_t -R /usr/local/msm/jre

    注意上面的操作还包括了面向启用了SELinux后要设置正确的文件CONTEXT。

    要确保以上操作完成后,必须能得到如下结果:

    MSM的安装目录可以通过 /usr/local/msm 访问

    jre的所在目录可以通过 /usr/local/msm/jre 访问

    (8)修改(替换)运行脚本

    由于脚本引用JAVA运行环境完全依赖于JRE_HOME环境变量,由此所产生的冲突问题最突出。因此我自己全部收拾了一遍,按逻辑顺序列出如下:

    a. 后台服务的操作脚本:

    /etc/init.d/msm_profile
    /etc/init.d/vivaldiframeworkd
    

    b. 后台服务的启动和停止脚本

    /usr/local/msm/Framework/startup.sh
    /usr/local/msm/Framework/shutdown.sh
    

    c. 客户端的启动脚本

    /usr/local/msm/startupui.sh
    

    这些脚本的修改目标是一致的:用MSM自己的JRE_HOME环境变量,覆盖取代ROOT用户的(面向全局的)JRE_HOME环境变量。

    由于篇幅太长,微信这边贴了也没啥意义。所以提供了网盘下载,也可以点击“阅读原文”到作者网站查看,挂在网站文章网页的最后面了。

    下载,解压,然后小心而正确地替换掉以上脚本(假设解压后目录名为fixed_msm_scripts):

    \\cp fixed_msm_scripts\\msm_profile /etc/rc.d/init.d
    \\cp fixed_msm_scripts\\vivaldiframeworkd /etc/rc.d/init.d
    \\cp fixed_msm_scripts\\startup.sh /usr/local/msm/Framework/
    \\cp fixed_msm_scripts\\shutdown.sh /usr/local/msm/Framework/
    \\cp fixed_msm_scripts\\startupui.sh /usr/local/msm
    

    完成脚本文件的修改或覆盖替换后,务必全面复查脚本文件的属性,包括文件的所有者、读写执行权限以及如果启用了SELinux,检查CONTEXT。大致如下,因为都经过了修正,和原安装后的混乱情况会有所不同:

    [root@server init.d]# ll -Z msm_profile vivaldiframeworkd
    -rwxr-xr-x. 1 root root system_u:object_r:initrc_exec_t:s0  461 1月  29 12:44 msm_profile
    -rwxr-xr-x. 1 root root system_u:object_r:initrc_exec_t:s0 2219 1月  13 2022 vivaldiframeworkd
    
    [root@server msm]# ll -Z startupui.sh
    -rwxr-xr-x. 1 root root system_u:object_r:usr_t:s0 309 4月  23 2021 startupui.sh
    
    [root@server Framework]# ll -Z *.sh
    -rwxr-xr-x. 1 root root system_u:object_r:usr_t:s0 276 4月  23 2021 shutdown.sh
    -rwxr-xr-x. 1 root root system_u:object_r:usr_t:s0 333 4月  23 2021 startup.sh
    

    (9)启动服务

    执行如下命令重新加载守护进程定义给systemd:

    systemctl daemon-reload
    

    启动MSM后台服务:

    systemctl start vivaldiframeworkd
    

    注:MSM后台服务的 systemd 服务描述定义文件是在:

    /run/systemd/generator.late/vivaldiframeworkd.service
    

    有需要可以自行修改。

    (10)通过客户端连接测试

    如果服务器安装了GUI,启动客户端,登录并检查日志和进行操作测试。

    如果服务器未安装GUI,则在确认防火墙端口已经正确开启后,在终端计算机上启动MSM客户端,尝试发现服务器,并连接到服务器进行测试。

    3、修改调整运行参数

    (1)服务端可能需要调整的运行参数主要包括:

    /usr/local/msm/Framework/eventnotificationchoice.properties
    

    该文件控制加载的日志范围,需要哪一种范围就只取消该行的注释并注释掉其它行:

    [root@server Framework]# cat eventnotificationchoice.properties
    #EVENT_NOTIFICATION_CHOICE=reboot
    EVENT_NOTIFICATION_CHOICE=clear
    #EVENT_NOTIFICATION_CHOICE=shutdown
    

    如果要调整通信加密秘钥的长度,修改这个文件:

    /usr/local/msm/Framework/vivaldikey.properties
    

    内容其实就是二选一:

    [root@server Framework]# cat vivaldikey.properties
    ##########################################################################################
    #       vivaldikey.properties enables the user to modify the keysize from 2048 to 1024
    #       and vice-versa by commenting and uncommenting the key\\values
    #       Please restart the MSM Framework service upon modification take effect.
    #       vivaldikeys_2048 = key size of 2048
    #       vivaldikeys = key size of 1024
    ###########################################################################################
    VIVALDI_KEY_FILE = vivaldikeys2048
    #VIVALDI_KEY_FILE = vivaldikeys
    

    注意2048位已经是必要设置了,除非必须兼容很旧版本的MSM客户端,否则不需要调整。

    修改配置文件后,要重启服务才能生效。

    (2)客户端的设置则是这两个文件:

    /usr/local/msm/msm.properties
    /usr/local/msm/vivaldikey.properties
    

    内容不重复介绍了,可以参考我之前的文章《安装 MegaRAID 存储管理器集中监控 DAS 存储状态》。

    总结

    Linux版本只是基于CentOS 7去介绍,其它发行版并未涉及,但原理是一致的,就是为MSM设置其私有的OpenJDK 8 JRE,避免和公共使用的JRE冲突。

    最后补充一些特殊情况记录:

    1、关于组播发现功能

    如果在客户端选择组播发现MSM服务器,需要注意:组播发现不会发现本机上的MSM服务。需要在IP Address框内写上本机地址,才能避免组播发现后的服务器清单中唯独就是没有当前服务器的情况。

    然后,无论Windows或Linux服务器,都需要在服务器本机防火墙允许组播协议。这对于Windows服务器需要启用如下图规则:

    windows firewall allow multicast rule

    对于Linux服务器,比如CentOS 7,需要设置如下规则:

    firewall-cmd --add-protocol=igmp
    firewall-cmd --add-rich-rule='rule family="ipv4" destination address="229.111.112.12" protocol value="ip" accept'
    firewall-cmd --runtime-to-permanent
    route add 229.111.112.12 dev em1
    

    最后一句添加路由的操作非必须。如果测试发现不执行也能发现和连接服务器就不需要执行。如果需要执行,要放入rc.local,实现服务器开机后运行。

    2、登录到Linux服务端后加载日志缓慢

    发现当MSM服务器端是Linux时,客户端远程登录后的加载过程特别慢。暂时未找到原因。


    最后是给出脚本源文件如下:

    1、deleteOldVersion.sh

     1#!/bin/sh 
     2
     3echo "Checking for any Old Version"
     4searchcont=1
     5if [ $searchcont = 1 ]; then
     6  linecount=`rpm -qa | grep MegaRAID_Storage_Manager | wc -l`
     7  if [ $linecount = 0 ]; then
     8    status=1
     9  else
    10  if [ $linecount = 1 ]; then
    11    status=0
    12  else
    13    echo "More than one copy of MegaRAID Storage Manager has been installed. Exiting installation."
    14    exit 1
    15  fi
    16fi
    17
    18#echo "setuptype is $setuptype";
    19#echo "upgradesetuptype is $upgradesetuptype";
    20if [ $linecount = 0 ]; then
    21  if [[ $upgradesetuptype = 'u' ]]; then
    22    echo "MSM is not installed on this system, MSM upgrade cannot proceed"
    23    echo "Exiting MSM installation"
    24    exit 1
    25  fi
    26fi
    27
    28if [ $status = 0 ]; then
    29  newdate=1642093428
    30  olddate=`rpm -q --queryformat "%{BUILDTIME}" MegaRAID_Storage_Manager`
    31  if [ $newdate -gt $olddate ]; then
    32    echo " MegaRAID Storage Manager is already installed $linecount"
    33    echo " Select Y or N "
    34    echo " Y, previous version of MSM will be uninstalled and latest MSM will be installed"
    35    echo " N, No changes made to the system"
    36    read ELU
    37    #  echo "$ELU"
    38    if [ "$ELU" != "y" -a "$ELU" != "Y" ]; then
    39      echo "Exiting Installation " 
    40      exit 1
    41    fi
    42    echo "Uninstalling Old version"
    43    . /etc/init.d/msm_profile
    44    "$MSM_HOME/.__uninst.sh"
    45    status=$?
    46    if [ $status = 0 ]; then
    47      if [ -f "$MSM_HOME/.__uninst.sh" ]; then  
    48        echo "Uninstall Failed. Exiting installation."
    49        exit 1
    50      fi
    51      echo "Uninstall Completed Successfully"
    52    else
    53      echo "Uninstall Failed. Exiting installation."
    54      exit 1
    55    fi
    56  else
    57    if [ $newdate = $olddate ]; then
    58      echo "The version is already installed."
    59    else
    60      echo "The installed version is newer."
    61    fi
    62    echo "Exiting installation."
    63    exit 1
    64  fi
    65  else
    66    echo "No Old Version Found"
    67  fi
    68fi
    69echo "Continuing with installation"
    70exit 0
    

    2、msm_profile

     1#!/bin/sh
     2#
     3# msm_profile sets the environment variables
     4# chkconfig: 2345 99 00
     5# processname: msm_profile
     6### BEGIN INIT INFO
     7# Provides:          msm_profile
     8# Required-Start:    
     9# Required-Stop:
    10# Default-Start:     2 3 4 5
    11# Default-Stop:      0 6
    12# Description:      msm_profile
    13### END INIT INFO
    14
    15# 为从系统默认路径中删除公共性质的JRE路径,需要如下这个函数
    16function path_remove {
    17  # Delete path by parts so we can never accidentally remove sub paths
    18  if [ "$PATH" == "$1" ] ; then PATH="" ; fi
    19  PATH=${PATH//":$1:"/":"} # delete any instances in the middle
    20  PATH=${PATH/#"$1:"/} # delete any instance at the beginning
    21  PATH=${PATH/%":$1"/} # delete any instance in the at the end
    22}
    23
    24# 保留原有的环境变量输出
    25MSM_HOME="/usr/local/MegaRAID Storage Manager"
    26export MSM_HOME
    27PRODUCTNAME="MegaRAID Storage Manager"
    28export PRODUCTNMAME
    29MSM_PRODUCT=MSM
    30export MSM_PRODUCT
    31
    32# 从系统默认路径中删除JAVA_HOME相关路径
    33if [ "$JAVA_HOME" != "" ] ;    
    34then 
    35    TODEL=$JAVA_HOME/bin
    36    path_remove $TODEL
    37    TODEL=$JAVA_HOME/jre/bin
    38    path_remove $TODEL
    39  path_remove $JAVA_HOME
    40fi
    41
    42# 从系统默认路径中删除JRE_HOME相关路径
    43if [ "$JRE_HOME" != "" ] ;    
    44then 
    45    TODEL=$JRE_HOME/bin
    46    path_remove $TODEL
    47  path_remove $JRE_HOME
    48fi
    49
    50# 修改系统默认路径,加入私有的JRE
    51# 注意:需要预先创建符号链接到MSM的安装目录,从而避免目录名中的空格引入LD_PRELOAD导致ld.so出错。
    52MSM_HOME_LINK="/usr/local/msm"
    53JRE_HOME=$MSM_HOME_LINK/jre
    54PATH=$JRE_HOME/bin:$PATH
    55LD_LIBRARY_PATH=.:$JRE_HOME/lib:$JRE_HOME/lib/amd64:$JRE_HOME/lib/amd64/jli
    56CLASSPATH=.:$JRE_HOME/lib:$JRE_HOME/lib/amd64:$JRE_HOME/lib/amd64/jli
    57export JRE_HOME PATH LD_LIBRARY_PATH CLASSPATH
    58
    59# for debug
    60#echo $MSM_HOME
    61#echo $MSM_HOME_LINK
    62#echo $JRE_HOME
    63#echo $PATH
    64#echo $LD_LIBRARY_PATH
    65#echo $CLASSPATH
    

    3、vivaldiframeworkd

      1#!/bin/bash
      2#description: Framework serice startup/shutdown script
      3# chkconfig: 2345 99 00
      4### BEGIN INIT INFO
      5# Provides:          Framework
      6# Required-Start:    $syslog
      7# Required-Stop:     
      8# Default-Start:     2 3 4 5
      9# Default-Stop:      0 6
     10# Description:      vivaldiframework service
     11### END INIT INFO
     12#Function to check status of Framework service
     13source /etc/profile
     14
     15check_status() {
     16    . /etc/init.d/msm_profile
     17    x=`ps -ef|grep java|grep Framework.jar`
     18    if [ "$x" = "" ] ; then
     19        return 3;
     20    fi
     21    return 0
     22}
     23
     24#Function to start Framework service
     25start() {
     26    \\rm -f /tmp/network_present
     27    . /etc/init.d/msm_profile
     28    network_flag=0
     29    for (( i=0; i < 20; i++ ))
     30    do
     31        if [ -f "$MSM_HOME_LINK/Framework/TestNetworkCapability.class" ]
     32        then
     33            echo "$MSM_PRODUCT with Network Capability">>/dev/null
     34            "$MSM_HOME_LINK/jre/bin/java" -classpath "rt.jar:$MSM_HOME_LINK/Framework" TestNetworkCapability
     35            if [ -f /tmp/network_present ]
     36            then
     37                network_flag=1
     38                i=21
     39                \\rm -f /tmp/network_present
     40            else
     41                sleep 5
     42            fi
     43        else
     44            echo "$MSM_PRODUCT without Network Capability">>/dev/null
     45            network_flag=1
     46            i=21
     47        fi
     48    done
     49    if [ $network_flag -eq 1 ]
     50    then
     51        echo "Trying to start Framework.....">>/dev/null
     52    else
     53        echo "$MSM_PRODUCT failed to start Framework..... Check your Network">>/dev/null
     54        echo "Trying to start Framework without Network Capability.....">>/dev/null
     55    fi
     56    sh "$MSM_HOME_LINK/Framework/startup.sh" >> /dev/null 2>>/dev/null &
     57}
     58
     59#function to stop Framework Service
     60stop() {
     61    . /etc/init.d/msm_profile
     62    sh "$MSM_HOME_LINK/Framework/shutdown.sh" >> /dev/null &
     63    sh "$MSM_HOME_LINK/Framework/shutdown.sh" >> /dev/null &
     64}
     65
     66case "$1" in
     67    start)
     68        check_status
     69        status=$?
     70        if [ $status = 0 ]; then
     71            echo "Framework is already running....."
     72        else
     73            echo "Starting Framework: "
     74            start
     75        fi
     76        ;;
     77    stop)
     78        check_status
     79        status=$?
     80        if [ $status = 3 ]; then
     81            echo "Framework is already stopped....."
     82        else
     83            echo "Shutting down Framework: "
     84            stop
     85        fi
     86        ;;
     87    restart|reload)
     88        $0 stop
     89        sleep 20
     90        $0 start
     91        ;;
     92    status)
     93        check_status
     94        RETVAL=$?
     95        if [ $RETVAL = 0 ]; then
     96            echo "Framework is running..."
     97        else
     98            if [ $RETVAL = 3 ]; then
     99                echo "Framework is stopped..."
    100            else
    101                echo "Framework status unknown..."
    102            fi
    103        fi
    104        ;;
    105    *)
    106        echo "Usage: $0 {start|stop|restart|status}"
    107        exit 1
    108esac
    109exit $RETVAL
    

    4、startup.sh

     1#!/bin/sh
     2
     3. /etc/rc.d/init.d/msm_profile
     4
     5cd "$MSM_HOME_LINK/Framework"
     6
     7LD_PRELOAD=$JRE_HOME/lib/amd64/libjsig.so
     8export LD_PRELOAD
     9
    10LD_LIBRARY_PATH=`pwd`:/opt/lsi/Pegasus:/opt/msm/lib:/opt/snmp/lib
    11export LD_LIBRARY_PATH
    12
    13JAVAX_PATH=$JRE_HOME/bin/javax.activation.jar
    14
    15"$JRE_HOME/bin/java" -classpath $JAVAX_PATH:rt.jar:jsse.jar:jce.jar:javax.mail.jar:Framework.jar -Djava.library.path=. Framework.FrameworkManager
    

    5、shutdown.sh

    1#!/bin/sh
    2
    3. /etc/rc.d/init.d/msm_profile
    4
    5cd "$MSM_HOME_LINK/Framework"
    6
    7"$JRE_HOME/bin/java" -classpath rt.jar:jsse.jar:jce.jar:Framework.jar:framework_shutdown.jar:. -Djava.library.path=. shutdown.FrameworkShutdown
    

    6、startupui.sh

    1#!/bin/sh
    2
    3if [ "$DISPLAY" = "" ]; then
    4 echo "X11 Display variable is not properly set"
    5fi
    6. /etc/init.d/msm_profile
    7cd "$MSM_HOME_LINK"
    8#XMODIFIERS=@im=none
    9"$JRE_HOME/bin/java" -DVENUS=true -classpath .:GUI.jar:monitorgui.jar:DebugLog.jar:log4j-1.2.15.jar:jaxen-1.1.jar:jdom-1.1.jar GUI.VivaldiStartupDialog ajsgyqkj=71244
    
    欢迎关注微信公众号后私信讨论文章内容!
    本栏目相关
  •  2010-01-25 Linux 下的分区调整工具GParted实战
  •  2020-02-27 服务器热加硬盘、热转RAID模式,配合LINUX卷操作实现不重启服务器完成扩容
  •  2022-02-24 如何安装使用 Broadcom RAID卡命令行管理工具 StorCLI(或称PercCLI)?
  •  2022-02-25 Linux 软路由网络吞吐优化设置
  •  2022-05-13 2022年甲方系统管理运维人员必备远程访问工具
  •  2022-05-20 内网DNS服务实现公网域名在内网转换解析
  •  2022-12-03 VMware vSphere Hypervisor 6.7 手动升级过程实例
  •  2022-10-17 安装 MegaRAID 存储管理器集中监控 DAS 存储状态
  •  2022-12-12 Linux Kernel 日志排错分析和处置三例
  • 返回页首