免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4705 | 回复: 18
打印 上一主题 下一主题

[系统管理] crontab里tar老是无法运行,请高手指教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-09-15 09:31 |只看该作者 |倒序浏览
#!/usr/bin/expect -f
set password 123
set date [ clock format [ clock scan yesterday ] -format "%Y%m%d" ]
if {[ file isdirectory $date ] == 0} exit
spawn /bin/tar -cvzf /usr/sqec/repo/img/detailPage/$date.tar.gz /usr/sqec/repo/img/detailPage/$date
set timeout 18000
spawn /usr/bin/scp $date.tar.gz root@10.10.10.11:/bak_img/img_15/detailPage
expect "root@10.10.10.11's password:"
send "$password\r"
send "exit\r"
expect eof

这个脚本是备份昨天的数据,先要判断下昨天是否生成了目录名为日期的文件夹,然后打包,再scp至其他服务器。

但这个脚本我单独执行是没有问题的,放到crontab里就不行,要么不运行,本地不生成date.tar.gz,但11服务器居然生成了date.tar.gz包,但是该包是空的。

请各位指教。

谢谢。

论坛徽章:
0
2 [报告]
发表于 2015-09-15 09:42 |只看该作者
Sep 14 22:00:01 localhost CROND[15893]: (root) CMD (/usr/sqec/repo/img/detailPage/scpdetailpage2_244.sh )
Sep 14 22:01:01 localhost CROND[15896]: (root) CMD (run-parts /etc/cron.hourly)
Sep 14 22:01:01 localhost run-parts(/etc/cron.hourly)[15896]: starting 0anacron
Sep 14 22:01:01 localhost run-parts(/etc/cron.hourly)[15905]: finished 0anacron
Sep 14 22:10:01 localhost CROND[15910]: (root) CMD (/usr/sqec/repo/img/goods/scpgoods_to_244.sh)
Sep 14 22:20:01 localhost CROND[15927]: (root) CMD (/usr/sqec/repo/img/brand/scpbrand_to_244.sh)
Sep 14 22:30:01 localhost CROND[15932]: (root) CMD (/usr/sqec/repo/img/license/scplicense_to_244.sh)
Sep 14 22:40:01 localhost CROND[15938]: (root) CMD (/usr/sqec/repo/img/user/scpuser_to_244.sh)
Sep 14 23:01:01 localhost CROND[15948]: (root) CMD (run-parts /etc/cron.hourly)
Sep 14 23:01:01 localhost run-parts(/etc/cron.hourly)[15948]: starting 0anacron
Sep 14 23:01:01 localhost run-parts(/etc/cron.hourly)[15957]: finished 0anacron

log日志

定时信息:
[root@localhost log]# crontab -l
0 22 * * * /usr/sqec/repo/img/detailPage/scpdetailpage2_244.sh
10 22 * * * /usr/sqec/repo/img/goods/scpgoods_to_244.sh
20 22 * * * /usr/sqec/repo/img/brand/scpbrand_to_244.sh
30 22 * * * /usr/sqec/repo/img/license/scplicense_to_244.sh
40 22 * * * /usr/sqec/repo/img/user/scpuser_to_244.sh

论坛徽章:
12
IT运维版块每日发帖之星
日期:2015-11-17 06:20:00程序设计版块每日发帖之星
日期:2016-01-19 06:20:0015-16赛季CBA联赛之江苏
日期:2016-01-17 15:31:3915-16赛季CBA联赛之上海
日期:2016-01-16 15:44:3015-16赛季CBA联赛之浙江
日期:2016-01-15 20:38:1815-16赛季CBA联赛之北京
日期:2016-01-09 14:30:15CU十四周年纪念徽章
日期:2016-01-07 12:31:5115-16赛季CBA联赛之四川
日期:2016-01-01 11:49:1515-16赛季CBA联赛之深圳
日期:2015-12-24 14:23:4115-16赛季CBA联赛之山西
日期:2015-12-15 16:22:31技术图书徽章
日期:2015-12-10 17:41:0015-16赛季CBA联赛之北控
日期:2016-02-03 10:03:24
3 [报告]
发表于 2015-09-15 09:49 |只看该作者
有没有可能是环境变量的问题,crontab执行定时任务和手动执行环境变量是不同的,猜测哈

论坛徽章:
0
4 [报告]
发表于 2015-09-15 09:56 |只看该作者
回复 3# sync_1521


    但命令和路径我都用的绝对路径,应该不会是环境变量的问题吧。

我可以加入export试试。

论坛徽章:
0
5 [报告]
发表于 2015-09-15 10:02 |只看该作者
本帖最后由 nw5452 于 2015-09-15 10:03 编辑

看了下/var/spool/mail/root,信息如下
From root@localhost.localdomain  Thu Sep 10 01:00:01 2015
Return-Path: <root@localhost.localdomain>
X-Original-To: root
Delivered-To: root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)
        id A4739EAF99; Thu, 10 Sep 2015 01:00:01 +0800 (CST)
From: root@localhost.localdomain (Cron Daemon)
To: root@localhost.localdomain
Subject: Cron <root@localhost> /usr/sqec/repo/img/detailPage/scpdetailpage2_244.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20150909170001.A4739EAF99@localhost.localdomain>
Date: Thu, 10 Sep 2015 01:00:01 +0800 (CST)

spawn /bin/tar -zcvf 20150909.tar.gz 20150909
spawn /usr/bin/scp 20150909.tar.gz root@bak:/bak_img/img_15/detailPage
root@10.10.10.11's password:
20150909.tar.gz                               100%   45     0.0KB/s   00:00   

没有压缩就传输,有时候不执行。

这的问题是我要加入环境变量吗?

论坛徽章:
0
6 [报告]
发表于 2015-09-15 10:06 |只看该作者
profile的结果
[root@localhost mail]# cat /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

pathmunge () {
    case "{PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH1
            else
                PATH=$1PATH
            fi
    esac
}


if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`id -u`
        UID=`id -ru`
    fi
    USER="`id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi

# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /sbin
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
    pathmunge /sbin after
fi

HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002
else
    umask 022
fi

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null 2>&1
        fi
    fi
done

unset i
unset -f pathmunge

export JAVA_HOME=/usr/local/jdk1.7.0_71
export CLASSPATH=.JAVA_HOME/jre/lib/rt.jarJAVA_HOME/lib/dt.jarJAVA_HOME/lib/tools.jar
export PATH=$PATHJAVA_HOME/bin
export PATH

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
7 [报告]
发表于 2015-09-15 10:16 |只看该作者
你什么地方写等tar好再scp了?

论坛徽章:
0
8 [报告]
发表于 2015-09-15 10:20 |只看该作者
回复 7# waker


    set date [ clock format [ clock scan yesterday ] -format "%Y%m%d" ]
if {[ file isdirectory $date ] == 0} exit
spawn /bin/tar -cvzf /usr/sqec/repo/img/detailPage/$date.tar.gz /usr/sqec/repo/img/detailPage/$date
set timeout 18000
spawn /usr/bin/scp $date.tar.gz root@10.10.10.11:/bak_img/img_15/detailPage

这样不行吗?请高手指点下。

谢谢。

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
9 [报告]
发表于 2015-09-15 10:33 |只看该作者
回复 8# nw5452

1.行不行以自己的测试结果为准
2.建议思考下脚本最后一句的作用是什么   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
10 [报告]
发表于 2015-09-15 10:42 |只看该作者
tar和scp中间加个expect试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP