在crontab 里面运行的脚本,没执行压缩gzip 什么原因啊

时间:2022-09-14 07:59:49
各位大虾:
     小弟跪求解答,
     hp 的unix,在crontab 头运行的脚本,,明明写了,压缩,但就是没压缩。。。。不晓得什么原因。
     路径也用的绝对路径。。
     下面,是一个我写的脚本,,实现功能是 ,压缩文件后,自动移走到当天的目录。
     #/bin/ksh  

TZ=CST+16
export TZ


ToDay=`date +%Y%m%d`
today=`date +%y%m%d`
month=`date +%Y%m` 

TZ=CST-8
export TZ

mkdir -p /raw1/gsm_eric/rawcdr_bak/MSC_1/$month/$ToDay/
mkdir -p /raw1/gsm_eric/rawcdr_bak/MSC_2/$month/$ToDay/
mkdir -p /raw1/gsm_eric/rawcdr_bak/MSC_3/$month/$ToDay/
mkdir -p /raw1/gsm_eric/rawcdr_bak/MSC_4/$month/$ToDay/
mkdir -p /raw1/gsm_eric/rawcdr_bak/MSC_5/$month/$ToDay/
mkdir -p /raw1/gsm_eric/rawcdr_bak/MSC_6/$month/$ToDay/
mkdir -p /raw1/gsm_eric/rawcdr_bak/MSC_7/$month/$ToDay/
mkdir -p /raw1/gsm_eric/rawcdr_bak/MSC_8/$month/$ToDay/
mkdir -p /raw1/gsm_eric/rawcdr_bak/MSC_9/$month/$ToDay/
mkdir -p /raw1/gsm_hw_gtg/rawcdr_bak/MSC_1/$month/$ToDay/
mkdir -p /raw1/gsm_hw_gtg/rawcdr_bak/MSC_2/$month/$ToDay/
mkdir -p /raw1/gsm_hw_gtg/rawcdr_bak/MSC_3/$month/$ToDay/
mkdir -p /raw1/gsm_hw_gtg/rawcdr_bak/MSC_4/$month/$ToDay/
mkdir -p /raw1/gsm_eric_Tju/rawcdr_bak/MSC_1/$month/$ToDay/
mkdir -p /raw1/gsm_zte/rawcdr_bak/MSC_1/$month/$ToDay/
mkdir -p /raw1/gsm_cro/rawcdr_bak/$month/$ToDay/
mkdir -p /raw1/gsm_cbo/rawcdr_bak/$month/$ToDay/
mkdir -p /raw1/gsm_cio/rawcdr_bak/$month/$ToDay/
mkdir -p /raw1/gsm_zte_2g/rawcdr_bak/MSC_1/$month/$ToDay/
mkdir -p /raw2/gprs_egcdr_3g/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/gprs_scdr_3g/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/gprs_egcdr_3g_hw/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/hwsms/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/intersms/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/telsms/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/ptpsms/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/ltzxsms/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/gprsmms/rawcdr_bak/$month/$ToDay/
mkdir -p /raw1/vpn/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/vac/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/gw_cc08/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/gw_204_221_230/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/gw_basecall_pre/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/gw_basecall_af/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/gw_400_800/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/gw_lan/rawcdr_bak/$month/$ToDay/
mkdir -p /raw2/voip/rawcdr_bak/$month/$ToDay/
mkdir -p /bill2/xuanling/rawcdr_bak/$month/$ToDay/
mkdir -p /bill2/zengzhi/rawcdr_bak/$month/$ToDay/
mkdir -p /bill2/zengzhi17/rawcdr_bak/$month/$ToDay/
mkdir -p /bill2/sp/rawcdr_bak/$month/$ToDay/

bak_path1="/raw1/gsm_eric/rawcdr_bak/MSC_1/$month/$ToDay/"
bak_path2="/raw1/gsm_eric/rawcdr_bak/MSC_2/$month/$ToDay/"
bak_path3="/raw1/gsm_eric/rawcdr_bak/MSC_3/$month/$ToDay/"
bak_path4="/raw1/gsm_eric/rawcdr_bak/MSC_4/$month/$ToDay/"
bak_path5="/raw1/gsm_eric/rawcdr_bak/MSC_5/$month/$ToDay/"
bak_path6="/raw1/gsm_eric/rawcdr_bak/MSC_6/$month/$ToDay/"
bak_path7="/raw1/gsm_eric/rawcdr_bak/MSC_7/$month/$ToDay/"
bak_path8="/raw1/gsm_eric/rawcdr_bak/MSC_8/$month/$ToDay/"
bak_path9="/raw1/gsm_eric/rawcdr_bak/MSC_9/$month/$ToDay/"
bak_path10="/raw1/gsm_hw_gtg/rawcdr_bak/MSC_1/$month/$ToDay/"
bak_path11="/raw1/gsm_hw_gtg/rawcdr_bak/MSC_2/$month/$ToDay/"
bak_path12="/raw1/gsm_hw_gtg/rawcdr_bak/MSC_3/$month/$ToDay/"
bak_path13="/raw1/gsm_hw_gtg/rawcdr_bak/MSC_4/$month/$ToDay/"
bak_path14="/raw1/gsm_eric_Tju/rawcdr_bak/MSC_1/$month/$ToDay/"
bak_path15="/raw1/gsm_zte/rawcdr_bak/MSC_1/$month/$ToDay/"
bak_path16="/raw1/gsm_cro/rawcdr_bak/$month/$ToDay/"
bak_path17="/raw1/gsm_cbo/rawcdr_bak/$month/$ToDay/"
bak_path18="/raw1/gsm_cio/rawcdr_bak/$month/$ToDay/"
bak_path19="/raw1/gsm_zte_2g/rawcdr_bak/MSC_1/$month/$ToDay/"
bak_path20="/raw2/gprs_egcdr_3g/rawcdr_bak/$month/$ToDay/"
bak_path21="/raw2/gprs_scdr_3g/rawcdr_bak/$month/$ToDay/"
bak_path22="/raw2/gprs_egcdr_3g_hw/rawcdr_bak/$month/$ToDay/"
bak_path23="/raw2/hwsms/rawcdr_bak/$month/$ToDay/"
bak_path24="/raw2/intersms/rawcdr_bak/$month/$ToDay/"
bak_path25="/raw2/telsms/rawcdr_bak/$month/$ToDay/"
bak_path26="/raw2/ptpsms/rawcdr_bak/$month/$ToDay/"
bak_path27="/raw2/ltzxsms/rawcdr_bak/$month/$ToDay/"
bak_path28="/raw2/gprsmms/rawcdr_bak/$month/$ToDay/"
bak_path29="/raw1/vpn/rawcdr_bak/$month/$ToDay/"
bak_path30="/raw2/vac/rawcdr_bak/$month/$ToDay/"
bak_path31="/raw2/gw_cc08/rawcdr_bak/$month/$ToDay/"
bak_path32="/raw2/gw_204_221_230/rawcdr_bak/$month/$ToDay/"
bak_path33="/raw2/gw_basecall_pre/rawcdr_bak/$month/$ToDay/"
bak_path34="/raw2/gw_basecall_af/rawcdr_bak/$month/$ToDay/"
bak_path35="/raw2/gw_400_800/rawcdr_bak/$month/$ToDay/"
bak_path36="/raw2/gw_lan/rawcdr_bak/$month/$ToDay/"
bak_path37="/raw2/voip/rawcdr_bak/$month/$ToDay/"
bak_path38="/bill2/xuanling/rawcdr_bak/$month/$ToDay/"
bak_path39="/bill2/zengzhi/rawcdr_bak/$month/$ToDay/"
bak_path40="/bill2/zengzhi17/rawcdr_bak/$month/$ToDay/"
bak_path41="/bill2/sp/rawcdr_bak/$month/$ToDay/"


#if ps -ef|grep $bak_path1 |grep -v grep |grep -v vi|grep -v more |grep -v tail
#then                                                      
        #echo "moving file" > /raw1/log/caijibak.log
#else                                                                       
        echo "start module: move bak_file" >> /raw1/log/caijibak.log 
        cd /raw1/gsm_eric/rawcdr_bak/MSC_1/
        gzip /raw1/gsm_eric/rawcdr_bak/MSC_1/*
        file=`ls $today*`
        for i in $file
        do
        mv $i  $bak_path1 >/dev/null 
        done      
#fi

#if ps -ef|grep $bak_path2 |grep -v grep |grep -v vi|grep -v more |grep -v tail
#then                                                      
        #echo "moving file" > /raw1/log/caijibak.log
#else                                                                       
        echo "start module: move bak_file" >> /raw1/log/caijibak.log 
        cd /raw1/gsm_eric/rawcdr_bak/MSC_2/
        gzip /raw1/gsm_eric/rawcdr_bak/MSC_2/*
        file=`ls $today*`
        for i in $file
        do
        mv $i  $bak_path2 >/dev/null         
        done     
#fi

#if ps -ef|grep $bak_path3 |grep -v grep |grep -v vi|grep -v more |grep -v tail
#then                                                      
        #echo "moving file" > /raw1/log/caijibak.log
#else                                                                       
        echo "start module: move bak_file" >> /raw1/log/caijibak.log 
        cd /raw1/gsm_eric/rawcdr_bak/MSC_3/
        gzip /raw1/gsm_eric/rawcdr_bak/MSC_3/*
        file=`ls $today*`
        for i in $file
        do
        mv $i  $bak_path3 >/dev/null 
        done      
#fi

#if ps -ef|grep $bak_path4 |grep -v grep |grep -v vi|grep -v more |grep -v tail
#then                                                      
        #echo "moving file" > /raw1/log/caijibak.log
#else                                                                       
        echo "start module: move bak_file" >> /raw1/log/caijibak.log 
        cd /raw1/gsm_eric/rawcdr_bak/MSC_4/
        gzip /raw1/gsm_eric/rawcdr_bak/MSC_4/*
        file=`ls $today*`
        for i in $file
        do
        mv $i  $bak_path4 >/dev/null        
        done    
#fi



16 个解决方案

#1


你的内容太长,我没有仔细看,请原谅。你使用命令
run-parts /dir/to/your/script/
来查看一下你脚本所在的目录中合法的任务中是否有你的脚本存在,run-parts是检查合法性的。
如果没有,那么可能是你的脚本以.sh结尾,请删除.sh,或者是没有执行权限,请修改权限。

#2


billapp@ynbillapp/bill1/yangli$run-parts caiji_bak_test2.sh
ksh: run-parts:  not found
billapp@ynbillapp/bill1/yangli$run-parts caiji_bak_test1.sh
ksh: run-parts:  not found


这样吗?
not found  
caiji_bak_test.sh  这个是我要执行的 脚本,权限是 777
crontab 里面是
30 0 * * * /bill1/yangli/caiji_bak_test.sh

#3


这个脚本,里面的 移走文件的功能都实现了,,就是不gzip。。

#4


我怀疑是不是脚本执行的时候没有找到gzip这个命令
你看你的gzip在哪儿 然后用绝对路径
建立你在写脚本的时候在开始的时候把命令的全路径都写上
比如
gzip=/bin/gzip
mv=/bin/mv
这样

然后后面再用gzip mv

#5


up

#6


在 /bin/  下果然没找到 gzip  。。。
billapp@ynbillapp/bin$ls gzip
gzip not found

billapp@ynbillapp/bin$ls mv
mv

现在要找 gzip 在什么地方,,应该怎么找。。

#7


whereis gzip

或者用find命令

#8


billapp@ynbillapp/bill1$whereis gzip                                                                                            
gzip: /usr/contrib/bin/gzip /usr/contrib/man/man1.Z/gzip.1
billapp@ynbillapp/bill1$whereis mv
mv: /sbin/mv /usr/bin/mv /usr/share/man/man1.Z/mv.1

但是  
billapp@ynbillapp/bin$ls mv 
mv 

这个 mv 不是  在/bin/mv  下吗?  为什么  whereis mv 出现 
billapp@ynbillapp/bill1$whereis mv
mv: /sbin/mv /usr/bin/mv /usr/share/man/man1.Z/mv.1


billapp@ynbillapp/bill1$whereis gzip                                                                                            
gzip: /usr/contrib/bin/gzip /usr/contrib/man/man1.Z/gzip.1

绝对路径  gzip=     该怎么写

#9


我也遇到过Crontab的问题:手动执行那个脚本没有问题,但是加到crontab之后就出问题了……
后来只好放弃crontab了。

#10


在脚本头  加了
#/bin/ksh  
gzip=/usr/contrib/bin/gzip
mv=/usr/bin/mv

还是不执行压缩。。

#11


引用 10 楼 thurder42 的回复:
在脚本头  加了
#/bin/ksh 
gzip=/usr/contrib/bin/gzip
mv=/usr/bin/mv

还是不执行压缩。。

你先用/usr/contrib/bin/gzip来压缩一个文件测试一下

#12


引用 8 楼 thurder42 的回复:
billapp@ynbillapp/bill1$whereis gzip                                                                                           
gzip: /usr/contrib/bin/gzip /usr/contrib/man/man1.Z/gzip.1
billapp@ynbillapp/bill1$whereis mv
mv: /sbin/mv /usr/bin/mv /usr/share/man/man1.Z/mv.1

但是 
billapp@ynbillapp/bin$ls mv
mv

这个 mv 不是  在/bin/mv  下吗?  为什么  whereis mv 出现
billapp@ynbillapp/bill1$whereis mv
mv: /sbin/mv /usr/bin/mv /usr/share/man/man1.Z/mv.1

其实 /bin/mv  和 /usr/bin/mv 是同一个命令
你用diff  /bin/mv  /usr/bin/mv  就会发现

#13


引用 10 楼 thurder42 的回复:
在脚本头  加了
#/bin/ksh 
gzip=/usr/contrib/bin/gzip
mv=/usr/bin/mv

还是不执行压缩。。

有了
gzip=/usr/contrib/bin/gzip
mv=/usr/bin/mv

在后面用这2个命令的时候
要这样
$gzip 
$mv 

#14


你试试 熊猫哥地方法。


还有就是增加一下shell的调试信息 
   你试试在crontab 里面将shell 的调试信息是否可重定向到文件中。

这样子看一下 到底是哪里出了问题。好像在加入crontab的时候 有一些环境中的东西他是找不到的。以前也遇到过

#15


crontab  运行 shell 与 手工运行最大的不同就 环境不同, 
如果你的 shell 手工运行能工作,  那肯定就是环境问题了。

最常见的就是PATH问题。

你把你的命令的路径全带上,,

#16


  问题好了。。
  感谢大家
  我把脚本里头所有的  gzip 
  变成/usr/contrib/bin/gzip   
  就好了。。

#1


你的内容太长,我没有仔细看,请原谅。你使用命令
run-parts /dir/to/your/script/
来查看一下你脚本所在的目录中合法的任务中是否有你的脚本存在,run-parts是检查合法性的。
如果没有,那么可能是你的脚本以.sh结尾,请删除.sh,或者是没有执行权限,请修改权限。

#2


billapp@ynbillapp/bill1/yangli$run-parts caiji_bak_test2.sh
ksh: run-parts:  not found
billapp@ynbillapp/bill1/yangli$run-parts caiji_bak_test1.sh
ksh: run-parts:  not found


这样吗?
not found  
caiji_bak_test.sh  这个是我要执行的 脚本,权限是 777
crontab 里面是
30 0 * * * /bill1/yangli/caiji_bak_test.sh

#3


这个脚本,里面的 移走文件的功能都实现了,,就是不gzip。。

#4


我怀疑是不是脚本执行的时候没有找到gzip这个命令
你看你的gzip在哪儿 然后用绝对路径
建立你在写脚本的时候在开始的时候把命令的全路径都写上
比如
gzip=/bin/gzip
mv=/bin/mv
这样

然后后面再用gzip mv

#5


up

#6


在 /bin/  下果然没找到 gzip  。。。
billapp@ynbillapp/bin$ls gzip
gzip not found

billapp@ynbillapp/bin$ls mv
mv

现在要找 gzip 在什么地方,,应该怎么找。。

#7


whereis gzip

或者用find命令

#8


billapp@ynbillapp/bill1$whereis gzip                                                                                            
gzip: /usr/contrib/bin/gzip /usr/contrib/man/man1.Z/gzip.1
billapp@ynbillapp/bill1$whereis mv
mv: /sbin/mv /usr/bin/mv /usr/share/man/man1.Z/mv.1

但是  
billapp@ynbillapp/bin$ls mv 
mv 

这个 mv 不是  在/bin/mv  下吗?  为什么  whereis mv 出现 
billapp@ynbillapp/bill1$whereis mv
mv: /sbin/mv /usr/bin/mv /usr/share/man/man1.Z/mv.1


billapp@ynbillapp/bill1$whereis gzip                                                                                            
gzip: /usr/contrib/bin/gzip /usr/contrib/man/man1.Z/gzip.1

绝对路径  gzip=     该怎么写

#9


我也遇到过Crontab的问题:手动执行那个脚本没有问题,但是加到crontab之后就出问题了……
后来只好放弃crontab了。

#10


在脚本头  加了
#/bin/ksh  
gzip=/usr/contrib/bin/gzip
mv=/usr/bin/mv

还是不执行压缩。。

#11


引用 10 楼 thurder42 的回复:
在脚本头  加了
#/bin/ksh 
gzip=/usr/contrib/bin/gzip
mv=/usr/bin/mv

还是不执行压缩。。

你先用/usr/contrib/bin/gzip来压缩一个文件测试一下

#12


引用 8 楼 thurder42 的回复:
billapp@ynbillapp/bill1$whereis gzip                                                                                           
gzip: /usr/contrib/bin/gzip /usr/contrib/man/man1.Z/gzip.1
billapp@ynbillapp/bill1$whereis mv
mv: /sbin/mv /usr/bin/mv /usr/share/man/man1.Z/mv.1

但是 
billapp@ynbillapp/bin$ls mv
mv

这个 mv 不是  在/bin/mv  下吗?  为什么  whereis mv 出现
billapp@ynbillapp/bill1$whereis mv
mv: /sbin/mv /usr/bin/mv /usr/share/man/man1.Z/mv.1

其实 /bin/mv  和 /usr/bin/mv 是同一个命令
你用diff  /bin/mv  /usr/bin/mv  就会发现

#13


引用 10 楼 thurder42 的回复:
在脚本头  加了
#/bin/ksh 
gzip=/usr/contrib/bin/gzip
mv=/usr/bin/mv

还是不执行压缩。。

有了
gzip=/usr/contrib/bin/gzip
mv=/usr/bin/mv

在后面用这2个命令的时候
要这样
$gzip 
$mv 

#14


你试试 熊猫哥地方法。


还有就是增加一下shell的调试信息 
   你试试在crontab 里面将shell 的调试信息是否可重定向到文件中。

这样子看一下 到底是哪里出了问题。好像在加入crontab的时候 有一些环境中的东西他是找不到的。以前也遇到过

#15


crontab  运行 shell 与 手工运行最大的不同就 环境不同, 
如果你的 shell 手工运行能工作,  那肯定就是环境问题了。

最常见的就是PATH问题。

你把你的命令的路径全带上,,

#16


  问题好了。。
  感谢大家
  我把脚本里头所有的  gzip 
  变成/usr/contrib/bin/gzip   
  就好了。。