所以我想以一种非常具体的方式设置一个 cronjob:
在启动/唤醒时运行 script_A
然后每隔 5 分钟,相对于启动/唤醒(所以不是只是以 5 时钟分钟为模)
每 4 分钟运行 script_B之间(即 script_A 执行时的分钟数不是跑步)
我对这件事实在是缺乏经验
所以我正在寻找关于如何做的建议开始首先深入挖掘...
cron
本身(或者也许是anacron
我正在使用的技术?)似乎相当有限,
而且它能做的最好的事情显然是
*/5 * * * * /home/username/script_A.sh
fcron
似乎更强大/灵活,包括一些语法:
@ 5 /home/username/script_A.sh
这似乎得到了“每 5 分钟相对于启动/唤醒,不仅仅是模时钟分钟”[...虽然我注意到 stackexchange 不有 fcron
作为可用标签,所以这可能不是一个好兆头......]
仍然不知道如何在 4 分钟的每一分钟中处理“script_B”之间不过,script_A”。
systemd 定时器是什么样的?
来自一个非常乍一看,它们看起来有点像样板式的冗长......?
但也许他们做拥有我正在寻找的力量/灵活性......?
还有什么我应该调查的吗?
(
我正在使用 opensuse tumbleweed,所以,
我知道,例如,如果我做去吧fcron
它会需要一个小的努力确保我已经真的已安装适当地
因为我必须手动执行此操作。
(
即,我做过已经从 github 安装了它,
但我很确定至少有一两个棘手的地方我需要追踪才能真正得到它正确地集成到我的系统中。
)
我什么做我的包管理器的存储库中有:
$ zypper info cron cronie cronie-anacron kcron
#=>
Loading repository data...
Reading installed packages...
Information for package cron:
-----------------------------
Repository : Main Repository (OSS)
Name : cron
Version : 4.2-91.3
Arch : x86_64
Vendor : openSUSE
Installed Size : 181 B
Installed : Yes (automatically)
Status : up-to-date
Source package : cronie-1.6.1-91.3.src
Upstream URL : https://github.com/cronie-crond/cronie
Summary : Auxiliary package
Description :
Auxiliary package, needed for proper update from vixie-cron 4.1 to cronie 1.4.4
Information for package cronie:
-------------------------------
Repository : Main Repository (OSS)
Name : cronie
Version : 1.6.1-91.3
Arch : x86_64
Vendor : openSUSE
Installed Size : 310.2 KiB
Installed : Yes (automatically)
Status : up-to-date
Source package : cronie-1.6.1-91.3.src
Upstream URL : https://github.com/cronie-crond/cronie
Summary : Cron Daemon
Description :
cron automatically starts programs at specific times. Add new entries
with "crontab -e". (See "man 5 crontab" and "man 1 crontab" for
documentation.)
Under /etc, find the directories cron.hourly, cron.daily, cron.weekly,
and cron.monthly. Scripts and programs that are located there are
started automatically.
Information for package cronie-anacron:
---------------------------------------
Repository : Main Repository (OSS)
Name : cronie-anacron
Version : 1.6.1-91.3
Arch : x86_64
Vendor : openSUSE
Installed Size : 43.6 KiB
Installed : Yes
Status : up-to-date
Source package : cronie-1.6.1-91.3.src
Upstream URL : https://github.com/cronie-crond/cronie
Summary : Utility for running regular jobs
Description :
Anacron becames part of cronie. Anacron is used only for running regular jobs.
The default settings execute regular jobs by anacron, however this could be
overloaded in settings.
Information for package kcron:
------------------------------
Repository : Main Repository (OSS)
Name : kcron
Version : 23.04.3-1.1
Arch : x86_64
Vendor : openSUSE
Installed Size : 410.8 KiB
Installed : No
Status : not installed
Source package : kcron-23.04.3-1.1.src
Upstream URL : https://www.kde.org
Summary : Cron job configuration tool
Description :
KCron allows you to change your cron jobs setup.
(加上任何可能在https://software.opensuse.org/search?baseproject=ALL&q=cron我只是不知道要搜索什么)
)
答案1
一个不寻常的请求。但是,如果您不是搜索“每 5 分钟”和“每隔一分钟”的两个 cron 表达式,而是创建一个每分钟运行一个脚本的 cron 条目,并且该脚本决定是否是 5 分钟脚本的时间或其他。就像是:
* * * * * /home/username/script-manager.sh
#!/usr/bin/env sh
minute=$(date +%M)
if [ 0 = $(( ${minute#0} % 5 )) ]; then
/home/username/modulo-5 clock-minutes
else
/home/username/script_B
fi
如果你坚持认为它必须在相对于启动的 5 分钟步长内,你可以添加类似的内容
minute=$(date +%M)
echo "$(( ${minute#0} % 5 ))" > /run/boot-5-minute-offset
到您在启动时运行的脚本并调整决策脚本if [ "$(cat /run/boot-5-minute-offset)" = $(( ${minute#0} % 5 )) ]; then