linux下软件开机自启设置

1.ubuntu

1. 拷贝程序包

2. 配置动态库

2.1 打包动态库

cd appDir
vim pack.sh

#!/bin/bash
exe="appname"
des="desDir"
deplist=$(ldd $exe | awk '{if (match($3, "/")) {printf("%s "), $3}}')
$echo $deplist
cp $deplist $des

2.2 添加环境变量

#!/bin/bash
touch /etc/ld.so.conf.d/test.conf
echo "path" >> /etc/ld.so.conf.d/test.conf
ldconfig -v

3. 设置程序启动脚本

cd appDir
vim app_install.sh

#!/bin/bash
cd appDir
appname=appName
chmod +x $appname
./$appname 

4. 设置启动阶段

可选择如下几个阶段操作(任选其一)

4.1 在rc.local阶段启动

vim /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will exit 0 on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/bin/bash /appDir/app_install.sh >/var/app.log

exit 0

4.2 在init.d阶段启动

  1. 创建服务脚本
    vim /etc/init.d/appService

    #!/bin/bash
    ### BEGIN INIT INFO
    # Default-Start: 0 2 3 4 5
    # Short-Description: 
    ### END INIT INFO
    
    SERVER_NAME=appName
    SERVER_DIR=appDir
    SERVER_ARGS=""
    
    BASE_DIR=$(dirname $0)
    PID=$(dirname $0)/$(basename $0 .sh)
    
    `source /etc/profile`
    
    status()
    {
            if [ -f $PID ]
            then
                    echo "---Started, PID file: $(cat $PID) [$PID]---"
            else
                    echo "---No PID file---"
            fi
    }
    
    start()
    {
            if [ -f $PID ]
            then
                    `ldconfig -v`
                    echo "start $SERVER_NAME"
                    `cd /opt/tips`
                    `nohup $SERVER_DIR/$SERVER_NAME >/root/log 2>&1 &`
                    #$SERVER_DIR/$SERVER_NAME >/root/log 2>&1
                    echo "start $SERVER_NAME success!"
            else
                    echo "--No PID file---"
            fi
    }
    
    stop()
    {
            if [ -f $PID ]
            then
                    echo "stop $SERVER_NAME"
                    kill -9 `ps -ef | grep -v grep | grep $SERVER_NAME | awk '{print $2}'`
                    #kill -9 `cat $PID`
                    #sleep 1
                    echo "stop $SERVER_NAME success!"
            else
                    echo "---No PID file---"
            fi
    }
    
    case "$1" in
            start)
                    start
                    ;;
            stop)
    			stop
                    ;;
            restart)
                    stop
                    start
                    ;;
            status)
                    status
                    ;;
            *)
                    echo "usage: $0 {start|stop|restart}"
                    exit 0
                    ;;
    
    esac
    exit
    
  2. 创建软连接
    – 设置服务开机自启(默认条件) :update-rc.d appServicce defaults
    – 移除脚本:update-rc.d -f appService remove
    update-rc.d [-n] [-f] name remove
    update-rc.d [-n] name default [NN | SS KK],NN表示执行序号(0-99),SS表示启动时的执行序号,KK表示关机时的执行序号,SS、KK主要用于在脚本直接的执行顺序上有依赖关系的情况下。
    – 手动设置
    ln -s /etc/init.d/appService /etc/rcX.d/S99appService
    ln -s /etc/init.d/appService /etc/rcX.d/K99appService

注意:

  • 查看当前系统运行级别: runlevel
  • 在init.d阶段启动启动,可能动态库没有加载,可在服务脚本中优先加载动态库,如果有未知依赖项,可能会失败。
  • 在rc.local阶段启动,linux启动后执行程序,无以上风险

4.3 桌面启动后 启动

  1. 创建启动脚本:appInstall.sh
    如果程序启动需要依赖,可以在脚本中添加延迟启动:sleep 3 等待3秒
  2. 程序所在文件夹创建快捷方式:AppName.desktop
    [Desktop Entry]
    Version=1.0.0
    Name=TIPS
    Exec=AppPath/AppInstakk.sh
    Type=Application
    
  3. 修改文件属性:chmod +x AppName.desktop
  4. 复制快捷方式到开机自启文件夹:cp AppName.desktop /etc/xdg/autostart
    若想取消自启可以删除此文件
    注意
    1.此方式启动时,当前路径默认为用户目录(脚本启动状态当前目录为程序所在目录)
    2.不同桌面系统,开机自启文件夹路径有所差别
上一篇:ECMAScript6.0简介


下一篇:linux ***清理过程