start/stop linux scripts

本文介绍了一个用于启动RTNSAdapter服务的Shell脚本。该脚本通过设置环境变量和调用Java程序来实现服务的启动与停止,并根据不同环境(如开发、测试或生产)配置相应的参数。
#!/bin/sh

export APP_CODE=apm

export APP_HOME=/usr/local/clo/app/ffo/rtns_adapter
export APP_JCLASS_HOME=${APP_HOME}/jclass

export SHUTDOWN_TIME=10

export JAVA_HOME=/usr/local/clo/ven/jdk1.6.0_45-64
export PW_MATRIX=/usr/local/ccms/security/.PASSWORD_MATRIX
export PW_MATRIX_LIB=/usr/local/ccms/security/jclass/pwm
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/ccms/lib
export CLASSPATH=/usr/local/ccms/security/jclass/pwm/PwMatrix.jar:${APP_HOME}/jclass/*

case "$OEC_ENV" in
"DEV1"*)
export ENV=dev
;;
"UA1"*)
export ENV=uat
;;
"PROD"*)
export ENV=prod
;;
*) echo "Unable to find ENV definition, RTNS Adapter exit.";;
esac

export CFGPATH=/usr/local/clo/app/deploy/cfg/adapter-GMBT-${ENV}.properties

MAIN_CLASS=com.ssc.ssgm.fx.rtns.adapter.RTNSAdapterMain
pid=""

getpid() {
pid=`ps -ef | grep java | grep ${MAIN_CLASS} | grep ${TCID} | grep ${CFGPATH} | grep ${ENV} | awk '{print $2}'`
}

start() {
echo "Starting RTNSAdatper for TCID ${TCID}..."
getpid
if [ "X${pid}" = "X" ]
then
nohup $JAVA_HOME/bin/java -cp ${CLASSPATH} -Denv=${ENV} ${MAIN_CLASS} ${TCID} ${CFGPATH} &
getpid
if [ "X${pid}" = "X" ]
then
echo "Failed to start RTNSAdapter for ${TCID}"
else
echo "RTNSAdatper for ${TCID} is running. PID is ${pid}"
fi

else
echo "RTNSAdatper is already running."
exit 1
fi
}

stop() {
echo "Stopping RTNSAdapter for TCID ${TCID}..."
getpid
if [ "X${pid}" = "X" ]
then
echo "RTNSAdapter is not running."
else
kill ${pid}
sleep $SHUTDOWN_TIME

getpid

if [ "X${pid}" = "X" ]
then
echo "Stopped RTNSAdapter."
else
echo "Failed to stop RTNSAdapter."
exit 1
fi
fi
}

usage() {
echo "Usage: $0 { start | stop | restart }"
exit 1
}

if [ "$#" -ne 1 ]
then
usage
exit 1
else
if [ "${ENV}" = "prod" ]
then
export TCID="GMBH"
else
export TCID="GMBT"
fi

case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart')
stop
start
;;
*)
usage
;;
esac
exit 0
fi
### 解决 Linux 中 ifcfg-ens33 文件不存在或命令找不到的问题 在 Linux 系统中,如果遇到 `ifcfg-ens33` 文件不存在或无法找到的问题,可以通过以下方法进行排查和解决。 #### 1. 检查网络接口名称是否正确 在较新的 Linux 发行版(如 CentOS 7 或更高版本)中,网卡命名规则可能已从传统的 `eth0` 更改为基于硬件的命名方式(如 `ens33`)。如果系统中没有 `ens33` 文件,可能是网卡名称发生了变化。使用以下命令查看当前系统中的所有网络接口: ```bash ip link show ``` 上述命令会列出所有可用的网络接口名称。如果发现网卡名称并非 `ens33`,而是其他名称(如 `enp0s3`),需要根据实际名称创建或编辑对应的配置文件[^1]。 #### 2. 创建缺失的 ifcfg-ens33 文件 如果确认网卡名称为 `ens33`,但 `/etc/sysconfig/network-scripts/ifcfg-ens33` 文件不存在,则可以手动创建该文件。以下是创建文件的基本步骤: 1. 使用文本编辑器创建配置文件: ```bash sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33 ``` 2. 在文件中添加以下内容: ```bash TYPE=Ethernet BOOTPROTO=dhcp NAME=ens33 DEVICE=ens33 ONBOOT=yes ``` - `TYPE`:指定网络类型为以太网。 - `BOOTPROTO`:设置为 `dhcp` 表示自动获取 IP 地址;若需要静态 IP 地址,可将其设置为 `static`。 - `NAME` 和 `DEVICE`:指定网卡名称。 - `ONBOOT`:设置为 `yes` 表示系统启动时自动激活该网卡。 保存文件后,重启网络服务以应用更改: ```bash systemctl restart network ``` #### 3. 检查 NetworkManager 的影响 在某些情况下,NetworkManager 可能会干扰传统的网络配置方式,导致 `ifcfg-ens33` 文件无效。可以通过以下方法临时关闭 NetworkManager 并启用传统网络服务: 1. 停止并禁用 NetworkManager: ```bash systemctl stop NetworkManager systemctl disable NetworkManager ``` 2. 启动传统网络服务: ```bash systemctl start network.service ``` 完成上述操作后,重新检查网络连接状态[^2]。 #### 4. 验证网络接口是否被禁用 有时,网卡可能因硬件问题或其他原因被禁用。可以通过以下命令检查网卡状态: ```bash ip link show ens33 ``` 如果输出显示网卡状态为 `DOWN`,可以尝试启用它: ```bash ip link set ens33 up ``` #### 5. 检查驱动程序是否正常安装 如果以上方法均无效,可能是网卡驱动程序未正确安装。可以尝试更新内核或重新安装驱动程序。例如: ```bash yum update kernel reboot ``` ### 注意事项 - 如果使用的是虚拟机环境(如 VMware),确保虚拟网络适配器已正确配置并启用[^3]。 - 在某些发行版中,可能需要使用 `netplan` 工具来管理网络配置,而不是传统的 `ifcfg-*` 文件[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值