在法国,午夜 00:00 是一天的结束,而在英语中这是一天的开始。
在 cron 表中,如果一批任务安排在星期五 00:00 执行,那么它将在星期五早上完成。
我的问题是:改变语言环境和时间区域会改变午夜的定义吗?
如果我使用法语区域设置配置服务器,那么周五 00:00 安排的批处理会在周六早上完成吗?
在法国,午夜 00:00 是一天的结束,而在英语中这是一天的开始。
在 cron 表中,如果一批任务安排在星期五 00:00 执行,那么它将在星期五早上完成。
我的问题是:改变语言环境和时间区域会改变午夜的定义吗?
如果我使用法语区域设置配置服务器,那么周五 00:00 安排的批处理会在周六早上完成吗?
我有此日志详细信息配置:
/opt/freeradius/logs/*/detail {
daily
rotate 4
compress
delaycompress
missingok
notifempty
create 0640 root root
sharedscripts
maxsize 500M
postrotate
/bin/systemctl reload freeradius > /dev/null 2>/dev/null || true
endscript
}
我有这些旧日志和新日志:
[root@freeradius01 192.168.17.10]# pwd
/opt/freeradius/logs/192.168.17.10
[root@freeradius01 192.168.17.10]# ll
total 56919724
-rwxrwxrwx 1 root root 21048752215 Aug 14 23:59 detail-20240814
-rwxrwxrwx 1 root root 21617187765 Aug 15 23:59 detail-20240815
-rwxrwxrwx 1 root root 5988044800 Aug 16 23:59 detail-20240816
-rwxrwxrwx 1 root root 5947392 Sep 25 23:59 detail-20240925
-rwxrwxrwx 1 root root 7478423552 Oct 21 23:59 detail-20241021
-rwxrwxrwx 1 root root 1907452140 Oct 22 11:19 detail-20241022
[root@freeradius01 192.168.17.10]#
当手动运行 logrotate 并强制使用 verbos 时,我得到以下结果:
[root@freeradius01 192.168.17.10]# /usr/sbin/logrotate -v -f /etc/logrotate.d/radiusd
reading config file /etc/logrotate.d/radiusd
Reading state from file: /var/lib/logrotate/logrotate.status
Allocating hash table for state file, size 64 entries
Creating new state
Creating new state
Creating new state
..
..
Creating new state
Handling logs
rotating pattern: /opt/freeradius/logs/*/detail forced from command line (4 rotations)
empty log files are not rotated, log files >= 524288000 are rotated earlier, old logs are removed
considering log /opt/freeradius/logs/*/detail
not running postrotate script, since no logs were rotated
[root@freeradius01 192.168.17.10]# ll
total 56919724
-rwxrwxrwx 1 root root 21048752215 Aug 14 23:59 detail-20240814
-rwxrwxrwx 1 root root 21617187765 Aug 15 23:59 detail-20240815
-rwxrwxrwx 1 root root 5988044800 Aug 16 23:59 detail-20240816
-rwxrwxrwx 1 root root 5947392 Sep 25 23:59 detail-20240925
-rwxrwxrwx 1 root root 7478423552 Oct 21 23:59 detail-20241021
-rwxrwxrwx 1 root root 1968389637 Oct 22 11:22 detail-20241022
[root@freeradius01 192.168.17.10]# grep "detail" /var/lib/logrotate/logrotate.status
"/var/log/radius/radacct/*/detail" 2024-3-5-3:0:0
"/opt/freeradius/logs/*/detail" 2024-3-5-3:0:0
[root@freeradius01 192.168.17.10]# date
Tue Oct 22 11:22:45 WAT 2024
[root@freeradius01 192.168.17.10]#
因此,尽管我手动运行了日志轮换,但它并没有运行/而且旧日志也没有压缩!!?
我想要一个 cron 任务,每小时运行一次 speedtest cli,并将其记录到 csv 文件中,其中包含时间和日期 ( https://www.speedtest.net/apps/cli )。因此,我可以这样运行它
0 * * * * speedtest -p no -f csv >> /home/almalinux/speedtest.csv
我如何将“日期”命令输出注入为每个速度测试的第一列(条目)?
根据以下答案。工作命令如下。它从终端运行:
0 * * * * (printf "\%s," "$(date)"; speedtest -p no -f csv) >> /home/almalinux/speedtest.csv
但在 CRON 中不起作用。
我在 Alpine Linux 3.20 系统上的个人 crontab 中有一个时间表,每周二至周日(即除周一外的所有日子)的 00:10 运行:
10 0 * * 2-7 "$HOME/local/sbin/backup.sh" prune-daily
这似乎也会在周一触发。为什么?
请注意,我最初的报告将症状描述为“周日不运行”。我记错了发生了什么,抱歉。在更彻底地调查症状后,我已更正了症状描述。crontab 计划是正确的,因为它从一开始就是正确的。
我已经改变/etc/cron.d/filename
并在那里添加了一项新工作。
* * * * * /bin/bash /root/scripts/scriptname.sh
但这个作业没有执行。重新启动 Cron 也没有用。
我有同样的工作,适用于单台服务器上的 10 个并行 postgres 实例。它们应该每 6 小时运行一次,但不是全部在同一时间运行。
11 */6 * * * my_command
运行于0:11
, 6:11
, 12:11
,18:11
因此,我可以通过定义分钟(最多 30 分钟)将它们区分开来。但我想要更多,例如跑步0,6,12,18
与跑步,即2,8,14,20
所以我的问题是......有没有办法让另一项工作运行2:11
,即8:11
,,,14:11
20:11
或者我必须说11 */6 * * * sleep 120m && my_command
一下替代执行方式吗?
我有一个 cron 作业,它在我的一台运行 Void Linux 的家庭服务器上播放音频文件mpv
。我听不到任何声音,直到我 ssh 进入服务器并手动启动 pipewire,之后它才适用于所有未来的 cron 作业运行。
/usr/bin/pipewire &
/usr/bin/sleep 1
/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ 100%
/usr/bin/mpv <path-to-the-audio-file>
我对所有内容都使用了完整路径,因为我了解到 cron 是在极简环境中运行的,其中并非所有内容都包含在内$PATH
。这sleep
是为了确保 pipewire 已准备就绪,因为我在启动 pipewire 后立即设置接收器音量时遇到了问题。它似乎在其他地方对我有用,所以我也在这里使用了它。
TL;DR:我需要 ssh 进入服务器并启动 pipewire 至少一次才能播放音频。
有没有办法让 pipewire 在重启后也能启动?
这篇文章的评论中提到/etc/cron.d 下的文件如何使用?:
人们可能会错过“文件名必须符合运行部分的文件名要求”(参见 Debian 的 man cron)。因此 /etc/cron.d/ 中与 shell glob [!A-Za-z0-9_-]匹配的文件名将被忽略!因此,诸如 *.dpkg-dist 或 vi-backups *~ 之类的东西不会造成任何损害,但如果您不小心创建了 /etc/cron.d/very_important.crontab,由于 . 在里面!
上述文件名中带有“.”的 cron.daily 、 cron.hourly 、 cron.monthly 等文件夹是否有任何限制 上面文件名中的符号?如果不是,那为什么?为什么命名限制只在/etc/cron.d/中?
在过去的几天里,我一直在我们的一台服务器中观察到奇怪的进程。大多数时候我会看到多个可执行文件实例10
,有时4
会占用大量 CPU 资源。当检查这个时,我发现该进程是在使用可执行文件启动进程后立即由 cron 启动的cpu_hu
。这显然对我的系统来说是陌生的,简单的搜索没有解决任何问题。
然后检查cpu_hu
进程,检查 exe 位置,然后相应地删除(图像中的位置指向我们团队正在开发的一个小项目的 venv)
即使我删除了二进制文件,重新启动后它也会出现在不同的位置
和可执行文件10
,4
从内存启动(没有物理可执行位置)
我cpu_hu
从系统的所有位置删除了二进制文件,停止了进程并重新启动,但一段时间后cpu_hu
二进制文件出现在其他地方。现在我已经停止了 crond 并杀死了相应的进程。这似乎阻止了这个过程再次开始。
此时我很确定它是恶意的。我怎样才能摆脱这个问题,或者更确切地说找到这个恶意软件的起点以防止它启动。
我正在尝试创建一个单行 /etc/cron.d/ cron 条目,它多次运行相同的命令,本质上是为了创建多个线程,用于长时间运行的作业:
* * * * * usertorunas "for i in {1..6} ; do curl -s 'https://www.example.com/path' &>/dev/null & ; done"
我在这里做错了什么?它不会执行,因为 中没有显示任何内容ps aux
。
这可能是使用具有不同循环语法的任何 shell 的问题吗for
?前缀SHELL=/bin/bash
没有任何效果。
我意识到我可以将同一件事列出六次,但这似乎是一种相当粗鲁的做事方式。
这是在 Ubuntu 22.04 上。