如何在linux启动时启动应用程序(linux systemd服务)

时间:2018-07-23 17:54:24

标签: linux service systemd

我正在尝试将我的程序(应用程序)作为守护程序在systemd上启动。

应用程序为:

int main(int argc, char **argv)
{
    unsigned long cnt=0;
    puts("!!!Test DAEMON.");

    // Daemonize
    daemon(1, 0);

    // Variables
    struct timeval tv;
    time_t nowtime;
    struct tm *nowtm;
    char tmbuf[64];

    while(1){
       gettimeofday(&tv, NULL);
       nowtime = tv.tv_sec;
       nowtm = localtime(&nowtime);
       strftime(tmbuf, sizeof tmbuf, "%Y-%m-%d %H:%M:%S", nowtm);

       printf("%ld : time %s\n", cnt, tmbuf);

       FILE *fp=fopen("/tmp/spit.txt","a");
       if(fp){
          fprintf(fp, "%ld : time %s\n", cnt, tmbuf);
          fclose(fp);
       }

       sleep(15);
       cnt++;
    }
    return 0;
}

当我在控制台中运行时,此功能可以找到。它会创建一个文件,并每15秒增加一次计数器。

我通过以下方式通过该程序创建了服务:

/lib/systemd/system中创建了服务

[Unit]  
Description=Simon demo service  
After=crond.service  
StartLimitIntervalSec=0  

[Service]  
Type=simple  
Restart=on-failure  
RestartSec=5  
User=root  
ExecStart=/home/root/test_daemon  

[Install]  
WantedBy=multi-user.target  

启用服务:

$ systemctl start  my_service  
$ systemctl enable my_service  

重新启动后,在/tmp/spit.txt中仅看到一个条目,就好像程序执行一次并退出一样。我在“ ps aux”命令中看不到该守护程序。

  • 我想念什么?
  • 此外,我想知道是否需要登录才能启动该服务,还是无需登录就可以启动?我必须让一个LED闪烁才能看到,但这还为时过早。

谢谢

0 个答案:

没有答案