Смущенный этой командой `поиск` в сценарии Bash?

Поскольку оболочка запускается без hup , она получает сигнал SIGHUP при закрытии сеанса и отправляет его всем процессам в конвейере. Поскольку вторая команда mysql снова выполняется без nohup , она прекращает работу и отправляет SIGPIPE в nohup mysqldump , что, в свою очередь, заканчивается.

Попробуйте

nohup sh -c 'mysqldump -hxxx -Pxxx -uxxx -pxxx --dump-slave --include-master-host-port --apply-slave-statements -f -q -A -E -R | mysql -hxxxx -Pxxxx -uxxxx -pxxxx' &
-121--166105-

Это зависит от типа загружаемых файлов.

Если это базы данных или несжатые дампы, scp более эффективен, если они сжаты, FTP более эффективен, scp более безопасен.

Часто во внутренней сети я иду commando и делаю деготь поверх netcat's.

Если содержимое является инкрементным и всегда является одним и тем же файлом и не сильно меняется с течением времени, хорошая идея заключается в выполнении rsync поверх ssh.

-121--243116-

Отношение процессов в трубе в основном зависит от используемой оболочки.

Современные оболочки делают все простые процессы (команды) в трубе прямыми потомками основной оболочки.

Старые оболочки выполняют это другим способом.

В некоторых оболочках при перенаправлении ввода выполняется цикл while, а в других -

, в то время как является не командой shell builtin, а частью синтаксиса оболочки.

Вывод: Не пытайтесь анализировать родительские отношения детей в сложных командах оболочки, если вы не являетесь автором этой оболочки и не хотите проверить, работают ли вещи путь они предназначены в настоящее время в этой конкретной оболочке.

8
26.07.2018, 21:37
2 ответа
find '/home/_backups/pokebrawl' -mtime +6 -type f -delete

Это находит все файлы в каталоге /home/_backups/pokebrawl, которые не были изменены за последние +6дней, и удаляет их. ПРИМЕЧАНИЕ:+6соответствует 7 дням.

Посмотрите man find, чтобы узнать, как работают эти переключатели.:

$ man find
...
   -mtime n
          File's data was last modified n*24 hours ago.  See the comments 
          for -atime to understand how rounding affects the interpretation 
          of file modification times.

В дистрибутивах Redhat вы можете просто поместить этот скрипт в каталог /etc/crondaily, и он будет запускаться каждый день. Вы можете видеть, что там уже есть другие скрипты, которые вы можете использовать в качестве примеров:

$ sudo ls -l /etc/cron.daily/
total 12
-rwx------. 1 root root 219 Aug  1  2017 logrotate
-rwxr-xr-x. 1 root root 618 Mar 17  2014 man-db.cron
-rwx------. 1 root root 208 Nov  4  2016 mlocate
5
27.01.2020, 20:10

Команда findудалит любой обычный файл в каталоге /home/_backups/pokebrawlили ниже, который старше семи дней (или, точнее, не изменялся в течение последней недели ).

Следует вероятно читать

find "$DESDIR" -mtime +6 -type f -delete

или

find "${DESDIR:?Not set correctly}" -mtime +6 -type f -delete

, так как уже существует отличная переменная, содержащая это имя каталога. Второй вариант вызовет ошибку, если DESDIRпо какой-либо причине будет пустым или неустановленным.

Я предполагаю, что это способ сохранить резервные копии только за последнюю неделю. Я бы предложил вместо этого использовать что-то вроде borgbackupили restic, так как они смогут хранить резервные копии намного дольше, не занимая много места (даже ежечасные резервные копии в течение года вообще не займут много места, если данные не сильно изменились ). Они выполняют дедупликацию данных и borgbackupдополнительно поддерживают сжатие (, а также поддерживают удаленное резервное копирование и шифрование ).

Чтобы запускать скрипт каждые 24 часа (в полночь ), используйте задание cron.

Сначала введите команду crontab -e. Это откроет редактор с текущим crontab для активного пользователя (это может быть или не быть пустым файлом ).

Затем добавьте

@daily /path/to/the/script.sh

(где path/to/the/script.sh— путь к скрипту ).

Сохраните и выйдите из редактора.

Сценарий теперь будет вызываться в полночь, даже ночью.

Если вы хотите запускать скрипт, скажем, в 13 :30 каждый день, добавьте вместо этого следующую запись в crontab:

30 13 * * * /path/to/the/script.sh

Подробную информацию о том, как составить расписание crontab, см. в руководстве по crontab для вашей системы.(man 5 crontab).

11
27.01.2020, 20:10

Теги

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