【09.03.24】在Ubuntu中和Android中添加开机自启动的守护进程

【深度学习】Pycharm连接远程服务器(AutoDL)训练YOLOv5 文章目录References References pycharm远程连接AutoDL训练pascalVOC2007数据集 AutoDL帮助文档 阅读详情
昨天和今天实验了向Android中添加一个守护进程,鼓捣了2天,小有点收获,自己编写的进程添加进这两个操作系统的开机启动中了。但离完全成功似乎还有些距离。另外今天还看了下解压、修改Android的ramdisk.img的方法。

先把我的守护进程(daemon09.c)发到这里

/************************程序开始**************************/
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/time.h>
#include<sys/resource.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main()
{
    int i=0,fd;
    pid_t pid;
    struct rlimit rl;
    char str[]="Writing Test is going...\n";

    umask(0);
    if(getrlimit(RLIMIT_NOFILE,&rl)<0)
        printf("getrlimit函数调用出现错误!\n");
    if((pid=fork())<0)
    {
        printf("fork出现错误!\n");
        exit(1);
    }
    else if(pid>0)//父进程退出
    {
        printf("父进程退出,它的ID为%d,它的子进程ID为%d\n",getpid(),pid);
        exit(0);
    }
    //子进程
    sleep(2);
    printf("子进程ID为%d\n",getpid());

    setsid();
    if((pid=fork())<0)
    {
        printf("fork出现错误!\n");
        return -1;
    }
    else if(pid>0)//第一个子进程退出
    {
        printf("第一个子进程退出,它的ID为%d,它的子进程ID为%d\n",getpid(),pid); /*这个printf的内容可以被输出,貌似是因为它所在的进程虽然失去了终端,但它是一个会话组的首进程,因此看到有printf后,自己又申请了一个终端?*/
        exit(0);
    }

    //第二个子进程
    printf("不会输出这一行。\n");/*这个printf的内容将不会在屏幕上输出,原因可能是因为它所在的进程此时已经不是一个会话组的首进程,无法重新申请获得终端?*/
    chdir("/");
    if(rl.rlim_max==RLIM_INFINITY)
        rl.rlim_max=1024;
    printf("%d",(int)rl.rlim_max);
    for(i=0;i<rl.rlim_max;i++)
        close(i);
    open("/dev/null",O_RDWR);
    dup(0);
    dup(0);
   
    //每隔5s向文件内写入一次数据
    while(1)
    {
        fd=open("/data/deamon.txt",O_WRONLY|O_CREAT|O_APPEND,0766);/*这里的/data指的是android系统上的/data目录*/
        write(fd,str,sizeof(str));
        sleep(5);
    }
    close(fd);
    exit(0);
}
/************************程序结束**************************/

因为andorid也是基于LINUX内核的,因此我想一开始先试验一下是否可以把这个进程在Ubuntu中开机自启动。
通过在/etc/rc.local文件中加入了一行“/usr/myfiles/test/daemon09”,成功让daemon09在Ubuntu开机时启动了。(注意,这里在LINUX下启动的话,上面的C程序中红字部分可能需要改变一下,因为Ubuntu下没有/data这样一个路径)

在Ubuntu Linux下成功之后,就转而看看在android下是否能行。android启动后的根目录下的init.rc似乎是管这个的(源码目录/system/core/rootdir/init.rc,make后就是它),于是我试着对源文件做修改再make运行,但一开始总是不得要领,不知道init.rc中的语法是什么。后来在google论坛上找了下,原来init.rc的内容在“android源码路径/system/core/init/readme.txt“内有说明。于是根据那个搞了几个小时(没办法,本人是菜鸟),基本上弄出来了,android模拟器启动后,自己写的进程也成功加入了。方法如下:

在init.rc的那一堆以service开头的语句中插入一段新的service语句。格式如下:

#my_deamon_test是服务名称,后面跟的是你编写的要开机启动的程序及路径,这里的路径是android系统中的路径
service my_deamon_test /data/deamon_test
     oneshot(不加这一句似乎不行,少了它可能你的程序启动不起来)

oneshot选项的含义(在android源码路径/system/core/init/readme.txt内有说明):
Do not restart the service when it exits.


===============================
另外,这两天在网上看了一些android下的调试技巧,贴到这里备忘

1、解压、修改Android的ramdisk.img的方法
将ramdisk.img复制一份到任何其他目录下,将其名称改为ramdisk.img.gz,并使用命令
gunzip ramdisk.img.gz
然后新建一个文件夹,叫ramdisk吧,进入,输入命令
cpio -i -F ../ramdisk.img
这下,你就能看见并。

根据自己的需要对里面的内容修改之后,可以使用下列命令重新打包成镜像
cpio -i -t -F ../ramdisk.img > list
cpio -o -H newc -O lk.img < list  
当前目录下生成的lk.img就是我们的新镜像了。
Debian 9安装Docker实战指南:适配老内核与归档源的容器化方案 Docker是一种基于Linux内核特性的轻量级容器运行时,其核心依赖cgroup、namespace和存储驱动等底层机制。在Debian 9(Stretch)这类已结束生命周期的系统中,因内核版本为4.9、默认仅支持cgroup v1、systemd 232兼容性受限,以及官方源归档导致APT信任链中断,直接安装docker-ce会引发服务假死、依赖冲突或启动失败等问题。技术价值在于以最小侵入方式实现遗留系统的容器化演进——不升级内核、不替换OS,而通过精准选用docker.io 18.09.9、配置vf 阅读详情

相关推荐

Android应用开机自启动实现详解

在Android系统中,当设备启动完成并加载完系统服务后,会发送一个广播。该广播被特定的广播接收器(BroadcastReceiver)接收到时,即可触发相应的开机启动逻辑。开发者可以通过注册监听器来处理这一广播,从而实现应用的开机自启动功能。

weixin_42576410的博客 1683

在Ubuntu中和Android中添加开机自启动的守护进程

昨天和今天实验了向Android中添加一个守护进程,鼓捣了2天,小有点收获,自己编写的进程添加进这两个操作系统的开机启动中了。但离完全成功似乎还有些距离。另外今天还看了下解压、修改Android的ramdisk.img的方法。先把我的守护进程(daemon09.c)发到这里/************************程序开始**************************/#includ

vrix的专栏 2775

自启动和进程守护

开机自启动+JNI进程守护,参考 http://coolerfall.com/android/android-app-daemon/ https://github.com/Coolerfall/Android-AppDaemon

Ubuntu添加和设置开机自动启动程序的方法

Ubuntu添加和设置开机自动启动程序的方法 1、Ubuntu添加开机自动启动程序的方法ubuntu 1. 开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 而后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。一般状况下,修改放置在网络 /etc/rc或app /etc/rc.d 或ide /etc/rc?.dpost 目录下的脚本文件,可使init自动启动其它程序。例如:编辑/etc/rc.d/rc.local 文件(该文件一般是系统最后启动的脚本),在文件最

匠心码农 1万+

无线控制的隐形桥梁:深入解析NRF24L01在电机控制中的数据传输艺术

本文深入解析NRF24L01无线模块在电机控制中的数据传输技术,涵盖通信机制优化、抗干扰策略及实时性保障。通过舵机和无刷电机的实战案例,展示如何构建稳定高效的无线控制系统,为嵌入式开发提供完整解决方案。

j7k8l的博客 333

MFC界面库BCGControlBar v32.0 - 对话框、仪表盘控件升级

亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFCv32.0正式发布!新版本支持Windows 11、增强功能区简化模式、改进控件外观等,以及其他新功能和改进。需要最新版的可以点击这里【BCG下载】 BCGControlBar Pro for MFC v32.0正式版下载 对话框和表单 1. 添加了一个新的全局标志globalData.m_bAutoPrepareComboListStyles:如果您希望.

需要界面开发、IDE工具研发中文教程资料的小伙伴,记得私信我~ 1148

ubuntu开启守护进程,运行后台php服务(开机启动)

场景: 创建一个php服务脚本,该脚本负责抓取mqtt等通信记录,并且保存到数据库。平时,我们只要在服务器端开个终端,就可以运行代码,去抓数据,但是将终端关闭后,就无法抓取数据了。守护进程(daemon)就是一直在后台运行的进程(daemon)。他可以脱离终端独自在后台运行。 前台任务和后台任务 1.在ubuntu上,平时的做法是运行如下代码当做一个服务脚本。 php ru...

cms专家 3716

VSLAM框架对比

格VSLAM特点介绍: (一)ORB-SLAM2 (二)ORB-SLAM3 (三)LSD-SLAM (四)

ljtx200888的博客 2295

AutoDL使用screen守护进程的方法【Pycharm】

建议先自己测试一遍,再对实际需要运行的文件进行操作。

m0_73828856的博客 1386

融合双主干网络提升YOLOv8性能一种基于SOTA思想的目标检测改进

YOLOv8采用了单一的主干网络进行特征提取,通常是基于CSPDarknet作为骨干网络,在目标检测过程中通过不同的卷积层提取不同尺度的信息。虽然这种设计在大多数应用场景下表现出色,但在面对复杂背景、细节丰富的物体或小物体检测时,YOLOv8有时难以保持良好的精度。在本文中,我们提出了一种基于双主干网络的YOLOv8改进方案,通过结合先进的SOTA思想,全面提升了YOLOv8在目标检测任务中的表现。双主干网络架构。

博客 1154

【调优】OpenClaw调优之模型(tokens)篇

OpenClaw用户常遇四大痛点:规则被无视、API账单暴涨、低效模型选择、记忆丢失。通过/context list命令可解析上下文组成,包括工作区配置、引导参数限制、系统提示词等关键信息。重点需关注Token消耗来源,如核心配置文件、技能工具说明等,避免静默截断。建议精简非必要内容,优化记忆机制,平衡功能与成本。该分析帮助用户减少无效操作,合理控制API支出。

海兰 991

OpenClaw飞书对接指南:AI网关架构与WebSocket隧道配置

AI网关是现代智能体系统的核心调度层,它不生成内容,而是统一管理通信、权限、状态与多端协同。其原理基于事件驱动的长连接架构,技术价值在于将大模型能力安全、可控、可审计地封装为标准化服务接口。典型应用场景包括企业级办公助手、私有化AI中台、IoT设备协同控制等。本文聚焦OpenClaw这一开源AI网关在飞书平台的深度集成,详解Gateway-Node-Canvas三层架构设计、WebSocket双向隧道配置要点,以及基于OAuth2.0与心跳机制的生产级连接稳定性保障。

weixin_30751947的博客 297

基于STM32设计的老人防摔倒报警设备(OneNet)_65

本文设计了一种基于STM32单片机的智能老人防摔倒报警设备。该系统结合MPU6050陀螺仪传感器实时监测老人的姿态变化,检测摔倒事件;通过SIM800C通信模块发送短信通知紧急联系人,并将GPS定位信息上传至云端平台,确保家属能够及时了解老人的准确位置。

1万+

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

全志V3S嵌入式驱动开发(uboot移植)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 安装了ubuntu操作系统,有了开发板,下面就可以进行我们的开发工作了。第一步,我们要面临的问题就是uboot移植。一般来说,嵌入式的基础环境就是uboot、linux和rootfs。uboot完成一些基本硬件的初始化,比如cpu频率设置、ddr初始化、加载linux等等。早前,uboot的烧入比较麻烦,需要jtag工具才能完成。现在来说,很多soc支持系统直接从sd卡启动,这对开发

嵌入式-老费,一个分享专业嵌入式知识的blog 2821

高压控制单元与接触器 —— BMS电池的“高压大门”

高压接触器在BMS电池管理系统中扮演着“高压大门”的角色,负责控制电池包与整车高压母线的连接与隔离。接触器的工作原理基于线圈产生的磁力吸合接点,通过主触点接通高压电流路径,辅助触点检测状态,灭弧结构保护接点。预充电路的设计是为了避免直接连接大电容时产生的浪涌电流冲击,通过预充电阻逐步充电,确保系统安全上电。接触器控制策略包括顺序控制、辅助触点检测、温度监控、故障断电和背靠背MOS辅助控制,以确保系统的高效和安全运行。工程师在选择接触器型号、控制线圈、检测状态、软件冗余控制和预充失败保护等方面提供了具体建议。

weixin_43199439的博客 813

当我在AutoDL(SSH)跑模型时,如何用screen来守护进程,防止因断网导致程序终止

今天跑了一下午的模型,临时把Laptop带去会议室,忘记连着SSH的模型还在跑,结果回来发现pycharm终端没了,晕。记录一下在终端调train.py时,成功让我可以开始训练后,切换网络/断网/把电脑拿走后,再恢复进程,不会中断SSH连接~

qq_52436400的博客 2491

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

AutoDL使用手册

本文介绍了AutoDL基本的使用流程。

weixin_45231460的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

守护进程实验——autoDL

实时查看日志。

qq_46781387的博客 994

【日常记录】screen 守护进程

通过 ssh 在 linux 服务器上训练模型时,为了避免连接终端导致程序终止,使用了 screen 进程守护。如果一切正常,那么只有重启服务器,这个进程才会挂掉。

qq_43491212的博客 2777

云服务器做深度学习推荐+autoDL云服务器进行深度学习教程

笔者用云服务做深度学习项目,经过多次筛选,对于自掏腰包的学生来说,性价比是真不错。

造钞 1万+

ubuntu下基于systemctl的守护进程编写

ubuntu下基于systemctl 守护进程

littesss的博客 2002

linux 设置开机启动守护进程

linux系统下设置开机启动守护进程 1、编写启动解本shell 如:要启动/test目录下的a.out. 1、在/test目录下建一个run.sh文件; 2、编辑内容,第一行:#!/bin/bash 第二行:cd /test 第三行:./a.out &; 3、设置可执行属生,chmod u+x run.sh; 2、编辑“/etc/rc.local”    1、vi /etc

weixin_36741151的博客 2234

10.Ubuntu16.04守护进程的配置和操作

Ubuntu16.04守护进程的配置和操作sudo status dockereggyer@ubuntu:/usr/local/dockerfile/df_test1$ sudo status docker [sudo] eggyer 的密码: status: 无法连接到 Upstart: Failed to connect to socket /com/ubuntu/upstart: 拒绝连接

蛋子哥的博客 4143

一种较方便在Android中添加开机自启动的守护进程的方法

运用本方法的前提是你已经把android源码的sdk编译出来了。在你的Android源码目录下存在这两个目录: ./out/target/product/generic/ramdisk.img 和 ./out/host/linux-x86/sdk/android-sdk_e

3702
上一篇: http上传文件深度解析-高性能http传输
下一篇: CentOS 6.4+nginx+php+mysql详细设置步骤
xbin1981
博客等级 码龄14年 8粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值