我在 CentOS 上有一个 cron 作业,我想每 3 分钟执行一次,但我还有许多其他 cronjobs 从 0、3、6、9 开始每 3 分钟运行一次...
因此,为了避免我的服务器过载,我希望我的一些 cron 每 3 分钟运行一次,但从 1 分钟开始,依此类推:1、4、7 ...
我的 crons 通常是这样的:
*/3 * * * *
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有这个 cronjob 每分钟运行一次
*/1 * * * * root sh /test.sh
Run Code Online (Sandbox Code Playgroud)
我的 /test.sh 记录了“top”和“free”命令的结果。当我使用“sh /teste.sh”在终端上手动运行它并将输出保存到一个不错的文件时它工作正常,但是当cron作业运行时它只保存下面命令“free”的结果。请检查这个:
printf "\n" >> "log_lojar_top_free.txt"
printf %s "$(date)" >> "log_lojar_top_free.txt"
printf '\t' >> "log_lojar_top_free.txt"
top -b -n 3 -d 1 | grep "Cpu" | tail -n 1 | awk '/^%Cpu\(s\)/ {printf $2}' >> "log_lojar_top_free.txt"
printf '\t' >> "log_lojar_top_free.txt"
free | awk '/^Mem:/ {printf $7}' >> "log_lojar_top_free.txt"
Run Code Online (Sandbox Code Playgroud)
导致只有最后一行(空闲)输出记录的错误是什么?
下面的命令仅获取第一个负载平均值,我想获取所有 3 个负载平均值。我如何更改此代码?
top -b -n 3 -d 1 | grep "load average" | tail -n 1 | awk '/load average:/ {printf $10}'
Run Code Online (Sandbox Code Playgroud) 当我date在我的 linux 上运行时,我得到Sat Oct 31 11:53:22 BRST 2015. 我只想得到Sat. 我怎么做?到目前为止,我认为我应该使用下面的代码,但它不起作用:
date | printf $1
Run Code Online (Sandbox Code Playgroud)