Sté*_*las 11
作为普通用户,运行crontab -e以编辑您的crontab。在那个 crontab 中输入:
00 12 1-31/2 * * /path/to/the/command_for_odd_days
00 12 2-30/2 * * /path/to/the/command_for_even_days
Run Code Online (Sandbox Code Playgroud)
对于每天 12:00(中午)运行的命令。
如果您是机器的管理员,则可以改为创建:
/etc/cron.d/myservice
Run Code Online (Sandbox Code Playgroud)
文件,具有类似的内容,只是您需要指定命令应该以哪个用户身份运行。
00 12 1-31/2 * * someuser /path/to/the/command_for_odd_days
00 12 2-30/2 * * someuser /path/to/the/command_for_even_days
Run Code Online (Sandbox Code Playgroud)
运行man 5 crontab以了解有关这些 crontab 格式的更多信息。
1-31/2 语法(1 到 31 天之间,每两天)应该被大多数现代 cron 实现识别,包括在你的 Ubuntu 系统上可用的所有那些。如果您遇到一个不受支持的古老系统,您可以将其替换为1,3,5,7,...,29,31.
该实用程序的%e格式说明符date将为您提供 1 到 31 之间的整数形式的月份中的第几天(第 1 到 9 天有一个前导空格,但在算术扩展中使用时这是无害的):
day=$( date +%e )
Run Code Online (Sandbox Code Playgroud)
要测试这个数字是奇数还是偶数:
if [ "$(( day % 2 ))" -eq 0 ]; then
# $day is even
else
# $day is odd
fi
Run Code Online (Sandbox Code Playgroud)
把它变成一个shell函数:
run_command () (
day=$( date +%e )
if [ "$(( day % 2 ))" -eq 0 ]; then
# $day is even
some_command_on_even_days
else
# $day is odd
other_command_on_odd_days
fi
)
Run Code Online (Sandbox Code Playgroud)
这将进入您的 shell 初始化文件(例如$HOME/.bashrcfor bash),然后您将使用
run_command
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1262 次 |
| 最近记录: |