在Linux下使用`sh`命令启动程序,通常需要编写一个Shell脚本,该脚本包含启动、停止、重启和查看状态等功能。以下是一个简单的示例脚本,用于启动一个名为`demo.jar`的Java程序:
```bash
!/bin/sh
定义程序名和日志文件路径
PROJECT_NAME=demo.jar
LOG_FILE=./log/startup.log
判断程序是否正在运行的方法
isExist() {
pid=$(ps -ef | grep ${PROJECT_NAME} | grep -v "grep" | awk '{print $2}')
if [ -z "${pid}" ]; then
return 0
else
return 1
fi
}
启动程序的方法
start() {
调用判断程序是否正在运行的方法
isExist
判断方法返回值是否等于0,等于则不存在
if [ $? -eq 0 ]; then
echo "${PROJECT_NAME} is starting ......"
nohup java -Xms1024m -Xmx2048m -jar ${PROJECT_NAME} > ${LOG_FILE} 2>&1 &
echo "${PROJECT_NAME} startup success"
else
echo "${PROJECT_NAME} is running, pid=${pid}"
fi
}
停止程序的方法
stop() {
调用判断程序是否正在运行的方法
isExist
判断是否存在,返回值0不存在
if [ $? -eq 0 ]; then
echo "Stopping ${PROJECT_NAME}..."
kill -9 ${pid}
echo "${PROJECT_NAME} stopped"
else
echo "${PROJECT_NAME} is not running"
fi
}
查看程序运行状态的方法
status() {
调用判断程序是否正在运行的方法
isExist
判断方法返回值是否等于0,等于则不存在
if [ $? -eq 0 ]; then
echo "${PROJECT_NAME} is running, pid=${pid}"
else
echo "${PROJECT_NAME} is not running"
fi
}
根据输入参数执行相应操作
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: sh ${0} [start|stop|restart|status]"
exit 1
;;
esac
```
说明:
定义程序名和日志文件路径
`PROJECT_NAME`:要启动的程序名称,这里是`demo.jar`。
`LOG_FILE`:程序启动后生成的日志文件路径,这里是`./log/startup.log`。
判断程序是否正在运行的方法
`isExist`:通过`ps -ef`命令查找程序进程,如果进程不存在则返回0,否则返回1。
启动程序的方法
`start`:调用`isExist`方法判断程序是否正在运行,如果不存在则启动程序,并将输出重定向到日志文件。
停止程序的方法
`stop`:调用`isExist`方法判断程序是否正在运行,如果存在则杀死进程。
查看程序运行状态的方法
`status`:调用`isExist`方法判断程序是否正在运行,并输出相应信息。
根据输入参数执行相应操作
通过`case`语句根据输入参数(`start|stop|restart|status`)执行相应的方法。
使用方法:
1. 将上述脚本保存为`start_demo.sh`。
2. 赋予脚本执行权限:`chmod +x start_demo.sh`。
3. 启动程序:`./start_demo.sh start`。
4. 停止程序:`./start_demo.sh stop`。
5. 查看状态:`./start_demo.sh status`。
6. 重启程序:`./start_demo.sh restart`。
这样,你就可以通过简单的命令来启动、停止和查看Java程序的状态了。