• linux下实现电脑开机后软件自启动


    实现linux的软件自启动,需要四个文件

    第一个【displayScreen.desktop】文件,.desktop文件就是一个用来运行程序的快捷方式,也叫启动器,常用来自启动用的文件,内容如下

    1. [Desktop Entry]
    2. #要执行的脚本位置
    3. Exec=/home/yicaobao/test/mySoftware/DisplayScreen_Daemon.sh
    4. #图标
    5. Icon=/home/yicaobao/test/mySoftware/resource/logo/discreen-IV.png
    6. Name=DisplayScreen
    7. Name[zh_CN]=DisplayScreen
    8. Terminal=false
    9. Type=Application
    10. X-Deepin-Vendor=user-custom

    第二个文件【DisplayScreen_Daemon.sh】为检测软件是否启动的守护脚本文件,如果软件被杀死了,会被检测到,自动重启,可以自己改想要的效果,一下脚本代码为10s校测一次改软件进程,如果进程不存在就拉起软件

    需要指定下要运行的程序名APP_NAME,路径APP_PATH

    1. #! /bin/sh
    2. #获取当前路径
    3. currentPath=$(cd `dirname $0`; pwd)
    4. #进程名字可修改
    5. APP_NAME=DisplayScreen
    6. APP_PATH=${currentPath}/bin/${APP_NAME}
    7. while true ; do
    8. #用ps获取$PRO_NAME进程数量
    9. APP_NUM=`ps aux | grep -w ${APP_NAME} | grep -v grep |wc -l`
    10. #少于1,重启进程
    11. if [ ${APP_NUM} -lt 1 ];then
    12. echo "${APP_PATH} was killed"
    13. ${APP_PATH} &
    14. #大于1,杀掉所有进程,重启
    15. elif [ ${APP_NUM} -gt 1 ];then
    16. echo "more than 1 ${APP_PATH},killall ${APP_PATH}"
    17. pkill -9 $APP_NAME
    18. ${APP_PATH} &
    19. fi
    20. #kill僵尸进程
    21. # ps aux | grep -w DisplayScreen | grep T | grep -v grep | wc -l
    22. # ps -A -ostat,cmd | grep -e '^[zZ]' | grep -w DisplayScreen | grep -v grep | wc -l
    23. NUM_STAT=`ps -A -ostat,cmd | grep -e '^[zZ]' | grep -w ${APP_NAME} | grep -v grep | wc -l`
    24. if [ ${NUM_STAT} -gt 0 ];then
    25. echo "pkill -9 ${APP_NAME}"
    26. pkill -9 ${APP_NAME}
    27. ${APP_PATH} &
    28. fi
    29. sleep 10s
    30. done
    31. exit 0
    32. #备注
    33. # grep T 含义:T为输出行前缀控制,确保实际行内容的第一个字符位于制表位上,以便选项卡看起来很正常,好像不加也没影响
    34. # grep -v grep 含义:很简单 ,为了去除包含grep的进程行 ,避免影响最终数据的正确性

    第三个文件【install.sh】为安装启动器的脚本,执行脚本后,会将启动器拷贝到启动目录下,开机会自动执行这个启动器

    1. #!/bin/sh
    2. #设置开机自动启动
    3. echo "开始设置开机启动"
    4. sudo cp ./DisplayScreen.desktop /etc/xdg/autostart
    5. echo "安装完毕,重启后生效"

    第四个文件【uninstall.sh】为卸载启动器的脚本,执行后,开机后软件就不会自启动了

    1. #!/bin/sh
    2. #结束所有程序
    3. sudo killall DataAcq
    4. #移除开机自动启动
    5. echo "移除开机自动启动"
    6. sudo rm /etc/xdg/autostart/DisplayScreen.desktop
    7. echo "DisplayScreen卸载完毕"

    我的要自启动的程序在bin目录下

    执行下,守护脚本,软件就起来了

    原理就是,建立一个启动器,把启动器放到开机启动区域,开机后,会把这个区域的启动器都执行一遍,所以我们只需要把启动器【DisplayScreen.desktop】的内容设为执行这个守护脚本【DisplayScreen_Daemon.sh】就行了

    大功告成!

  • 相关阅读:
    大三Web课程设计(可以很好的应付老师的作业) 家乡主题网页设计 我的家乡广州
    Clion 使用 (Rust)
    如何VisualSVN备份到不同Windows服务器中
    Android 接口的default 方法运行时报错AbstractMethodError
    ASO优化优缺点各是什么?带你学会常见的优化手段
    Java经典问题解答(9题)
    仿IOS 对话框和底部弹出框
    High-variance latent spaces
    关联查询系统
    Android studio 实现生成二维码和扫描二维码
  • 原文地址:https://blog.csdn.net/qq_44667165/article/details/134250041