V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
hzqim
V2EX  ›  Linux

crontab 出错,求指点。

  •  
  •   hzqim · 2014-05-31 09:40:07 +08:00 · 2569 次点击
    这是一个创建于 3615 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Linux小白遇到问题

    backup.sh有一行是这样的:
    tar -jcf $DIR/$TAR -C $PHPDIR ssl www -C $NGINXDIR conf.d -C $DIR *.sql && rm -rf $DIR/*.sql
    #把ssl www conf.d 这三个文件夹和 sql文件打包,如果成功,删除sql文件。
    sh backup.sh没有问题,但是用crontab就停止在这里,变量在backup.sh里已经声明。

    谢谢解答。
    6 条回复    2014-05-31 17:14:28 +08:00
    yangqi
        1
    yangqi  
       2014-05-31 09:44:02 +08:00   ❤️ 1
    crontab里要用全路径
    csx163
        2
    csx163  
       2014-05-31 09:45:03 +08:00   ❤️ 1
    加个>> $HOME/for_crontab/mylog.log 2>&1 到crontab后面
    Tink
        3
    Tink  
       2014-05-31 12:35:11 +08:00   ❤️ 1
    全路径+1 backup.sh要全路径,sh也要全路径
    superbear
        4
    superbear  
       2014-05-31 12:51:44 +08:00   ❤️ 1
    @yangqi +1
    kaichen
        5
    kaichen  
       2014-05-31 16:55:40 +08:00   ❤️ 1
    如果不想使用全设置,又不想去设置变量,那么可以在Shebang使用bash -l,或者在crontab上调用bash时带上-l选项。

    使用-l选项,可以作为Login shell执行脚本,这样环境变量什么都设置好了。
    hzqim
        6
    hzqim  
    OP
       2014-05-31 17:14:28 +08:00
    @yangqi
    @csx163
    @Tink
    @superbear

    谢谢您们的指点,crontab一般是要求绝对路径的,但本例中的问题出在*.sql
    如果新建一个文件夹 sql ,之后把数据库导出至sql文件夹中,上述命令改成
    tar -jcf $DIR/$TAR -C $PHPDIR ssl www -C $NGINXDIR conf.d -C $DIR sql && rm -rf $DIR/sql
    就能通过。

    另外,如果不新建sql文件夹,把*.sql改成具体的文件名,也是可以正确运行的。所以,我想问题出在crontab把 *.sql理解成文件名而不是通配符,而事实不存在‘*.sql’这个文件,导致不能完全打包,之后的命令rm -rf $DIR/*.sql便无法运行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3411 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:34 · PVG 19:34 · LAX 04:34 · JFK 07:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.