首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Bash脚本可以手动运行php脚本,但不能在Cron中运行

Bash脚本可以手动运行php脚本,但不能在Cron中运行
EN

Stack Overflow用户
提问于 2019-03-20 19:25:53
回答 1查看 31关注 0票数 0

我有一个这样的bash脚本:

代码语言:javascript
复制
#!/bin/bash

log_file=/home/michael/bash/test.log

checkalive=checkalive.php

#declare
needRestart=0

#Check checkalive.php

is_checkalive=`ps aux | grep -v grep| grep -v "$0" | grep $checkalive| wc -l | awk '{print $1}'`

if [ $is_checkalive != "0" ] ;
then

    checkaliveId=$(ps -ef | grep $checkalive | grep -v 'grep' | awk '{ printf $2 }')

    echo "Service $checkalive is running. $checkaliveId"

else

    echo "$checkalive OFF"
    needRestart=1

fi

#NEED needRestart

if [ $needRestart == "1" ];
then
    #START SERVICE
    echo "Restarting services..."

    /usr/bin/php5.6 /home/michael/bash/$checkalive >/dev/null 2>&1 &
    echo "$checkalive..."
    echo `date '+%Y-%m-%d %H:%M:%S'` " Start /home/michael/bash/$checkalive" >> $log_file
fi

我可以手动运行它,但是当我尝试在Cron中运行它时,由于某些原因,它不能工作。显然,命令是:

代码语言:javascript
复制
/usr/bin/php5.6 /home/michael/bash/$checkalive >/dev/null 2>&1 &

不起作用。

所有文件权限都已设置为可执行文件。有什么建议吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-21 04:00:15

您遇到了cron最常见的错误之一,试图像使用任意shell脚本一样使用它。Cron is not a shell script,你不能在一个代码中做所有你能做的事情,比如取消引用变量或者设置任意的新变量。

我建议您将值替换到cron行中,并避免使用变量

代码语言:javascript
复制
/usr/bin/php5.6 /home/michael/bash/checkalive.php >/dev/null 2>&1 &

另外,考虑删除尾随的&,因为它不是必需的。

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

https://stackoverflow.com/questions/55259660

复制
相关文章

相似问题

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