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

news2024/11/19 1:19:12

测试脚本:

在这里插入图片描述

一、 向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.coloradmin.cn/o/1642384.html

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

相关文章

设计模式之前端控制器模式

想象一下,你的Java Web应用是个交响乐团,每个功能模块是乐手,而用户请求就像是一首首待演绎的曲目。在这场音乐盛宴中,谁来保证演出的流畅与协调?答案就是——前端控制器模式!它如同乐队的指挥,…

ORAN C平面优化

使用section扩展6的C平面优化 在时域和频域中,都可以使用section扩展6进行非连续PRB分配。Section扩展6有两个位掩码:symbolMask和rbgMask。使用symbolMask可以选择一个slot内任意的symbol子集。使用rbgMask可以选择startPrbc和(startPrbc …

【Linux】搭建私有yum仓库(类阿里云)

在搭建本地yum仓库并配置国内镜像阿里云源中了解yum源 yum : Yellow dog Updater,Modified,是一种基于rpm包的自动升级和软件包管理工具。yum能从指定的服务器自动下载rpm包并安装,自动计算出程序之间的依赖关系和软件安装的步骤&…

golang学习笔记(内存模型和分配机制)

操作系统的存储管理 虚拟内存管理 虚拟内存是一种内存管理技术,它允许操作系统为每个进程提供一个比实际物理内存更大的地址空间。这个地址空间被称为虚拟地址空间,而实际的物理内存则被称为物理地址空间。使用虚拟内存有以下几点好处: 内…

牛客热题:两个链表的第一个公共节点

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:两个链表的第一个公共节点题目链…

【Linux】进程的隔离和控制:namespace 隔离、cgroup 控制

文章目录 五、namespace 隔离dd -- 读取、转换并输出数据mkfs -- 格式化文件系统df -- 显示文件系统磁盘使用情况mount -- 加载文件系统到指定的加载点unshare -- 创建子进程,同时与父程序不共享namespace一个 demo 六、cgroup(Control Group) 相关命令pidstat -- 监…

中药辨别二

声明:参考懒兔子公益课,参考网络资料和部分网络图片整理而成,仅供学习使用,不提供商业活动价值,文章描述的中药仅供学习,请在专业医师或专业医生指导下使用药材,擅自或其他情况下使用&#xff0…

使用Python实现二维码生成工具

二维码的本质是什么? 二维码本质上,就是一段字符串。 我们可以把任意的字符串,制作成一个二维码图片。 生活中使用的二维码,更多的是一个 URL 网址。 需要用到的模块 先看一下Python标准库,貌似没有实现这个功能的…

2024网络安全面试问题宝典(4万字)

2024网络安全厂商面试问题宝典(4万字) 目录 评分标准网络基础问题 TCP建立连接要进行3次握手(syn-syn,ack-ack),而断开连接要进行4次(fin-ack-fin-ack)TCP,UDP区别:安全常用的协议…

ZFile-开源在线网盘(列目录)程序,可以将你各个存储类型的存储源,统一到一个网页中查看、预览、维护

ZFile 是什么? ZFile 是一个适用于个人的在线网盘(列目录)程序,可以将你各个存储类型的存储源,统一到一个网页中查看、预览、维护,再也不用去登录各种各样的网页登录后管理文件,现在你只需要在 ZFile 中使用。你只需要…

排序算法之堆排序

首先在了解堆排序之前我们先来回顾一下什么叫做堆吧! 基本概念 堆(Heap):是一种特殊的完全二叉树,其中每个节点的值都大于或等于(大顶堆)或小于或等于(小顶堆)其子节点的…

Vue 组件间的数据绑定

在Vue组件中,v-model指令可以用来实现双向数据绑定。它用于将组件的属性和父组件中的数据进行双向绑定,使得当属性的值改变时,父组件中的数据也会相应地改变,并且当父组件中的数据改变时,属性的值也会相应地改变。 目…

国内各种免费AI聊天机器人(ChatGPT)推荐(中)

作者主页:点击! 国内免费AI推荐(ChatGPT)专栏:点击! 创作时间:2024年4月29日15点20分 随着人工智能技术的不断发展,AI聊天机器人已经逐渐融入我们的日常生活。它们可以提供各种服务,例如聊天、…

python爬虫实战

import requests import json yesinput(输入页数:) yesint(yes)headers {"accept": "application/json, text/plain, */*","accept-language": "zh-CN,zh;q0.9","content-type": "application/json",…

文件同步--Resilio Sync

近期有很多文本处理工作,每次通过社交软件发来发去,比较麻烦,还是希望能够自动同步,方便快捷,然后师弟就给我推荐了Resilio Sync,目前配置完毕,使用下来感受良好,mark一下。 特点 跨…

喝汽水问题

问题描述: 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。解题思路: 变量解释:money总金额数,price汽水单价,excha…

环形列表 题目分析

一、题目链接:. - 力扣(LeetCode) 二、思路 1.使用快慢指针,快指针一次走两步,慢指针一次走一步,二者相对速度为1 2.当慢指针刚好进入环时,设二者的相对距离为N 3.如果链表中存在环&#xff…

智能私信神器,转化率飙升的秘密!

在当今信息爆炸的时代,企业和商家面临着巨大的竞争压力,如何有效地吸引潜在客户、提高客户转化率成为摆在每一位市场营销人员面前的难题。随着人工智能技术的不断发展,智能私信软件应运而生,为企业提供了一个高效、便捷的解决方案…

【OpenNJet下一代云原生之旅】

OpenNJet下一代云原生之旅 1、OpenNJet的定义OpenNJet架构图 2、OpenNJet的特点性能无损动态配置灵活的CoPilot框架支持HTTP/3支持国密企业级应用高效安全 3、OpenNJet的功能特性4、OpenNJet的安装使用编译安装配置yum源创建符号连接修改配置编译 5、通过 OpenNJet 部署 WEB SE…

[CISCN 2018]sm

目录 1.题目 3.解题 4.参考 1.题目 题目链接 from Crypto.Util.number import getPrime,long_to_bytes,bytes_to_long from Crypto.Cipher import AES import hashlib from random import randint def gen512num():order[]while len(order)!512:tmprandint(1,512)if tmp n…