iMX8MQ如何通过Systemd服务实现应用自启动

飞凌i.MX8MQ平台

经过之前文章的介绍我们已经了解到OKMX8MQ-C开发板是基于ARM®Cortex-A53和Cortex-M4的内核,具有业界领先的音频、语音和视频处理功能。适用于5G终端、边缘计算网关HMI、V2X、RSU加油机血液分析仪、PCR、瘦主机等产品应用,以及医疗电力、工业自动化、智慧交通环境监测、智慧水务、能耗管理等行业应用

这次我们就来介绍一下如何通过systemd服务实现音频应用的自启。

什么是Systemd服务

Systemd是Linux下的一种init软件,由Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可证下开源发布。其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并以此实现系统初始化时,服务的并行启动,同时达到降低Shell系统开销的效果,最终代替现在常用的System V与BSD风格的init程序。传统的启动是内核启动完成后,首先执行的第一个进程是/sbin/init。如果要以systemd方式启动,首先让内核执行的第一个程序则是/lib/systemd/system或/usr/lib/systemdsystemd。

启动后,首先会去三个目录下找相应的配置文件,按优先级从高到底分别为

/etc/systemd/ /usr/lib/systemd/ /lib/systemd/

优先级高的配置文件会覆盖优先级低的配置文件。

Systemd自启应用

在此,小编介绍一种使用systemd方式来配置任意开机自启动程序的方法。

为了方便用户测试,小编在系统启动默认加载systemd服务autorun.service。

在/lib/systemd/system/autorun.sevice可以看到配置文件如下:

用户可以将自己的开机自启应用程序放到脚本/etc/autorun.sh 中,从而实现开机自启。

常见参数解析:


[unit]区块

Description 参数代表服务的描述(会在开机终端中打印)

Documentation: 文档地址

After参数表示在等号后边的服务起来以后再执行此服务,可以添加想要放在此服务之前的服务。

[service]区块

ExecStart 参数代表执行脚本的绝对路径,默认为/etc/autorun.sh 文件(用户可以自行修改)Type: 定义启动时的进程行为。其常用的几种方式为:

Type=simple:(默认值)systemd认为该服务将立即启动服务进程不会fork 。如果该服务要启动其他服务,就不要使用此类型启动了,除非该服务是socket激活型。

Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置RemainAfterExit=yes使systemd在服务进程退出之后仍然认为服务处于激活状态。

Type=idle:systemd 会等待所有任务处理完成后,才开始执行 idle 类型的单元。其他行为与Type=simple 类似。

[Install]区块 

WantedBy的值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名 + .wants后缀构成的子目录中。

RequiredBy的值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名+.required后缀构成的子目录中。

如果上述方式依然不能满足需求,也可以自己添加 system 服务。

首先将 OKMX8MQ-C开发板上电启动,在开发板终端中进入到/home/root/目录下,执行如下命令创建一个脚本文件,并修改权限:

echo '#!/bin/sh' >> /home/root/helloworld.sh

echo 'gst-play-1.0 /home/forlinx/audio/test.mp3' >> /home/root/helloworld.sh

chmod 777 /home/root/helloworld.sh

进入到“/lib/systemd/system/”目录下,并新建一个helloworld.service文件

命令如下:

cd /lib/systemd/system

vi helloworld.service

文件的内容如下:

[Unit]

Description=helloworld After=basic.service X.service thermal-zone-init.service

[Service]

ExecStart=/home/root/helloworld.sh

[Install]

WantedBy=multi-user.target


其中 Description 一行需写入服务名,ExecStart 需要写入可执行文件的绝对路径。

保存退出后,在终端上执行如下命令:

systemctl -f enable /lib/systemd/system/helloworld.service

此时即可将新添加的自启动服务生效,重启开发板后,此程序会自动运行,在默认端的音频即可听到音频输出。

—— —— —— ——

Systemd服务,可以实现并行启动并节约启动时间,是一个锦上添花的功能,希望这篇文章能提升您对OKMX8MQ-C开发板的使用体验。

(0)

相关推荐

  • 研发干货 | LS1028A 常见问题解决思路

    本文硬件平台以凌OK1028A-C开发板为基础进行示例,其他厂商开发平台,因各个厂家设置不同,可供参考使用.内容包含LS1028A开发板设置默认CPU调频策略,LA1028A开发板环境变量配置文件uE ...

  • RocketMQ系列:使用systemd管理nameserver和broker

    背景 前面RocketMQ系列中分享了如何在机器上搭建rocketmq,其中nameserver和broker都是以nohup的方式启动.在实际运维过程中,这种启动存在一个比较麻烦的问题:比如机器宕机 ...

  • linux操作系统入侵检查流程

    linux操作系统入侵检查流程

  • linux 开机自启动redis服务

    [Unit]Description=The redis-server Process ManagerDocumentation=https://redis.io/After=network.targe ...

  • linux下三种开机自启动服务的方式总结 | 《Linux就该这么学》

    方法1:.利用ntsysv命令进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图 在这个界面上进行操作即可,简要的操作说明: 括号中(*)代表默认开机启动,否则不会在开机的时候启动; ...

  • 服务直达用户,百度破局存量竞争

    五一假期,人潮汹涌,拥堵非常.根据百度五一搜索大数据显示,今年五一假期超2.5亿人出行,"旅游"相关搜索热度达疫后最高水平,机票.火车票.酒店预订等搜索均大幅上涨,中国铁路1230 ...

  • 国家基本公共卫生服务项目实施12年的看法与思考

    2009年7月10日,国务院及国家医改办在北京召开了国家基本公共卫生服务项目启动暨部署电视电话会议,会上启动并部署了9项国家基本公共卫生服务,根据医改实施方案,这些项目将免费为城乡居民提供.启动的9项 ...

  • 龙光集团:用心服务客户 建设美好生活

    春听鸟鸣,夏闻蝉声,在龙光集团的社区和案场,美好生活的场景也随着夏天盎然的绿意慢慢绽放.入夏以来,气温逐渐攀升,龙光集团案场也升级了一系列服务,让来访客户在夏日中感受到一抹沁人的清凉. 客户到访时,门 ...

  • 宝丰镇财政所:抓实政策落实 服务乡村振兴

        为了进一步增强惠农政策的透明度,提高群众对惠民政策的知晓率.覆盖率.5月8,竹山县宝丰镇财政所再次组织干部职工深入村组.农户.车站及田间地头,积极开展"抓实政策落实,服务乡村振兴&q ...

  • 微服务实践之分布式定时任务

    承接上篇:上篇文章讲到改造 go-zero 生成的 app module 中的 gateway & RPC .本篇讲讲如何接入 异步任务 以及 log的使用. Delay Job 日常任务开放 ...

  • 我市养老服务体系建设发展情况汇报

    近年来,我市养老服务体系建设工作在市委市政府的高度重视下,认真贯彻落实科学发展观,积极顺应养老服务的社会需求,采取有力措施,加大工作力度,初步构建了具有台州特色的以居家为基础,以社区为依托,以机构为补 ...

  • 养生店提供色情服务?女子多次举报敲诈勒索获刑8个月

    新民晚报讯 (通讯员 王晓丹 记者 江跃中)2020年11月11日晚,某养生店总店的经理吕某正在店里工作,突然几名民警到店,称有人实名举报该店提供色情服务,要求清场检查.此后连续4天,该养生店的其余3 ...