linux开发板开机启动向日葵

硬件:orangepi 5 pro

操作系统:ubuntu 20.4 lts

安装向日葵

根据我的实测,arm架构的ubuntu系统只能安装向日葵提供的麒麟系统的那个版本,具体安装方式官网下载页面有

允许任意用户连接到 X11

使用root用户登录后打开终端输入一下命令,至于X11是什么可以自行搜索,我也一知半解,可以理解为一个图形界面的后端接口

powershell 复制代码
xhost +          #允许任意用户连接到X11

编写python脚本

python 复制代码
# coding:utf-8 
import subprocess 
import threading
import time
import os  # 导入 os 模块
from datetime import datetime  # 导入 datetime 模块

def is_connected():
    try:
        output = subprocess.check_output("ping -c 1 www.baidu.com", shell=True)
        return "1 packets transmitted, 1 received" in output.decode()
    except subprocess.CalledProcessError:
        return False

def task_1():
    # 设置 XDG_RUNTIME_DIR 环境变量
    os.environ['XDG_RUNTIME_DIR'] = '/run/user/1000'  # 替换为您的运行时文件目录
    
    isOpenXRK=False
    xCount=0        #计数
    while(True):  
        print("线程依然活着")
        time.sleep(3)
        xCount=xCount+1
        if xCount<10:
            continue
        else:
            xCount=0
        # 调用函数来验证联网状态
        if is_connected():
            print("已联网")
            if not isOpenXRK:
                # 设置 DISPLAY 环境变量
                #os.environ['DISPLAY'] = ':0'  # 设置显示服务器地址为默认值,经过测试这句可以不要
                
                # 启动进程并等待其完成
                process = subprocess.Popen(['/usr/local/sunlogin/bin/sunloginclient'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
                stdout, stderr = process.communicate()
                # 打印输出和时间
                print("向日葵客户端输出:", stdout.decode())
                print("向日葵客户端错误:", stderr.decode())
                print("时间:", datetime.now().strftime("%Y-%m-%d %H:%M:%S"))  # 输出当前时间,精确到秒
                isOpenXRK=True
                # 如果有错误,打印错误信息
                if stderr:
                    print(stderr.decode())
                
                
        else:
            print("未联网")
            print("等待三秒 ")
        

if __name__== "__main__" :
    task1=threading.Thread(target=task_1,args=())
    task1.start()
    print("开启了线程")

使用supervisor管理该脚本开机启动

supervisor的使用方法这里就不赘述了,网上可以搜到很多,是一个进程管理工具

最后贴一张效果图,pi放在家里,刚reboot过,我在外面用外网连的

相关推荐
大树884 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质5 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush45 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5205 小时前
Linux 11 动态监控指令top
linux
Inhand陈工6 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智6 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
麦聪聊数据6 小时前
数据服务化时代:企业数据能力输出的核心路径
数据库
不会C语言的男孩6 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_6 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化