【树莓派】在树莓派上制作开机自启动程序及服务2

有朋友说根据这个文章实践时候有问题,可能之前中间有过个更新,但是忘了更新博文,在这里我把目前最新的贴一下。

/etc/init.d/sendtooss:

sendtooss服务:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          sendtooss
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Required-Start: $local_fs
# Required-Stop:
# chkconfig: 12345 99 05
# Short-Description: Start or stop the sendtooss App.
### END INIT INFO

start(){
    echo -e "\033[32m start sendtooss \033[0m"
    cd /home/lifeccp/webapp/sendtooss
    su lifeccp -c "sh /home/lifeccp/webapp/sendtooss/startup --spring.profiles.active=test &"
}

stop(){
    echo -e "\033[32m stop sendtooss \033[0m"
    pkill -f sendtooss

    app_pid=$(pgrep -f sendtooss)
    if [ "${app_pid}" = "" ]; then
        echo -e  "\033[32m -=stop sendtooss finished=- \033[0m"
    else
        echo -e  "\033[31m -=stop sendtooss failed=- \033[0m"
        kill -9 "${app_pid}"
        echo -e  "\033[32m -=kill -9 sendtooss=- \033[0m"
    fi
}

case $1 in
start)
    start
    ;;
stop)
    stop
    ;;
*)
    echo -e "\033[32m Usage: $0 (start|stop) \033[0m"
    ;;
esac

scptolocal服务:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          scptolocal
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Required-Start: $local_fs
# Required-Stop:
# chkconfig: 12345 99 05
# Short-Description: Start or stop the scptolocal App.
### END INIT INFO

start(){
    echo -e "\033[32m start scptolocal \033[0m"
    cd /home/lifeccp/webapp/scptolocal
    su lifeccp -c "sh /home/lifeccp/webapp/scptolocal/scptolocal -b LIFECCP:5090 --directory /home/lifeccp/dicom &"
}

stop(){
    echo -e "\033[32m stop scptolocal \033[0m"
    pkill -f scptolocal

    app_pid=$(pgrep -f scptolocal)
    if [ "${app_pid}" = "" ]; then
        echo -e  "\033[32m -=stop scptolocal finished=- \033[0m"
    else
        echo -e  "\033[31m -=stop scptolocal failed=- \033[0m"
        kill -9 "${app_pid}"
        echo -e  "\033[32m -=kill -9 scptolocal=- \033[0m"
    fi
}

case $1 in
start)
    start
    ;;
stop)
    stop
    ;;
*)
    echo -e "\033[32m Usage: $0 (start|stop) \033[0m"
    ;;
esac

--------------------

在/home/lifeccp/webapp/目录下,需要有相应的shell脚本,被调用。如下:

/home/lifeccp/webapp/sendtooss/startup 脚本内容:

[email protected]:~ $ cat webapp/sendtooss/startup
#!/bin/bash
# -------------------------------------------------------------------------
# Osprey  Launcher
# args:
#     --spring.profiles.active = <profile>    e.g.:‘dev[test|prod]‘
# -------------------------------------------------------------------------

MAIN_JAR=osprey-1.0.14.release.jar

DIRNAME="$(dirname "$0")"

# OS specific support (must be ‘true‘ or ‘false‘).
cygwin=false;
case "$(uname)" in
    CYGWIN*)
        cygwin=true
        ;;
esac

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
    [ -n "$WORK_HOME" ] &&
        WORK_HOME=$(cygpath --unix "$WORK_HOME")
    [ -n "$JAVA_HOME" ] &&
        JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
fi

# Setup WORK_HOME
if [ "x$WORK_HOME" = "x" ]; then
    WORK_HOME=$(cd "$DIRNAME"; pwd)
fi

# Setup the JVM
JAVA="java"
# if [ "x$JAVA_HOME" != "x" ]; then
#     JAVA=$JAVA_HOME/bin/java
# else
#     JAVA="java"
# fi

# Execute the JVM
cd "$WORK_HOME" && exec "$JAVA" -jar "$MAIN_JAR" "[email protected]"

在/home/lifeccp/webapp/scptolocal/scptolocal 中有对应的 scptolocal 服务:

[email protected]:~ $ cat webapp/scptolocal/scptolocal
#!/bin/sh
# -------------------------------------------------------------------------
# Pandion  Launcher
# args:
#     -b,--bind <[aet[@ip]:]port> e.g.:‘LIFECCP:107‘
#     --directory <path>          e.g.:‘./dicom‘
# -------------------------------------------------------------------------

MAIN_CLASS=com.lifeccp.box.store.DicomReceiver
MAIN_JAR=pandion-1.0.5.release.jar

DIRNAME="$(dirname "$0")"

# OS specific support (must be ‘true‘ or ‘false‘).
cygwin=false;
case "$(uname)" in
    CYGWIN*)
        cygwin=true
        ;;
esac

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
    [ -n "$WORK_HOME" ] &&
        WORK_HOME=$(cygpath --unix "$WORK_HOME")
    [ -n "$JAVA_HOME" ] &&
        JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
fi

# Setup WORK_HOME
if [ "x$WORK_HOME" = "x" ]; then
    WORK_HOME=$(cd "$DIRNAME"; pwd)
fi

# Setup the JVM
JAVA="java"
# if [ "x$JAVA_HOME" != "x" ]; then
#     JAVA=$JAVA_HOME/bin/java
# else
#     JAVA="java"
# fi

# Setup the classpath
CP="$WORK_HOME/$MAIN_JAR"

# Execute the JVM
exec "$JAVA" -cp "$CP" $MAIN_CLASS "[email protected]"

主要脚本如上。

时间: 2024-10-01 22:39:01

【树莓派】在树莓派上制作开机自启动程序及服务2的相关文章

Android开机自启动程序

背景知识:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为 android.intent.action.BOOT_COMPLETED.只要在程序中“捕捉”到这个消息,再启动之即可.记住,Android框架说:Don''t call me, I''ll call you back.我们要做的是做好接收这个消息的准备,而实现的手段就是实现一个BroadcastReceiver. 1.界面Activity,BootStartDemo.j

开机自启动程序 注册表

1 #include "iostream" 2 #include "afx.h" 3 #include "atlbase.h" 4 #include "cstring" 5 using namespace std; 6 7 void main(){ 8 FreeConsole(); 9 HKEY hKey; 10 //找到系统的启动项 11 LPCTSTR lpRun = "Software\\Microsoft\\

系统开启UAC情形下开机自启动程序如何以管理员权限启动

题记:本文阐述的是在Windows系统开启UAC的情况下,开机自启动程序需要以管理员权限启动,系统弹出UAC对话框,用户同意的情形下启动程序 处理步骤: 1.判断Windows系统版本(Windows XP以上系统才有UAC,不包括Windows XP):若系统版本高于Windows XP,则执行步骤2: 2.判断系统是否开启UAC:若开启,则执行步骤3: 3.判断进程当前是否是以管理员权限启动:若不是管理员权限,则执行步骤4: 4.以特殊参数调用ShellExecuteEx函数,重新启动进程.

android项目 之 来电管家(8) ----- 添加开机自启动监听服务

现在大多数的应用都会开机自启动,来电管家更是如此,添加了开机自启动监听服务后,开机后即使你没有打开来电管家应用程序,一样可以拦截来电信息. 开机自启动Activity或Service的方法: 主要步骤: 1.  要有开机要启动的service或activity(这里开机要启动的当然就是ListenService了) 2. 编写一个BroadcastReceiver用以捕获ACTION_BOOT_COMPLETED这条广播,并在捕获之后启动我们要启动的Activity或service. BootC

树莓派实战3:配置开机自启动

接上 4. 配置开机自启动,修改rc.local 或者配置init.d ,这里修改rc.local sudo nano /etc/rc.local 如果你的mail.py在Desktop 则在exit 0上面一行添加 cd /home/pi/Desktop 然后 python mail.py 然后保存 退出 此时sudo reboot,等树莓派重新启动好了,你也会收到一封邮件 版权声明:本文为博主原创文章,未经博主允许不得转载.

Win8.1开机自启动程序

动机: 开机自启动goagent与锐捷 问题: goagent没有自启动选项;锐捷开启"登录后启动"却一直没有启动 解决方案: 使用计划任务启动goagent+彻底关闭UAC使锐捷自启动生效 1.使用计划任务启动goagent 1.控制面板->系统和安全->计划任务 2.创建任务,随意输入名称 3.常规选项卡: 更改用户或组,输入当前用户;选中"使用最高权限运行" 4.触发器选项卡: 新建,开始任务选择登录时,确定 5.操作选项卡: 新建,在程度或脚本中

Ubuntu14.04设置开机自启动程序

启动应用程序可以帮助我们选择开机启动项.但是在Ubuntu14.04通过Dash输入startup 找不到启动应用程序了,可以通过在控制台输入以下内容: 1 gnome-session-properties

在linux上添加开机自启动脚本的简单方法

我的电脑是联想B460,现在长期跑debian系统,但是触摸板实在是个令人抓狂的存在,每次开机都要手动FN+F6关闭,这实在太繁琐了,于是上网收到相关的信息: 终端输入如下命令可关闭触摸板: sudo modprobe -r psmouse 终端输入如下命令可打开触摸板: sudo modprobe psmouse 于是想到把这个命令写成一个小脚本,开机时自启动就可以了 由于要sudo,所以要输入密码,如果脚本自动输入密码就好了,于是搜索得到: echo "your passwd"|s

Linux上mongodb开机自启动

1.下载MongoDB 2.安装MongoDB(安装到/usr/local下) 1 tar -xzvf mongodb-linux-x86_64-2.4.9.tgz 2 mv mongodb-linux-x86_64-2.4.9 mongodb 3 cd mongodb 4 mkdir db 5 mkdir logs 6 cd bin 7 vi mongodb.conf 把下面的代码复制到mongodb.conf中,保存1 dbpath = /usr/local/mongodb/db 2 log