如果控制台关闭,则 crontab 脚本不会执行

如果控制台关闭,则 crontab 脚本不会执行

我正在使用 Debian 6.0.6。几天前我编辑了 root crontab 并添加了以下行:

00,10,20,30,40,50 * * * * /root/Scripts/con_switch6.sh >> /var/log/con_switch_diario.log 2>&1

我正在使用 Putty 连接到此 Linux 服务器。同时,Putty 控制台已打开并连接,文件“con_switch_diario.log”内每 10 分钟生成一行(即脚本正在运行)。

但是当我关闭 Putty 控制台(即 ssh 连接已完成)然后重新打开它时,我发现在这段时间内该日志文件上没有任何条目。我进行了一些测试,发现当控制台关闭时,crontab 不会执行该脚本。

脚本的内容如下:

#!/bin/sh

IPcorreo="83.25.10.84"
IP1="192.168.10.125" 
IP2="192.168.10.154"
maxPloss="15"


IPfirewall=`traceroute -m 3 $IPcorreo | grep $IP1`

if [ $? -eq  0 ]
then
  echo "$IPfirewall: `date`"

  ploss=$(ping -q -w30 $IPcorreo | grep -o "[0-9]*%" | tr -d %) > /dev/null 2>&1

  if [ "$ploss" -gt "$maxPloss" ] 
  then
    /usr/bin/expect /root/Scripts/delete.exp
    sleep 60   
    echo "Switch Email: `date`" | mail -s System [email protected]
  fi
else
  traceroute -m 3 $IPcorreo | grep $IP2
fi 

我不知道该如何解决这个问题。谢谢你的帮助。

PS:在同一台服务器中,我在 crontab 中定义了其他脚本……它们每天都在正常运行。我发现它们之间的唯一区别是它们使用

#!/bin/bash

代替

#!/bin/sh

但即使我在脚本上将其更改为使用 bash,我仍然遇到同样的问题。

答案1

问题已修复。原因是这一行

ploss=$(ping -q -w30 $IPcorreo | grep -o "[0-9]*%" | tr -d %) > /dev/null 2>&1

一旦我将其改为

ploss=`ping -q -w30 $IPcorreo | grep -o "[0-9]*%" | tr -d %`

一切都开始顺利起来。

相关内容