У вас есть несколько вариантов:
local_umask
в vsftpd. conf
на 022 вместо 077 по умолчаниюchmod_enable
на YES
и сделайте CHMOD через ftp клиент (если он этого еще не делает)Кстати, лучше использовать scp
, потому что он не передает ваши учетные данные в открытом виде, и вы можете настроить аутентификацию с открытым ключом, так что вам не придется вводить пароль каждый раз, но я не уверен, как он устанавливает разрешения на загруженные файлы.
Как было предложено, вы оба можете попробовать команду
wait
#instead of
wait$!
, потому что я действительно сомневаюсь, что существует какая-либо команда с именем wait $!
может быть, здесь вы хотите использовать подождите, $!
или, поскольку это сценарий cron, вы можете отключить опцию wget - background
, потому что вы хотите дождаться окончания этой команды, а не помещать ее в фоновый режим.
Вы пробовали подождите {!}
? Прежде чем продолжить, он дождется завершения всех фоновых процессов.
подождите, $!
- синтаксическая ошибка, отсутствует пробел. Здесь это не оказывает никакого влияния, потому что вы никогда не запускаете фоновое задание, поэтому $!
остается пустым, а команда 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 …