linux服务方式启动程序脚本(init.d脚本)
2024-08-27 05:13:27
这才是真正正确的让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
最新文章
- Linux不重启的情况下添加硬盘
- PostgreSQL的时间/日期函数使用 转
- iOS:使用Github托管自己本地的项目代码方式三(命令行方式: Terminal Line)
- SpringMVC 中的Interceptor 拦截器
- [CCF2015.12]题解
- 比较全面的gdb调试命令
- Html5学习--canvas
- 将JSON对象转化为数组对象
- js中关于string的一些常用的方法
- linux_磁盘体系
- InnoSetup 以命令行自动编译打包
- webdriver保存验证码截图
- 聊聊 HashMap
- 20175234 2018-2019-2 《Java程序设计》第七周学习总结
- 5月9日——vue渲染过程中{{xxx}}显示
- 51NOD 1087 1 10 100 1000
- PHPCMS V9 fsockopen 函数被禁用解决方案
- 20145329 《网络对抗技术》 逆向及Bof基础实验
- C# winform截图、web Cropper图片剪切、上传
- mongodb 的基本操作
热门文章
- 常用命令之ps
- [SQL]开启事物,当两条插入语句有出现错误的时候,没有错误的就插入到表中,错误的语句不影响到正确的插入语句
- Maven依赖范围及依赖传递
- <;%%>;与<;%#%>;与<;%=%>;
- OC基础(14)
- 稀疏矩阵乘法加法等的java实现
- 解决VS2008 开发Windows Mobile 项目生成速度慢的问题
- Flash视频播放器开发经验总结
- cocos2d-x Android版游戏之中国移动SDK嵌入
- 覆盖原有div或者Input的鼠标移上去描述