首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统定时器定义1s可执行但泄漏5s。

系统定时器定义1s可执行但泄漏5s。
EN

Unix & Linux用户
提问于 2017-07-04 05:36:42
回答 1查看 148关注 0票数 0

各位,我定义了一个foo.timer来每秒钟执行一次foo.service

我的操作系统版本是centos7u2

代码语言:javascript
复制
#systemctl --version
systemd 219
-PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

#systemctl cat  foo.timer
# /etc/systemd/system/foo.timer
[Unit]
Description=Run foo weekly and on boot

[Timer]
OnBootSec=15min
OnUnitActiveSec=1s
AccuracySec=1us


[Install]
WantedBy=timers.target

看看我的表现:

代码语言:javascript
复制
#systemctl cat  foo.service
# /etc/systemd/system/foo.service
[Unit]
Description=test

[Service]
Type=oneshot
ExecStart=/usr/lib/aa.sh
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

剧本:

代码语言:javascript
复制
#cat /usr/lib/aa.sh
#!/bin/sh
aa=`date`
echo $aa >> /var/log/aa.log

日志文件:

代码语言:javascript
复制
Mon Jul 3 20:28:36 HDT 2017
Mon Jul 3 20:28:37 HDT 2017
Mon Jul 3 20:28:38 HDT 2017

Mon Jul 3 20:28:44 HDT 2017
Mon Jul 3 20:28:45 HDT 2017
Mon Jul 3 20:28:46 HDT 2017
Mon Jul 3 20:28:47 HDT 2017
Mon Jul 3 20:28:48 HDT 2017


Mon Jul 3 20:28:54 HDT 2017
Mon Jul 3 20:28:55 HDT 2017
Mon Jul 3 20:28:56 HDT 2017
Mon Jul 3 20:28:57 HDT 2017
Mon Jul 3 20:28:58 HDT 2017

看这个日志文件,我们可以看到,我丢失了5秒的内容。我试着OnUnitActiveSec=2s,这个问题没有出现,这就是为什么?

EN

回答 1

Unix & Linux用户

发布于 2017-07-04 05:45:34

我注意到系统没有严格遵循定时,因为我使用的是这种计时器,没有问题。

代码语言:javascript
复制
Description=Timer

[Service]
Type=simple
ExecStart=/bin/sh -c "while true ; do echo Timer; usleep 500000; done"
Restart=always
RestartSec=1
StartLimitInterval=0

[Install]
WantedBy=multi-user.target

基本上,这是一个永无止境的循环,但是为了稳定起见,如果它死了,它会在1秒内重新启动。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/375121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档