我有一个通过 Crontab 执行的 shell 脚本。shell 脚本正在正确地创建 Sqlplus 作业并且它们运行完成。不工作的是最后的 while 循环,我希望脚本等待所有 Sqlplus 作业完成。
如果我手动执行这个 shell 脚本,最后的 while 循环可以正常工作,并且 shell 脚本在所有 Sqlplus 作业完成之前不会退出。
如何在通过 Crontab 运行时获得 while 循环以查看 Sqlplus 作业?
#!/bin/bash
cd /some/path/to/folder
source ~/.profile
echo 'Run started'
echo $(date)
i=0
while [ $i -lt 12 ]
do
echo 'Starting process ' $i
sqlplus username/password@'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=server)(PORT=1521))(CONNECT_DATA=(SID=SERVERSID)))' @import.sql $i > import_batch$i.log &
let i=$i+1
done
while [ $(ps -a | grep -w -c 'sqlplus') -ne 0 ] //This is not working in Crontab
until [[ -z $(pgrep -flx 'sqlplus') ]] //I've also tried this (instead of the while in my script) without success in Crontab
do
sleep 60
done
echo 'Run completed'
echo $(date)