crontab 执行脚本注意的问题

本文介绍了一种常见Shell脚本执行错误的情况:当脚本名称与其试图启动的应用程序名称相似时,会导致进程误判为已运行而无法启动。文章提供了避免此类命名冲突的具体方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

#!/bin/bash

FILEPATH=$(cd `dirname $0`; pwd)
FILENAME=${FILEPATH}/excute_pro

cd ${FILEPATH}
pid=`ps -ef | grep $FILENAME | grep -v grep  | awk '{print $2}'`
pidnum=`echo $pid | wc | awk '{print $2}'`

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:../lib/:/usr/local/lib/:/usr/local/mysql/lib/mysql/

if [ $pidnum -ne 0 ]; then
        echo "$FILENAME is running"
else
        ulimit -c 4096000
        ulimit -n 65535
        $FILENAME &
        #echo "hello"
        echo "$FILENAME started at `date`" >> ../log/restart.log
        #echo "abdd"
fi
        #echo "end"

如果你给该脚本取名excute_pro.sh或者包含excute_pro****.sh,把该脚本放到crontab后,想要执行的excute_pro就永远得不到执行,因为先拉起类似excute_pro.sh的执行,在pid=`ps -ef | grep $FILENAME | grep -v grep  | awk '{print $2}'` pidnum=`echo $pid | wc | awk '{print $2}'`语句中,就认为名为excute_pro进程在执行,导致不会执行else后的语句。解决办法是,不要让自己将要执行的可执行文件excute_pro与该脚本名字有“重复”的地方。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值