首先定义一个service,还记得service是怎么定义的吗,我这里定义的语句如下:service qya system/bin/loop。相信不难理解吧,我们定义了一个服务叫qya,它对应的程序是system/bin目录下的loop。这些上面都讲了。然后我在这个service下面增加几个配置属性: service qya /system/bin/loop class main console oneshot 其中c...
user 表示将用户切换为,用户名已经定义好了,只能是system/rootgroup 表示将组切换为oneshot 表示这个service只启动一次class 指定一个要启动的类,这个类中如果有多个service,将会被同时启动。默认的class将会是“default”onrestart 在重启时执行一条命令Commandcomand主要包括:exec [ ]*执行一个指定的程序export 设...
首先定义一个service,还记得service是怎么定义的吗,我这里定义的语句如下:service qya system/bin/loop。相信不难理解吧,我们定义了一个服务叫qya,它对应的程序是system/bin目录下的loop。这些上面都讲了。然后我在这个service下面增加几个配置属性: service qya /system/bin/loopclassmainconsoleoneshot 其中console...
<pathname>:此service所在路径。因为是可执行文件,所以一定有存储路径 <argument>:启动service所带的参数 :对此service的约束选项 (四)、options(选项) options是Service的修订项。它们决定一个Service何时以及如何运行。 services中可用选项如下表 image.png default: 意味着disabled=false,oneshot=false,criti...
servicemy_service /system/bin/my_service class main user root group root oneshot on boot 1. 2. 3. 4. 5. 6. on boot指令意味着这个服务将在系统启动时自动启动。 序列图 为了更好地理解服务的启动过程,我们可以用序列图来表示这一过程。以下是表示服务启动过程的序列图: ...
void Service::Reap(const siginfo_t& siginfo) { if (!(flags_ & SVC_ONESHOT) || (flags_ & SVC_RESTART)) { KillProcessGroup(SIGKILL); } // Remove any descriptor resources we may have created. std::for_each(descriptors_.begin(), descriptors_.end(), std::bind(&DescriptorInfo::Clean,...
{0, 0, &Service::HandleOneshot}}, {"onrestart", {1, kMax, &Service::HandleOnrestart}}, {"seclabel", {1, 1, &Service::HandleSeclabel}}, {"setenv", {2, 2, &Service::HandleSetenv}}, {"socket", {3, 6, &Service::HandleSocket}}, {"user", {1, 1, &Service::HandleUser}}...
//根据pid查找到相应的service service* svc = service_find_by_pid(pid); std::string name; if (!svc) { return true; } //当flags为RESTART,且不是ONESHOT时,先kill进程组内所有的子进程或子线程 if (!(svc->flags & SVC_ONESHOT) || (svc->flags & SVC_RESTART)) { ...
service pengd /sbin/pengd seclabel u:r:pengd:s0 user root group root disable oneshot on property:sys.boot_completed=1 start pengd 注意rc文件最后一定要有空行,否则编译报错! “ init.rc语法见第二章 该配置文件并不是唯一写法,具体要参考实际厂家提供的sdk中的ramdisk” 3) 拷贝程序pengd 直接拷贝...
Type=oneshot:一次性进程,Systemd会等当前服务退出,再继续往下执行 Type=dbus:当前服务通过D-Bus启动 Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行 Type=idle:若有其他任务执行完毕,当前服务才会运行 ExecStart:启动当前服务的命令 ExecStartPre:启动当前服务之前执行的命令 ...