linux 启动脚本程序,linux服务方式启动程序脚本(init.d脚本)

这才是真正正确的让jar后台启动的脚本,网络上的各种nohoup的脚本都是临时执行一次任务用的。

#!/bin/sh

#

# init.d script

#

#

### BEGIN INIT INFO

# Provides: mongodb

# Required-Start: $network $local_fs $remote_fs

# Required-Stop: $network $local_fs $remote_fs

# Should-Start: $named

# Should-Stop:

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: An object/document-oriented database

# Description: MongoDB is a high-performance, open source, schema-free

# document-oriented data store that's easy to deploy, manage

# and use. It's network accessible, written in C++ and offers

# the following features:

# .

# * Collection oriented storage - easy storage of object-

# style data

# * Full index support, including on inner objects

# * Query profiling

# * Replication and fail-over support

# * Efficient storage of binary data including large

# objects (e.g. videos)

# * Auto-sharding for cloud-level scalability (Q209)

# .

# This package is build with V8 JavaScript engine.

# .

# High performance, scalability, and reasonable depth of

# functionality are the goals for the project.

### END INIT INFO

DAEMON=/usr/local/jdk1.8.0_40/bin/java

OPTION=-jar

VAR=/usr/local/danabang.storage/danabang.storage.jar

DESC=danabang.storage

# Default defaults. Can be overridden by the /etc/default/$NAME

NAME=danabang.storage

PIDFILE=/var/data/danabang.storage/log/$NAME.pid

RUNAS=tangrui

if test ! -x $DAEMON; then

echo "Could not find $DAEMON"

exit 0

fi

. /lib/lsb/init-functions

STARTTIME=1

DIETIME=10 # Time to wait for the server to die, in seconds

# If this value is set too low you might not

# let some servers to die gracefully and

# 'restart' will not work

running_pid() {

# Check if a given process pid's cmdline matches a given name

pid=$1

name=$2

[ -z "$pid" ] && return 1

[ ! -d /proc/$pid ] && return 1

cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`

# Is this the expected server

[ "$cmd" != "$name" ] && return 1

return 0

}

running() {

# Check if the process is running looking at /proc

# (works for all users)

# No pidfile, probably no daemon present

[ ! -f "$PIDFILE" ] && return 1

pid=`cat $PIDFILE`

running_pid $pid $DAEMON || return 1

return 0

}

start_server() {

# Start the process using the wrapper

start-stop-daemon --background --start --quiet --pidfile $PIDFILE \

--make-pidfile --chuid $RUNAS \

--exec $DAEMON -- $OPTION $VAR

errcode=$?

return $errcode

}

stop_server() {

# Stop the process using the wrapper

start-stop-daemon --stop --quiet --pidfile $PIDFILE \

--user $RUNAS \

--exec $DAEMON

errcode=$?

return $errcode

}

force_stop() {

# Force the process to die killing it manually

[ ! -e "$PIDFILE" ] && return

if running ; then

kill -15 $pid

# Is it really dead?

sleep "$DIETIME"s

if running ; then

kill -9 $pid

sleep "$DIETIME"s

if running ; then

echo "Cannot kill $NAME (pid=$pid)!"

exit 1

fi

fi

fi

rm -f $PIDFILE

}

case "$1" in

start)

log_daemon_msg "Starting $DESC" "$NAME"

# Check if it's running first

if running ; then

log_progress_msg "apparently already running"

log_end_msg 0

exit 0

fi

if start_server ; then

# NOTE: Some servers might die some time after they start,

# this code will detect this issue if STARTTIME is set

# to a reasonable value

[ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time

if running ; then

# It's ok, the server started and is running

log_end_msg 0

else

# It is not running after we did start

log_end_msg 1

fi

else

# Either we could not start it

log_end_msg 1

fi

;;

stop)

log_daemon_msg "Stopping $DESC" "$NAME"

if running ; then

# Only stop the server if we see it running

errcode=0

stop_server || errcode=$?

log_end_msg $errcode

else

# If it's not running don't do anything

log_progress_msg "apparently not running"

log_end_msg 0

exit 0

fi

;;

force-stop)

# First try to stop gracefully the program

$0 stop

if running; then

# If it's still running try to kill it more forcefully

log_daemon_msg "Stopping (force) $DESC" "$NAME"

errcode=0

force_stop || errcode=$?

log_end_msg $errcode

fi

;;

restart|force-reload)

log_daemon_msg "Restarting $DESC" "$NAME"

errcode=0

stop_server || errcode=$?

# Wait some sensible amount, some server need this

[ -n "$DIETIME" ] && sleep $DIETIME

start_server || errcode=$?

[ -n "$STARTTIME" ] && sleep $STARTTIME

running || errcode=$?

log_end_msg $errcode

;;

status)

log_daemon_msg "Checking status of $DESC" "$NAME"

if running ; then

log_progress_msg "running"

log_end_msg 0

else

log_progress_msg "apparently not running"

log_end_msg 1

exit 1

fi

;;

*)

N=/etc/init.d/$NAME

echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2

exit 1

;;

esac

exit 0

CentOS以守护进程的方式启动程序的另类用法daemon

在Linux下如果以守护进程的方式启动程序,也就是后台运行,有几种方式,比如后面带&&,nuhop,那么在CentOS下可以使用daemon这个函数来启动,比如: daemon --p ...

以服务方式启动tomcat无法访问NFS共享盘

用startup.bat方式启动tomcat,程序的可以访问NFS共享盘的文件.但用 1).以服务的方式启动tomcat 2).或者用windows的任务计划去执行startup.bat的方式启动to ...

以Windows服务方式启动MySQL,并将其默认编码设置为UTF-8

系统环境:Windows XP Professional 版本 2002 Service Pack 3 // 第1步:创建选项文件.首先下载mysql-5.5.12-win32.zip,只需复制mys ...

Nginx以服务方式启动并用定时任务每天备份日志

1.安装Nginx以服务方式启动: a.下载 instsrv.exe.srvany.exe 以管理员方式启动CMD执行以下命令: instsrv Nginx D:\nginx\srvany.exe b ...

springboot以jar包方式启动、关闭、重启脚本

springboot以jar包方式启动.关闭.重启脚本 启动 编写启动脚本startup.sh #!/bin/bash echo Starting application nohup java -ja ...

WPF 用Main函数方式启动程序

原文:WPF 用Main函数方式启动程序 WPF默认程序启动:新建project后自动生成的App.xaml中指定程序启动方式(StartupUri="MainWindow.xaml&quo ...

linux中chkconfig 启动程序顺序介绍

1)redhat的启动方式和执行次序是: 加载内核 执行init程序 /etc/rc.d/rc.sysinit          # 由init执行的第一个脚本 /etc/rc.d/rc $RUNLE ...

linux服务开机启动顺序

今天遇到了一个问题,我们写了一个服务脚本A,该服务需要优先于mysql启动.脚本是从其他地方拷来的模板,前面的默认配置没改,只是实现了自己的功能.写完,chkconfig A on,reboot,启动 ...

linux服务开机启动

1.chkconfig 配置开机启动 在  /etc/init.d  创建执行服务的可执行脚本,赋予脚本可执行权限.如果是通过yum 或者rpm安装的,并且已经在该目录下存在对应的启动脚本,就不用自己 ...

随机推荐

hdu 1290 切糕

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1290 思路: n条直线最多能将一个平面分成几个区域其递推公式即为:f(n)=f(n-1)+n:递推一下 ...

【转载】Web应用工作原理

问题描述:           Web应用工作原理   问题解决:          参考资料:http://blog.csdn.net/lcore/article/details/8964642   ...

[python] virtualenv下解决matplotlib中文乱码

1. 安装中文字体 一般系统自带wqy-microhei,其ttc文件位于/usr/share/fonts/truetype/wqy/wqy-microhei.ttc 2. 将ttc文件复制到pyth ...

Solr部署详解

Solr部署详解 时间:2013-11-24 方式:转载 目录 1 solr概述 1.1 solr的简介 1.2 solr的特点 2 Solr安装 2.1 安装JDK 2.2 安装Tomcat 2.3 ...

Axure下拉列表的交互事件 + 自定义元件库

下拉列表的交互事件: 场景:当点击第一个下拉列表框的江苏时,第二个列表框会显示江苏省的城市:当点击第一个下拉列表框的北京时,第二个列表框会显示北京市的区 操作:把第二个列表框设置为动态面板,设置为两种 ...

Python从菜鸟到高手(8):print函数、赋值与代码块

1.神奇的print函数   print函数相信读者一定对它不陌生,因为在前面的章节,几乎每个例子都使用了print函数,这个函数的功能就是在控制台输出文本.不过print在输出文本时还可以进行一些设 ...

vs2015+qt5.9.7配置跨平台的工程

环境:vs2015 update 3 + qt 5.9.7 问题:代码中存在中文无法编译 附加目的:支持跨平台 问题分析:代码的编码格式导致中文编译错误,windows默认gb2312编码,qt默认u ...

ASP.NET乱码深度剖析

写在前面 在Web开发中,乱码应该算一个常客了.今天还好好的一个页面,第二天过来打开一看,中文字符全变“外星文”了.有时为了解决这样的问题,需要花上很长的时间去调试,直至抓狂,笔者也曾经历过这样的时期 ...

The Last Stand

The Last Stand https://ac.nowcoder.com/acm/contest/303/L 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语 ...

org.apache.commons.beanutils.BeanUtils的常见用法

import org.apache.commons.beanutils.BeanUtils BeanUtils1. public static void copyProperty(Object bea ...

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值