有的时候,某个进程只在特殊的情况下运行一下即可,不需要一直以服务的形式待命,这种情况下,可以设置service的type为oneshot,然后设置RemainAfterExit=yes。
这样设置的service,即使在其进程启动完成之后退出了,systemd 也仍然会认为这个服务还在运行中,将此服务视为活动(active)状态。
#include <stdio.h>
#include <iostream>
using namespace std;int main(int argc, const char *argv[])
{cout<<"this is oneshot"<<endl;return 0;
}
//one_shot.service
[Unit]
Description=one shot[Service]
ExecStart=/xxx/one_shot
Type=oneshot
RemainAfterExit=yes
$ sudo systemctl restart one_shot$ sudo systemctl status one_shot●