Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Cronjob未运行bash脚本_Linux_Bash_Unix_Ubuntu_Cron - Fatal编程技术网

Linux Cronjob未运行bash脚本

Linux Cronjob未运行bash脚本,linux,bash,unix,ubuntu,cron,Linux,Bash,Unix,Ubuntu,Cron,我已经编写了一个小脚本来检查openvpn是否正在运行,如果没有,则启动它 这是我正在运行的脚本 #!/bin/bash **-x** ps auxw | grep openvpn | grep -v grep > /dev/null if [ $? != 0 ] then /etc/init.d/openvpn start > /dev/null log="/root/ServerRestart.log" echo "The Openvpn Server

我已经编写了一个小脚本来检查openvpn是否正在运行,如果没有,则启动它

这是我正在运行的脚本

#!/bin/bash **-x**

ps auxw | grep openvpn | grep -v grep > /dev/null

if [ $? != 0 ]
then
    /etc/init.d/openvpn start > /dev/null
    log="/root/ServerRestart.log"
    echo "The Openvpn Server was restarted at\n" > $log
    date  >> $log
fi
下面是crontab:

* * * * * /root/vpnmonitor.sh

它在系统日志中显示它运行脚本,但它似乎没有实际执行,当从终端运行时,脚本工作正常。

我在/etc/crontab中创建了一个新的cronjob,而不是使用
crontab-e
,它现在可以工作了,谢谢大家。

openvpn服务不会在没有正确路径的情况下启动。 尝试在“vpnmonitor.sh”中包括:

比如:


您可能会发现在许多问题中使用“调试crontab”是很有用的。在您的shebang中,
**-x**
意味着什么?它显然会使错误更加详细一些建议:对于数字比较,您不应该使用-ne(例如[$?-ne 0])而不是!=。还要确保您对脚本具有执行权限。至少在2次执行脚本之间保持一定的时间间隔..我首先看到所有*First off,$?来自管道中的最后一条grep语句。所以,我不明白为什么你的代码是正确的。pgrep存在于许多UNIX变体上,包括ubuntu。将管道替换为
pgrep openvpn
,或者您喜欢管道,请使用
${PIPESTATUS[*]}
数组。我认为您的代码每次运行时都会重新启动openvpn。当ti实际运行时,@fedorqui很可能出现几个问题中的第一个。
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
#!/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

logger "VPN restarted from cron"

/etc/init.d/openvpn restart vpn-servername