linux - 创建init.d脚本文件

标签 linux bash shell centos init.d

我有一个包含以下内容的示例文件:

#!/bin/bash

# Setting environment

CLASSPATH="."
CLASSPATH="$CLASSPATH:props"
CLASSPATH="$CLASSPATH:cfg"
CLASSPATH="$CLASSPATH:./bin/*"
CLASSPATH="$CLASSPATH:./wslib/*"
CLASSPATH="$CLASSPATH:./oalib/*"

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8"

# RAM usage settings
JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx1024m"

# Settings of GC
JAVA_OPTS="$JAVA_OPTS -XX:ParallelGCThreads=2"

# Print of memory usage
JAVA_OPTS="$JAVA_OPTS -Xloggc:./log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution"

# setting config
JAVA_OPTS="$JAVA_OPTS se.highex.ebe.adaptor.Adapter -config cfg/config_gw_ws.xml"

echo $CLASSPATH
echo $JAVA_OPTS

export CLASSPATH
export JAVA_OPTS

java $JAVA_OPTS

文件位于/app/somepath/stpa.sh

如何创建一个 init.d 文件来启动/停止/重新启动它?

我找到了这个tutorial ,但是在 service stpa start 命令之后,终端中没有任何消息,我认为我的脚本无法正常工作。但找不到原因。

附注抱歉我的英语不好!

编辑: 这是我在/etc/init.d 中的 stpa 文件

#!/bin/sh
#
# chkconfig: 2345 90 60

name="STPA_WS"
command="/app/STPAdapterPG/stpa_ws.sh"
command_args=""
daemon="/usr/local/bin/daemon"

[ -x "$daemon" ] || exit 0
[ -x "$command" ] || exit 0

daemon_start_args=""
pidfiles="/var/run"
user=""
chroot=""
chdir=""
umask=""
stdout="daemon.info"
stderr="daemon.err"

case "$1" in
    start)
        if "$daemon" --running --name "$name" --pidfiles "$pidfiles"
        then
            echo "$name is already running."
        else
            echo -n "Starting $name..."
            "$daemon" --respawn $daemon_start_args \
                --name "$name" --pidfiles "$pidfiles" \
                ${user:+--user $user} ${chroot:+--chroot $chroot} \
                ${chdir:+--chdir $chdir} ${umask:+--umask $umask} \
                ${stdout:+--stdout $stdout} ${stderr:+--stderr $stderr} \
                -- \
                "$command" $command_args
            echo done.
        fi
        ;;

    stop)
        if "$daemon" --running --name "$name" --pidfiles "$pidfiles"
        then
            echo -n "Stopping $name..."
            "$daemon" --stop --name "$name" --pidfiles "$pidfiles"
            echo done.
        else
            echo "$name is not running."
        fi
        ;;

    restart|reload)
        if "$daemon" --running --name "$name" --pidfiles "$pidfiles"
        then
            echo -n "Restarting $name..."
            "$daemon" --restart --name "$name" --pidfiles "$pidfiles"
            echo done.
        else
            echo "$name is not running."
            exit 1
        fi
        ;;

    status)
        "$daemon" --running --name "$name" --pidfiles "$pidfiles" --verbose
        ;;

    *)
        echo "usage: $0 <start|stop|restart|reload|status>" >&2
        exit 1
esac

exit 0

最佳答案

我认为你没有完成init.d脚本格式,你需要按照你提到的教程添加内容:

case "$1" in  
    start)


    #here do something you need when start
    ;;

stop)
    #here do something you need when stop

    ;;

restart|reload)


    ;;

status)

    ;;

*)

    echo "usage: $0 <start|stop|restart|reload|status>" >&2

    exit 1
esac

关于linux - 创建init.d脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40780666/

相关文章:

linux - 在 Linux 中模拟一个假目录

linux - 如何检查文件列表中的字符串并在 Linux 中显示最新修改的字符串

windows - Cygwin -Windows 无法初始化设备 PRN

perl - Shell 测试以查看二进制文件是否在您的路径中

c - 为什么 vfork 会产生这个输出?

linux - Rancher 2.0无法拉取镜像

regex - 在 SED 中转义正则表达式

bash - awk 命令在 snakemake --use-singularity 中失败

linux - 单击选项卡时出现shell init问题,getcwd有什么问题?

linux - bash 中文件列表的良好输出