'ожидайте' не ожидает 'wget - фон'

У вас есть несколько вариантов:

  1. Установите local_umask в vsftpd. conf на 022 вместо 077 по умолчанию
  2. Установите chmod_enable на YES и сделайте CHMOD через ftp клиент (если он этого еще не делает)

Кстати, лучше использовать scp, потому что он не передает ваши учетные данные в открытом виде, и вы можете настроить аутентификацию с открытым ключом, так что вам не придется вводить пароль каждый раз, но я не уверен, как он устанавливает разрешения на загруженные файлы.

1
03.04.2014, 00:16
3 ответа

Как было предложено, вы оба можете попробовать команду

wait
#instead of 
wait$!

, потому что я действительно сомневаюсь, что существует какая-либо команда с именем wait $! может быть, здесь вы хотите использовать подождите, $!

или, поскольку это сценарий cron, вы можете отключить опцию wget - background , потому что вы хотите дождаться окончания этой команды, а не помещать ее в фоновый режим.

3
27.01.2020, 23:15

Вы пробовали подождите {!} ? Прежде чем продолжить, он дождется завершения всех фоновых процессов.

-1
27.01.2020, 23:15

подождите, $! - синтаксическая ошибка, отсутствует пробел. Здесь это не оказывает никакого влияния, потому что вы никогда не запускаете фоновое задание, поэтому $! остается пустым, а команда wait без аргументов, которая ожидает всех фоновых заданий - и поскольку их нет, она немедленно возвращается.

Есть разница между использованием wget --background… и wget… & . Первая команда сообщает wget , что нужно разветвить дочерний процесс, а затем выйти:

(bash)

  fork ——————————————→
  wait                  exec wget --background …
   ⋮
   ⋮                    fork ———————————————————————→
      ←——————————————   exit                           download
  (next script line)                                             ⋮

Когда родительский процесс wget (который является передним планом) возвращается, bash возобновляет выполнение процесса. С помощью wget… & оболочка создает фоновый процесс:

(bash)

  fork ——————————————————→
  (next script line)       exec wget --background …

                           download
                            ⋮

В этом случае вы можете дождаться завершения процесса wget:

wget … &
wait $!

Однако это бессмысленно: запуск фонового задания только для ожидания поскольку это эквивалентно запуску работы на переднем плане.

wget …
4
27.01.2020, 23:15

Теги

Похожие вопросы