开发者社区> 问答> 正文

重击直到完成作业并执行下一个命令

我的bash脚本有问题:

cmd1='/usr/bin/wget http://mysite/folder/'
$cmd1 > "/var/www/html/log/data.log" 2>&1 & 

cmd2='/usr/bin/indexer --rotate --all' 
$cmd2 > "/var/www/html/log/$(date +%Y-%m-%d_%H:%M)" 2>&1 & 
通过wget获取数据需要花
费```  
很多时间,但是下一个命令要在wget完成作业之前执行。

如何检查wget是否已完成并执行下一个命令。谢谢!

PS:我试图在这些命令之间使用睡眠,第二个命令执行多次。我只需要一次。

展开
收起
祖安文状元 2020-01-05 18:59:28 341 0
1 条回答
写回答
取消 提交回答
  • 摆脱尾随&的。&使命令在后台运行。它们在前台运行的默认行为是您想要的。

    cmd1='/usr/bin/wget http://mysite/folder/'
    $cmd1 > "/var/www/html/log/data.log" 2>&1
    
    cmd2='/usr/bin/indexer --rotate --all' 
    $cmd2 > "/var/www/html/log/$(date +%Y-%m-%d_%H:%M)" 2>&1
    
    

    旁注,您实际上不应该将命令存储在变量中。使用功能。也没有理由写出来/usr/bin。

    cmd1() { wget http://mysite/folder/; }
    cmd1 > /var/www/html/log/data.log 2>&1
    
    cmd2() { indexer --rotate --all; }
    cmd2 > /var/www/html/log/"$(date +%Y-%m-%d_%H:%M)" 2>&1
    
    

    您现在可以在函数中存储整个命令,重定向和所有内容。您可能已经注意到使用变量时无法做到这一点。

    cmd1() { wget http://mysite/folder/ > /var/www/html/log/data.log 2>&1; }
    cmd2() { indexer --rotate --all > /var/www/html/log/"$(date +%Y-%m-%d_%H:%M)" 2>&1; }
    
    cmd1
    cmd2
    
    2020-01-05 18:59:45
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
MaxCompute Logview参数详解和问题排查(废弃) 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载