树莓派-服务自启配置方式测试

2024-05-05 01:28

本文主要是介绍树莓派-服务自启配置方式测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

测试脚本:

在这里插入图片描述

一、 向rc.local文件添加启动代码(未找到,不测试)

修改/etc/rc.local文件,在文件中exit 0之前添加代码在启动时都会被执行,如:su pi -c “exec /home/pi/testboot.sh”

其中:su pi表示切换至pi用户执行,-c表示执行后恢复原来的用户,exec /home/pi/testboot.sh表示执行脚本test.sh,且此脚本已经通过chmod增加了执行权限;

注意:系统启动时执行代码时使用的是root用户权限,如不指定pi用户,可能因为权限问题导致test.sh脚本执行失败。同时需要知晓,rc.local文件当中配置的执行脚本的运行耗时包括在系统启动时间中,可能会导致系统启动变慢。

使用过程:在设备内核启动后,进入操作系统时执行启动代码,当需要执行获取系统启动后获取的配置信息时,可能导致执行结果与预期不同。如,进入操作系统之后才能获取ip地址,程序应该延迟执行或放在桌面启动后再执行。

一些linux版本可能已经取消了rc.local文件。

二、 将程序作为服务启动

/etc/init.d/目录下新建一个服务脚本文件,比如与需要执行脚本同名的脚本文件testboot,文件内容:

#!/bin/sh
#/etc/init.d/testboot
###BEGIN INIT INFO
#Provides:testboot
#Required-Start:$remote_fs $syslog
#Required-Stop:$remote_fs $syslog
#Default-Start:2 3 4 5
#Default-Stop:0 1 6
#Short-Description:testboot
#Description:This service is used to start my application
###END INIT INFO
case$1in
start)
echo “start your app here.”
su pi -c “exec ~/testboot.sh”
;;
stop)
echo “stop your app here.”
;;
*)
echo “Usage: service testboot start|stop”
exit 1
;;
esac
exit 0

设置脚本权限:sudo chmod 777 /etc/init.d/testboot

最后将该脚本作为服务设置开机自动加载:sudo update-rc.d testboot defaults

命令行重启测试:sudo reboot

注意:服务在系统启动后才执行,与系统启动无关,不会拖慢系统启动。

使用过程:/etc/init.d/ 目录通常用于存储SysVinit(System V Initialization)Upstart等较旧初始化系统的启动脚本。

使用sudo service testboot status查看服务执行日志:

在这里插入图片描述

三、 通过桌面启动(不使用,不测试)

在加载了桌面后启动自定义程序,在/home/pi/.config/目录下新建一个名为autostart的文件夹,在autostart目录下新建testboot.desktop文件,文件名随意但是后缀必须是.desktop

文件内容如下:

[Desktop Entry]
Type=Application
Name=testboot
NoDisplay=true
Exec=/home/pi/testboot.sh

命令行重启测试:sudo reboot

注意:此方法除了依赖桌面以外,如果开启多个桌面则会多次执行自定义程序。如,多次登陆远程桌面,脚本就会执行多次。

使用过程:未使用

四、 使用systemctl设置服务

/usr/lib/systemd/system/目录下新建文件testboot.service文件,如果system目录不存在需要再创建。

testboot.service文件内容如下:

[Unit]
Description=testboot
[Service]
Type=oneshot
ExecStart=/home/pi/testboot.sh
[Install]
WantedBy=multi-user.target

此文件直接指定启动文件的路径,无法指定pi用户执行,所以只能在root用户下执行。

设置服务自启动:sudo systemctl enable testboot.service

注意:此方法与方法二当中的/etc/init.d/目录下创建服务脚本类似都是通过服务启动,所以两种方法中不能使用同个服务名。

使用过程:/usr/lib/systemd/system/ 目录用于systemd,这是现代Linux系统中广泛使用的初始化系统和服务管理器。尽管systemd是现代的初始化系统,但许多Linux发行版仍然提供对SysVinit的兼容性支持,允许在/etc/init.d/目录下放置启动脚本,并通过systemd的兼容性层来管理它们。

使用此方法设置启动服务可能失败,可以通过命令journalctl -u testboot.service查看启动执行日志排查问题(其中testboot.service是启动服务的.service文件名):

在这里插入图片描述

或者使用sudo service testboot status

在这里插入图片描述

五、 总结

执行脚本需要保证依赖其他服务则必须等待其他服务加载完才能正常启动,可以通过延时后再启动。

这篇关于树莓派-服务自启配置方式测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960522

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_