Проще всего было бы добавить крошечныйsleep
:
cmd1 & sleep 1 && cmd2
Более надежным было бы использование оболочки для cmd2
, которая удостоверится, что cmd1
действительно работает, а затем продолжит работу.
Что-то вроде:
while ! pgrep cmd1; do
sleep 1
done
cmd2
while !
можно заменить на until
Кстати.
Интересный вопрос. При быстром просмотре справочной страницы (в поисках «пользователя» и, когда это не дало результатов, поиск «владельца» )должен выполнить следующее:
tar xf thetarball.tgz --to-command='sh -c "echo $TAR_UNAME $TAR_GNAME"' | sort | uniq -c
Очевидно, измените сценарий в соответствии с вашими потребностями. Вам могут понадобиться $TAR_UID
и $TAR_GID
вместо имен для некоторых вариантов использования.
Я также рекомендую вам прочитать об опциях --owner-map
и --group-map
для tar
; они звучат так, как будто они могут принести большую пользу вашему варианту использования и будут намного проще, чем создание всех пользователей и групп заранее.
Быстросборный:
группы:
tar tvf thetarball.tgz | awk '{print $2}' | cut -d/ -f2 | sort -u
пользователи:
tar tvf thetarball.tgz | awk '{print $2}' | cut -d/ -f1 | sort -u
пары пользователей/групп:
tar tvf thetarball.tgz | awk '{print $2}' | sort -u