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阶段启动
-
创建服务脚本
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
-
创建软连接
– 设置服务开机自启(默认条件) :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 桌面启动后 启动
- 创建启动脚本:
appInstall.sh
如果程序启动需要依赖,可以在脚本中添加延迟启动:sleep 3
等待3秒 - 程序所在文件夹创建快捷方式:
AppName.desktop
[Desktop Entry] Version=1.0.0 Name=TIPS Exec=AppPath/AppInstakk.sh Type=Application
- 修改文件属性:
chmod +x AppName.desktop
- 复制快捷方式到开机自启文件夹:
cp AppName.desktop /etc/xdg/autostart
若想取消自启可以删除此文件
注意:
1.此方式启动时,当前路径默认为用户目录(脚本启动状态当前目录为程序所在目录)
2.不同桌面系统,开机自启文件夹路径有所差别