linux开发板开机启动向日葵

硬件:orangepi 5 pro
操作系统:ubuntu 20.4 lts

安装向日葵

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

允许任意用户连接到 X11

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

xhost +          #允许任意用户连接到X11

编写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 Falsedef task_1():# 设置 XDG_RUNTIME_DIR 环境变量os.environ['XDG_RUNTIME_DIR'] = '/run/user/1000'  # 替换为您的运行时文件目录isOpenXRK=FalsexCount=0        #计数while(True):  print("线程依然活着")time.sleep(3)xCount=xCount+1if xCount<10:continueelse: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过,我在外面用外网连的

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2981844.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

图形界面挂了?教你如何纯命令行下快速安装CentOS 7

在某些特定的系统或软件环境下&#xff0c;如使用 Parallels Desktop 18&#xff08;PD18&#xff09;虚拟化软件安装较老版本的操作系统&#xff08;如 CentOS 7&#xff09;&#xff0c;可能会遇到只能通过命令行进行安装的情况。这通常是由于内核版本与图形安装器的兼容性问…

docker系列7:docker安装ES

目录 传送门 Docker安装ES 确定版本 拉取镜像 执行拉取ES镜像 查看ES镜像 运行ES 创建一个新的docker网络 启动一个Elasticsearch容器 查看运行结果 ES启动内存不足 访问ES 公网访问 传送门 docker系列1&#xff1a;docker安装 docker系列2&#xff1a;阿里云镜…

血的教训之虚拟机重装[包含一系列虚拟机,c++,python,miniob配置]

一切都要从头开始&#xff0c;由于脑袋糊涂&#xff0c;没看到是虚拟机的文件&#xff0c;直接一口气全删掉了&#xff0c;哎&#xff01;&#xff01;数据恢复后发现也不行&#xff0c;磁盘文件还是缺失了一部分&#xff0c;只能重新再来了。 等待ing 看不到按钮&#xff0c;按…

前端CSS基础8(盒子模型(margin、border、padding、content))

前端CSS基础8&#xff08;盒子模型&#xff08;margin、border、padding、content&#xff09;&#xff09; CSS盒子模型CSS中常用的长度单位元素的分类&#xff0c;各个元素的显示模式修改元素的显示模式&#xff08;类型&#xff09;盒子模型的组成部分盒子内容区-contentCSS…

验证线缆(汽车线束、网线、多芯线)破损或断开与正常线缆的区别在哪里?依AEM CV-100 k50测试仪

工厂产线生产的线缆&#xff08;汽车线束、网线、多芯线&#xff09;做成成品&#xff0c;即2端都安装好了模块。在这种情况下如何快速的判定此条线缆是合格的呢&#xff0c;此处的合格为物理层面上的合格&#xff08;不会出现开路、短路&#xff09;&#xff0c;也就是最基本保…

Ansible自动化运维工具主机清单配置

作者主页&#xff1a;点击&#xff01; Ansible专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月24日12点21分 Ansible主机清单文件用于定义要管理的主机及其相关信息。它是Ansible的核心配置文件之一&#xff0c;用于Ansible识别目标主机并与其建立连接。 …

Leetcode_相交链表

✨✨所属专栏&#xff1a;LeetCode刷题专栏✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 题目&#xff1a; 题解&#xff1a; 看到这个题目首先我们要排除链表逆置的想法&#xff0c;如图、因为c1节点只有一个next指针&#xff0c;逆置后不可能同时指向a2和b3节点。 其次有的的同学…

刷代码随想录有感(44):对称二叉树

题干&#xff1a; 代码&#xff1a; class Solution { public:bool compare(TreeNode* left, TreeNode* right){//传入左右子树if(left NULL && right ! NULL) return false;//子else if(left ! NULL && right NULL) return false;//子else if(left NULL &…

CentOS-7安装Mysql并允许其他主机登录

一、通用设置&#xff08;分别在4台虚拟机设置&#xff09; 1、配置主机名 hostnamectl set-hostname --static 主机名2、修改hosts文件 vim /etc/hosts 输入&#xff1a; 192.168.15.129 master 192.168.15.133 node1 192.168.15.134 node2 192.168.15.136 node33、 保持服…

【draw.io的使用心得介绍】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

你的RPCvs佬的RPC

一、课程目标 了解常见系统库的hook了解frida_rpc 二、工具 教程Demo(更新)jadx-guiVS CodejebIDLE 三、课程内容 1.Hook_Libart libart.so: 在 Android 5.0&#xff08;Lollipop&#xff09;及更高版本中&#xff0c;libart.so 是 Android 运行时&#xff08;ART&#x…

LeetCode_链表的回文结构

✨✨所属专栏&#xff1a;LeetCode刷题专栏✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 题目描述&#xff1a; 对于一个链表&#xff0c;请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法&#xff0c;判断其是否为回文结构。给定一个链表的头指针A&#xff0c;请返回一个bo…

谷歌、Meta、OpenAI 联同其他行业巨头共同打击 AI 产生的儿童性虐待图像|TodayAI

谷歌、Meta、OpenAI 等全球科技巨头已联合行动&#xff0c;与其他行业领导者共同宣布&#xff0c;将加强措施&#xff0c;防止人工智能技术被用来制造或传播儿童性虐待图像。 为打击儿童性虐待材料&#xff08;CSAM&#xff1a;child sexual abuse material&#xff09;的传播…

wfs 文件存储系统 v1.0.5

前言&#xff1a;wfs 是高性能海量小文件存储系统 &#xff0c;支持Linux&#xff0c;Windows&#xff0c;Macos&#xff0c;FreeBSD等系统&#xff0c; 可以高效地进行文件存储和读取。wfs 支持文件压缩归档&#xff0c;并提供简洁的数据读取方式和文件后台管理和 以及归档文件…

《设计模式之美》第三章 总结

《设计模式之美》总结 第三章 设计原则 3.1 单一职责原则&#xff1a;如何判定某个类的职责是否单一 3.1.1 单一职责原则的定义和解读 定义&#xff1a;一个类或模块只负责完成一个职责&#xff08;功能&#xff09; 含义&#xff1a;不要设计功能大而全的类或模块&#xff…

汽车纵染压制专用液压机比例阀放大器

汽车纵染压制专用液压机比例阀放大器是一种专门用于汽车纵梁拉伸工艺的设备&#xff0c;它也可以用于其他金属薄板的压制成型及校正工艺。该类型的液压机通常具备独立的动力机构和电气系统&#xff0c;采用PLC技术进行控制&#xff0c;以确保操作的准确性和稳定性。除了纵梁拉伸…

【随想录】Day31—第八章 贪心算法 part01

目录 题目1: 455. 分发饼干1- 思路2- 题解⭐分发饼干 ——题解思路 题目2: 摆动序列1- 思路2- 题解⭐摆动序列 ——题解思路 题目3: 最大子数组和1- 思路2- 题解⭐ 最大子数组和 ——题解思路 题目1: 455. 分发饼干 题目链接&#xff1a;455. 分发饼干 1- 思路 贪心的思路&am…

Linux多进程(二)进程通信方式二 消息队列

消息队列是在两个进程之间传递二进制块数据的一种简单有效的方式。每个数据块都有一个特定的类型&#xff0c;接收方可以根据类型来有选择地接收数据&#xff0c;而不一定像管道和命名管道那样必须以先进先出的方式接收数据。 一、创建消息队列 创建一个消息队列或者获取一个…

Linux多进程(二)进程通信方式一 管道

管道的是进程间通信&#xff08;IPC - InterProcess Communication&#xff09;的一种方式&#xff0c;管道的本质其实就是内核中的一块内存(或者叫内核缓冲区)&#xff0c;这块缓冲区中的数据存储在一个环形队列中&#xff0c;因为管道在内核里边&#xff0c;因此我们不能直接…

Go语言并发赋值的安全性

struct并发赋值 type Test struct {X intY int }func main() {var g Testfor i : 0; i < 1000000; i {var wg sync.WaitGroup// 协程 1wg.Add(1)go func() {defer wg.Done()g Test{1, 2}}()// 协程 2wg.Add(1)go func() {defer wg.Done()g Test{3, 4}}()wg.Wait()// 赋值…