2017-04-06 70 views
-2

我使用以下内容创建了一个shell脚本。如何使用inittab文件执行Linux shell脚本

#!/bin/bash 
TMP_FILE=/tmp/inet_up 
no_inet_action(){ 
    reboot 
} 
HOUR="$(date +'%H')" 
if [ $HOUR -le 22 -a $HOUR -ge 9 ]; then 
    if ping -c5 192.168.7.100; then 
    echo "Internet OK">$TMP_FILE 
    else 
    echo "No Internet">$TMP_FILE 
    no_inet_action 
    fi 
fi 

这将平在09:00的IP地址至22:00,如果没有互联网连接,它会写一行到文件中并重新启动设备。我在inittab中放入以下行,并期望它每隔5分钟运行一次。我在/tmp文件夹中看不到该文件。该脚本是可执行的。执行它的正确方法是什么?我看到一些博客建议把它放在/etc/init.d;这是正确的方式?

inittab位于/etc/文件夹中。

::respawn:/sbin/delayexec 600 /etc/check_inet.sh 
+1

这取决于你的发行版。你描述了一个经典的方法,但是现在很多发行版都避开了经典的'init'行为。那些依赖'systemd'的例子,完全忽略'/ etc/inittab'。 –

+0

我检查我的系统是Linux 3.6.9+ armv5tejl。 – RotatingWheel

+3

您应该使用'cron'('cron'是一个按计划执行脚本的实用程序)。 – larsks

回答

0

经过搜索并尝试几个小时后,找到了解决方案。 如果我把下面的内容放在inittab文件中,它对我来说工作得很好。所以我不需要使用crontab,正如评论中的专家提到的那样(我不是Linux专家,也没有时间调查细节,只需要完成我的任务)。希望这可能对inittab的其他部分内容有所帮助。

::respawn:/sbin/delayexec 300 /bin/sh /etc/check_inet.sh 

这里是我去掉echo命令后使用的最终代码:

#!/bin/bash 
no_inet_action(){ 
reboot 
} 
HOUR="$(date +'%H')" 
if [ $HOUR -le 22 -a $HOUR -ge 9 ]; then 
if ping -c5 192.168.7.100; then 
else 
no_inet_action 
fi 
fi