问题描述
以下是守护进程的代码(C 语言)。
int main(void) {
/* Our process ID and Session ID */
pid_t pid2;
/* The Big Loop */
while (1) {
time_t Now;
time(&Now);
struct tm *local = localtime(&Now);
int hour = local->tm_hour;
int min = local->tm_min;
int earliest_time = 0; //8AM earliest a workout will be developed
int latest_time = 24; //5PM latest a workout will be developed
int min_interval = 20; //minimum interval of a workout
int max_interval = 30; //maximum interval of a workout
//If it's in between these hours of the day...
if (hour >= earliest_time && hour < latest_time){
int rand_interval = (rand() % (max_interval + 1 - min_interval)) + min_interval;
pid2 = fork();
if (pid2 == 0){
execlp("./workout_SMS.py","./workout_SMS.py",NULL);
}
waitpid(pid2,0);
//kill(pid2,SIGTERM);
sleep(rand_interval);
}
else{
sleep(60); /* wait 30 seconds */
}
}
exit(EXIT_SUCCESS);
}
我希望这个守护进程使用 Systemd 在启动时启动。根据 Systemd 手册和其他在线资源,我配置了一个 daemon.service 文件,如下所示。
[Unit]
Description=workout-daemon startup service
[Service]
User=pi
Type=simple
ExecStart=/home/pi/python/twilio/workout_SMS/workout-daemon
Restart=on-failure
[Install]
WantedBy=multi-user.target
以下是守护进程的 Systemd 状态。如图所示,状态表示它是“活动的(正在运行)”,并且随着时间的推移,继续创建新的重复进程。期望的行为是它只运行一个进程而不创建重复项。
● workout.service - workout-daemon startup service file for text message workouts
Loaded: loaded (/etc/systemd/system/workout.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-12-29 03:15:35 PST; 1min 41s ago
Main PID: 22363 (workout-daemon)
Tasks: 5 (limit: 881)
CGroup: /system.slice/workout.service
├─22363 /home/pi/python/twilio/workout_SMS/workout-daemon
├─22364 /home/pi/python/twilio/workout_SMS/workout-daemon
├─22409 /home/pi/python/twilio/workout_SMS/workout-daemon
├─22493 /home/pi/python/twilio/workout_SMS/workout-daemon
└─22525 /home/pi/python/twilio/workout_SMS/workout-daemon
预期的操作是python脚本以特定的时间间隔向我的手机发送一条短信。当直接从工作目录运行时,守护进程将按预期运行,但是当我使用“sudo systemctl daemon-reload”->“sudo systemctl enable training.service”->“sudo systemctl start training.service”时它不会按预期运行。服务”。
我的 Systemd 配置有什么遗漏吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)