sh启动程序怎么写

时间:2025-01-17 17:48:07 游戏攻略

在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程序的状态了。