【发布时间】:2017-11-12 15:37:35
【问题描述】:
我们有一个嵌入式 Linux,我们在其中管理和控制许多*子系统。此外,它还有一个通信媒介,可以让我们在没有电缆的情况下与它通信(S-Band)。 目前,我正在处理一些脚本,我们可以在操作期间使用它们。
这是一个计时器原型,我们可以在时钟显示 00:00 时激活一些脚本。
while [ 1 ];
do
curHour="$(date +%H)"
curMin="$(date +%M)"
echo $curHour:$curMin
if ((10#$curHour=="0")); then
if((10#$curMin=="0"));then
./archAndComp.sh
fi
fi
sleep 60
done
我正在调用的脚本具有归档和压缩所需目录的特定作业。这是我解释的原型。
dirName="logs"
j=0
if (find $PWD $dirName*); then
i=0
while (find $PWD $dirName-$i.tar.xz);
do
let i++
done
tar -cvf $PWD/$dirName-$i.tar $PWD/var/log/$dirName
xz $PWD/$dirName-$i.tar
else
tar -cvf $PWD/$dirName-$j.tar $PWD/var/log/$dirName
xz $PWD/$dirName-$j.tar
fi
总之,每天结束时我都想归档和压缩一个特定的目录。提供文件传输/下载脚本。因此,无需讨论该部分。
让我烦恼的是;当 timer.sh 脚本处于活动状态时,它是否会导致不允许任何其他进程完成的进程睡眠?或者,某些内部调度程序可能会将sleep 分配给类似线程的机制,该机制允许其他进程继续它们的生命......
对于第一种情况,我应该守护计时器脚本。你有什么建议,我应该坚持使用 systemd 还是实现我自己的类似时钟的守护进程?
【问题讨论】:
-
睡眠通常不是 CPU 密集型活动,除非您有一些奇怪的设置,否则调度程序可能会让其他进程离开。也就是说,为什么不每天使用
cron运行它呢?经常运行的东西正是它的目的
标签: linux bash timer daemon systemd