首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shell脚本不能正常运行

Shell脚本不能正常运行
EN

Stack Overflow用户
提问于 2012-11-21 07:56:26
回答 3查看 1.7K关注 0票数 0

我有一个linux脚本,当从命令行运行时运行得很好,但是当计划通过crontab运行时,它并没有提供所需的结果。

脚本非常简单,它通过检查它的pid是否使用pidof命令来检查mysql代理是否正在运行。如果被发现为off,它将尝试启动代理。

代码语言:javascript
复制
# Check if mysql proxy is off
# if found off, attempt to start it

if pidof mysql-proxy 
then
    echo "Proxy running."
else
    echo "Proxy off ... attempting to restart"
    /usr/local/mysql-proxy/bin/mysql-proxy -P 172.20.10.196:3306 --daemon --proxy-backend-addresses=172.20.10.194 --proxy-backend-addresses=172.20.10.195

    if pidof mysql-proxy
    then
        echo "Proxy started"
    else
        echo "Proxy restar failed"
    fi
fi
echo "==============================================="

脚本保存在文件check-sql-proxy.sh中,并将权限设置为777。当我从命令行(shCheck-SQLproxy.sh)运行脚本时,它提供了所需的输出。

代码语言:javascript
复制
4066
Proxy running.
===============================================

该脚本还计划在crontab中每5分钟运行一次,如

代码语言:javascript
复制
*/5 * * * * bash /root/auto-restart-mysql-proxy.sh > /dev/sql-proxy-restart-log.log

但是,当我看到sql restart-log.log文件时,它包含了输出:

代码语言:javascript
复制
Proxy off ... attempting to restart
Proxy restar failed
===============================================

pidof命令似乎无法返回正在运行的应用程序的pid,从而在其他条件下导致脚本流。

我无法理解如何解决这个问题,因为当我手动运行脚本时,它工作得很好。

有人能帮助我在权限或设置方面所缺少的东西吗?

提前谢谢。穆赛尔

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-21 07:59:17

检查shell是否是您所认为的(通常是/bin/sh,而不是bash)

还要检查PATH环境变量。通常,对于cron作业来说,完全限定到二进制文件的所有路径是一种很好的做法。

代码语言:javascript
复制
#!/bin/bash
# Check if mysql proxy is off
# if found off, attempt to start it

if /bin/pidof mysql-proxy 

等。

票数 3
EN

Stack Overflow用户

发布于 2012-11-21 08:03:46

尝试pidof /usr/local/mysql-proxy/bin/mysql代理(可执行文件的完整路径)

通常,尝试使用与启动mysql实例相同的命令名。

票数 0
EN

Stack Overflow用户

发布于 2012-11-21 08:16:05

问题似乎是,crontab环境的环境与您不同。

您有两个简单而恰当的解决方案:

crontab的前几行中:

代码语言:javascript
复制
PATH=/foo:/bar:/qux
SHELL=/bin/bash

代码语言:javascript
复制
source ~/.bashrc

在你的剧本里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13488676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档