linux - Cronjob 没有运行 bash 脚本

标签 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 was restarted at\n" > $log
    date  >> $log
fi

这是 crontab:

* * * * * /root/vpnmonitor.sh

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

最佳答案

如果没有正确的路径,openvpn 服务将无法启动。 尝试在您的“vpnmonitor.sh”中包含:

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

关于linux - Cronjob 没有运行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27528579/

相关文章:

linux - 过滤掉两个文件之间的内容

node.js - BASH - 为什么我的 NodeJS 服务器脚本崩溃了?

bash - 如何让 awk 忽略双引号内的字段定界符?

c - 如何测量一段程序的用户/系统 cpu 时间?

linux - 从文件内容创建符号链接(symbolic link)

java - Hibernate - 在 Linux 和 Windows 上的不同行为

bash - 名称中带有空格的多个文件作为 bash 中的单个参数

Linux Awk 代码帮助

sql - 从非常旧的 unix 机器中提取数据

git - 在命令行中解压zlib文件