我的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:我试图在这些命令之间使用睡眠,第二个命令执行多次。我只需要一次。
摆脱尾随&的。&使命令在后台运行。它们在前台运行的默认行为是您想要的。
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。