Как пользователь Jens уже упоминалось, а также из моего опыта, если вы не используете очень простой и, как правило, одну команду, вы должны придерживаться файлов сценариев. Итак, в вашем случае я бы пошел с файлом сценария. Я приведу вам пример.
#!/bin/bash
dir_where_files_are_or_not=/filespath
dir_where_files_should_go=/another/filespath
save_dir=/savefiles/path
# ok, lets start by checking if dir contains files
if [ "$(ls -A $dir_where_files_are_or_not)" ]; then
# dir contains files, so lets rsync and mv them
rsync -au $dir_where_files_are_or_not/ $dir_where_files_should_go
mv $dir_where_files_are_or_not/* $save_dir
else
# dir is empty, lets send email
mail -s "DIR IS EMPTY" [email protected] <<< "message"
fi
Теперь я просто поместил этот код в файл. Дайте ему имя, например «chkfiles» и сохраните его в каталоге (я использую/usr/local/sbin для всех моих скриптов).
Далее в командной строке запустите команду chmod +x /usr/local/sbin/chkfiles
, чтобы сделать файл исполняемым. Затем добавьте скрипт к вашему crontab.
Я хотел бы предложить следующую строку внутри кронтаб:
*/5 6-18 * * 1-6 /bin/bash /usr/local/sbin/chkfiles
Я использовал/bin/Баш, чтобы вызвать правильный интерпретатор для этого сценария. Теперь он должен работать должным образом.
Важные замечания:
- Перед запуском скрипта вам необходимо изменить
dir_where_files_are_or_not
, dir_where_files_should_go
и save_dir
ВАР к вашим потребностям.
- ли НЕ включают слеш в директориях, в противном случае Rsync и мв не могут делать то, что вы действительно хотите
С уважением
Что о наличии надлежащего сценария с этими условиями и вызвав ее кронтаб ? Как это довольно сложно отслеживать и поддерживать. – fedorqui
Спасибо! :) Теперь я изменил две команды на {}, но это не помогает – user3310114
Только если я объявление выход 0; Позади двух коммандов, я доставляю сообщение об ошибке, но когда файлы находятся в DIR, я получаю сообщение об ошибке: /bin/sh: -c: строка 0: ошибка синтаксиса около неожиданного токена '} ' – user3310114