linux - Bash 脚本手动执行正常运行但不使用 crontab

标签 linux bash cron

你好,我有一个这样的脚本:

#!/usr/bin/bash


ARSIP=/apps/bea/scripts/arsip
CURDIR=/apps/bea/scripts
OUTDIR=/apps/bea/scripts/out
DIRLOG=/apps/bea/jboss-6.0.0/server/default/log
LISTFILE=$CURDIR/tmp/file.$$
DATE=`perl -e 'use POSIX; print strftime "%Y-%m-%d", localtime time-86400;'`

JAVACMD=/apps/bea/jdk1.6.0_26/bin/sparcv9/java

HR=00

for (( c=0; c<24; c++ ))
do
    echo $DATE $HR
    $JAVACMD -jar LatencyCounter.jar LatencyCounter.xml $DATE $HR
    sleep 1
    cd $OUTDIR
        mv btw_120-180.txt btw_120-180-$DATE-$HR.txt
        mv btw_180-360.txt btw_180-360-$DATE-$HR.txt
        mv btw_60-120.txt btw_60-120-$DATE-$HR.txt
        mv failed_to_deliver.txt failed_to_deliver-$DATE-$HR.txt
        mv gt_360.txt gt_360-$DATE-$HR.txt
        mv out.log out-$DATE-$HR.log
    cd -
    let HR=10#$HR+1
        HR=$(printf %02d $HR);
done

cd $OUTDIR

tar -cf latency-$DATE.tar btw*-$DATE-*.txt gt*$DATE*.txt out-$DATE-*.log
sleep 300
gzip latency-$DATE.tar
sleep 300
/apps/bea/scripts/summaryLatency.sh
sleep 300
rm -f btw* failed* gt* out*

#mv latency-$DATE.tar.gz ../$ARSIP
cd -

它基本上在与该脚本相同的目录中执行 jar 文件,然后对结果进行 tar、gzip 压缩并执行另一个 bash 文件,然后删除所有先前收集的文件。问题是我需要这个脚本每天运行,我使用 crontab 来做到这一点。它仍然返回空的 tar 文件,但如果我手动执行它,它运行良好。我还有其他 4 个脚本在 crontab 中运行,它们运行良好。我仍然无法弄清楚这种现象的主要原因是什么

谢谢

最佳答案

我来试一试:您的脚本是由/bin/sh 而不是/bin/bash 运行的。

尝试在 cron 条目中使用 bash 显式运行它,如下所示:

* * * * * /bin/bash /your/script

关于linux - Bash 脚本手动执行正常运行但不使用 crontab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7199746/

相关文章:

docker - 在我将 cron 文件重新保存在 docker 容器中之前,Cron 作业无法正常工作

linux - 在 Linux 中获取内存页的起始地址

linux - 如何为每个命令重定向文件中的 STDOUT 和 STDERR?

Bash:将标准输入复制到文件

Bash 变量 SECONDS 立即扩展还是延迟扩展?

mysql - bash 脚本中的 mysql 查询仅返回一个字符串

php - Cron 作业调用带有变量的 PHP 脚本

docker - Docker Container运行周期过程以填充数据库

linux - Bash 脚本从源文件读取变量显示没有这样的文件或目录错误

linux - GoDaddy cpanel 安装 : Trying to install Drush for Drupal and possibly can't find php-cli?