【发布时间】:2019-02-25 09:21:38
【问题描述】:
我有这个脚本在运行 Freebsd 10 的 Juniper 路由器上运行。我面临的问题是当 cronjob 运行这个脚本变量 ($current_mem) 时没有显示任何值,因为结果记录器也不能记录该值。任何人都知道发生了什么。
#!/bin/bash
localpid=$$
renice -n +1 $localpid &
current_mem="test"
echo "$current_mem" <<<<shows right value
current_mem=$(cli -c "show task memory" | grep "Currently In Use" | awk
'{print $5}' | grep -o '[0-9]*')
echo "$current_mem" <<<<<<<<<<"when cron is running it show's nothing"
if [ "$current_mem" -gt "65" ]
then
echo "$current_mem" <<<<<"shows nothing"
logger -t JTASK_OS_MEM_HIGH -p "external.notice" "Using more then 65
percent of available memory Current utilization:$current_mem" <<<<<
else
echo "$current_mem"
logger -t JTASK_OS_MEM_NORMAL -p "external.notice" "Using less then 65
percent of available memory Current utilization: $current_mem"
fi
当我使用 sh task_mem.sh 运行此脚本时,脚本运行良好,但当我通过 cron 运行它时,它不会显示/转储变量的值。这就是我为 cron 工作所拥有的
# crontab -l
*/1 * * * * sh /var/tmp/task_mem.sh >>
/var/tmp/task_mem_cron.log
【问题讨论】:
-
<<<<<<<是您稍后添加的吗?这是无效的语法,会导致脚本失败。 -
cli和logger可执行文件在 /bin 或 /usr/bin 中吗?如果没有,它可能找不到它们,因为 cron 作业在非常小的环境下运行(包括PATH)。看我的回答here。 -
试试这个来调试你的 cron:stackoverflow.com/a/49296678/1135424
-
也使用
-x进行调试模式。因此,在脚本的开头更改此行#!/bin/bash -x -
@thatotherguy 我添加了