Linux에서 컴퓨터를 켠 후 소프트웨어 자체 시작 구현

Linux 소프트웨어의 자체 시작을 구현하려면 4개의 파일이 필요합니다.

첫 번째 [displayScreen.desktop] 파일인 .데스크톱 파일은 일반적으로 사용되는 런처라고도 하는 프로그램 실행을 위한 바로가기입니다. 시작을 위한 파일, 내용은 다음과 같습니다

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

두 번째 파일 [DisplayScreen_Daemon.sh]는 소프트웨어의 시작 여부를 감지하는 데몬 스크립트 파일입니다. 소프트웨어가 종료되면 이를 감지하여 자동으로 다시 시작합니다. 원하는 효과를 직접 변경할 수 있습니다. 스크립트 코드는 10마다 보정됩니다. 초.소프트웨어 프로세스를 변경합니다.프로세스가 없으면 소프트웨어를 불러옵니다.

실행할 프로그램 이름을 지정해야 합니다.APP_NAME, 경로APP_PATH

#! /bin/sh

#获取当前路径
currentPath=$(cd `dirname $0`; pwd)

#进程名字可修改
APP_NAME=DisplayScreen
APP_PATH=${currentPath}/bin/${APP_NAME}

while true ; do
    #用ps获取$PRO_NAME进程数量
    APP_NUM=`ps aux | grep -w ${APP_NAME} | grep -v grep |wc -l`
  	 #少于1,重启进程
  	 if [ ${APP_NUM} -lt 1 ];then
        echo "${APP_PATH} was killed"
        ${APP_PATH} &
    #大于1,杀掉所有进程,重启
    elif [ ${APP_NUM} -gt 1 ];then
        echo "more than 1 ${APP_PATH},killall ${APP_PATH}"
        pkill -9 $APP_NAME
        ${APP_PATH} &
    fi
    #kill僵尸进程
#	ps aux | grep -w DisplayScreen | grep T | grep -v grep | wc -l
#	ps -A -ostat,cmd | grep -e '^[zZ]' | grep -w DisplayScreen | grep -v grep | wc -l
    NUM_STAT=`ps -A -ostat,cmd | grep -e '^[zZ]' | grep -w ${APP_NAME} | grep -v grep | wc -l`
    if [ ${NUM_STAT} -gt 0 ];then
		 echo "pkill -9 ${APP_NAME}"
        pkill -9 ${APP_NAME}
        ${APP_PATH} &
    fi
    sleep 10s
   
done
 
exit 0

#备注 
# grep T 含义:T为输出行前缀控制,确保实际行内容的第一个字符位于制表位上,以便选项卡看起来很正常,好像不加也没影响
# grep -v grep 含义:很简单 ,为了去除包含grep的进程行 ,避免影响最终数据的正确性 

세 번째 파일 [install.sh]는 런처를 설치하기 위한 스크립트로, 스크립트를 실행한 후 시작 디렉터리에 런처가 복사되고, 부팅 시 자동으로 런처가 실행됩니다.

#!/bin/sh

#设置开机自动启动
echo "开始设置开机启动"
sudo cp ./DisplayScreen.desktop /etc/xdg/autostart

echo "安装完毕,重启后生效"

네 번째 파일 [uninstall.sh]는 런처를 제거하기 위한 스크립트로, 실행 후 부팅 후 소프트웨어가 자동으로 시작되지 않습니다.

#!/bin/sh

#结束所有程序
sudo killall DataAcq
#移除开机自动启动
echo "移除开机自动启动"
sudo rm /etc/xdg/autostart/DisplayScreen.desktop

echo "DisplayScreen卸载完毕"

자체 시작될 내 프로그램은 bin 디렉토리에 있습니다.

스크립트를 실행하고 보호하면 소프트웨어가 시작됩니다.

런처를 생성하고 부트 영역에 런처를 배치하는 것이 원칙이며, 부팅 후 이 영역에 있는 모든 런처가 실행되므로 이 데몬을 실행하려면 런처 [DisplayScreen.desktop]의 내용만 설정하면 됩니다. [DisplayScreen_Daemon.sh] 스크립트를 사용하세요.

이제 끝났습니다!

Guess you like

Origin blog.csdn.net/qq_44667165/article/details/134250041