使用systemd,程序崩溃后,自动重启
2023-12-20 13:43:04
- 代码
设计了两种退出方式:exit和NULL崩溃。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
void sleep_second(int seconds)
{
usleep(seconds*1000*1000);
}
#define NULL_EXCEPTION
#define LOG_FILE "/home/weiyu/service.log"
int main(int argc, char** argv)
{
int count = 0;
while (1)
{
int fd = open(LOG_FILE, O_RDWR|O_APPEND|O_CREAT, 0666);
char data[128] = {0};
count ++;
sprintf(data, "count=%d\n", count);
write(fd, data, strlen(data));
if (count == 3)
{
#ifdef NULL_EXCEPTION
sprintf(data, "count=3, NULL error and restart to 1\n");
#else
sprintf(data, "count=3, exit(0) and restart to 1\n");
#endif
write(fd, data, strlen(data));
}
close(fd);
if (count == 3)
{
#ifdef NULL_EXCEPTION
char* pError = NULL;
sprintf(pError, "EXCEPTION\n");
#else
exit(0);
#endif
}
sleep_second(5);
}
return 0;
}
- 编译
gcc test.cpp -o worker
- weiyu.service
[Unit]
Description=巍宇航天科技
After=systemd-user-sessions.service
[Service]
Type=simple
ExecStart=/home/weiyu/worker
KillSignal=SIGQUIT
# 重启模式是无论怎样都会重启这个程序,无法用 kill -9 杀死
Restart=always
# 这个表示重启的信号,也反过来映射的只有使用 systemctl stop 程序名,才能停止此程序
RestartPreventExitStatus=1 6 SIGABRT
- 复制
$ cp weiyu.service /etc/systemd/system
$ systemctl stop weiyu.service
$ systemctl start weiyu.service
文章来源:https://blog.csdn.net/quantum7/article/details/135091068
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!