Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Скрипт для работы с данными  (Прочитано 4345 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #30 : 25 Октября 2015, 04:40:19 »
Не надо писать в find лапшу.
Напишите всё что нужно в отдельный скрипт и вызывайте его из find.

(Нажмите, чтобы показать/скрыть)
Как говориться, "угадайте, что…"
« Последнее редактирование: 25 Октября 2015, 04:46:45 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Симэн

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #31 : 25 Октября 2015, 11:32:18 »
Оригинальная "конструкция", пошел изучать со словарем  :2funny:
Единственно, что сразу смущает umount.
umount /mnt/disk &> /dev/null
Дело в том, что девайс постоянно подключен, и его "отвал" от примонтированного к нему ЯД грозит потерей информации.
Потому что девайс имеет только флешку (микросхема) для прошивки ПЗУ и ОЗУ RAM.
При наличии еще одного usb порта, конечно можно предусмотреть резервную usb флешку.
Но usb порт один, и он задействован вебкамерой - пока по крайней мере. 
« Последнее редактирование: 25 Октября 2015, 12:16:04 от Симэн »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #32 : 25 Октября 2015, 12:00:49 »
Симэн,
  • я бы использовал xargs, должно быть быстрее. И кстати, -exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - 2592000)) ] && rm -R "$0"' {} \; может тоже работать.
  • если не переносится 23 час значит пока скрипт работает переходит дата и он не успевает. Надо зафиксировать дату в переменной в начале скрипта
AnrDaemon,
из-за 1-й команды плодить целый скрипт? На вкус и цвет…
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Симэн

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #33 : 25 Октября 2015, 12:13:11 »
Симэн,
И кстати, -exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - 2592000)) ] && rm -R "$0"' {} \; может тоже работать.
Обязательно попробую  ;)
Цитировать
Надо зафиксировать дату в переменной в начале скрипта
Разобраться бы раз и навсегда, как это делается  ???
« Последнее редактирование: 25 Октября 2015, 12:15:00 от Симэн »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #34 : 25 Октября 2015, 12:38:47 »
Код: (bash) [Выделить]
#!/bin/sh
my_date=$(date +%Y-%m-%d_%H)
killall motion && cd /mnt/ya
mv X $(my_date) # было «а» вместо «Х»
sleep 40
mkdir X
sleep 1
mv $my_date ${my_date%_*}
sleep 2
motion
+может проще в конфиге сразу менять папку записи (не Х, а $(date +%Y-%m-%d_%H))?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Симэн

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #35 : 25 Октября 2015, 13:06:12 »
Цитировать
+может проще в конфиге сразу менять папку записи (не Х, а $(date +%Y-%m-%d_%H))?
Пробывал в конфиге motion писать:
не
target_dir /mnt/ya/Xа
my_date=$(date +%Y-%m-%d_%H)
target_dir /mnt/ya/$(my_date)

или
target_dir /mnt/ya/$(date +%Y-%m-%d_%H)
НЕТ данная версия motion 3.4.0-20141018
Не поддерживает подобных экзерциссов  ;D
===
# было «а» вместо «Х»
Фактическое значение и значение заданного в теме вопроса ...
===
И еще бы дилетанту понять целесообразность применения sleep и его значения  :2funny:
Потому, что налепил от души после сбоя копирования.
===
По скрипту:
Переменные данный shell - ash недолюбливает похоже:
line 4: my_date: not found
man ash или ash --hВыдают лишь название версии шелла.
В результате разных проб и подстановок создает и перемещает лишь папку my_date
« Последнее редактирование: 25 Октября 2015, 14:40:33 от Симэн »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #36 : 25 Октября 2015, 13:45:38 »
Вариант 1. В самом скрипте менять конфиг motion (sed'ом например)
Вариант 2. Экспортировать переменную my_date в скрипте, а в конфиге ссылаться на неё.
Вариант 3. Посмотреть опции запуска motion, возможно можно изменять папку назначения прямо в командной строке
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Симэн

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #37 : 25 Октября 2015, 14:22:54 »
Варианты 3 буду смотреть, пробывать  ;)
Вариант удаления нерабочий или требует коррекции:
cd /mnt/ya
-exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - 172800)) ] && rm -R "$0"' {} \;
-ash: -exec: not found
« Последнее редактирование: 25 Октября 2015, 14:25:18 от Симэн »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #38 : 25 Октября 2015, 17:06:45 »
Оригинальная "конструкция", пошел изучать со словарем  :2funny:
Хехе. Изучайте. Может, тогда и отпадёт вопрос про
Цитировать
смущает umount.
umount /mnt/disk &> /dev/null
Дело в том, что девайс постоянно подключен, и его "отвал" от примонтированного к нему ЯД грозит потерей информации.
Сначала разберитесь, что делает скрипт ;)
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #39 : 25 Октября 2015, 17:23:53 »
А чем вам (я ко всем участникам обращаюсь) перелинковка не нравиться? motion будет считать, что пишет в одну и ту же директорию, а по факту в разные.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #40 : 25 Октября 2015, 17:26:33 »
Пробывал в конфиге motion писать:
не
target_dir /mnt/ya/Xа
my_date=$(date +%Y-%m-%d_%H)
target_dir /mnt/ya/$(my_date)

или
target_dir /mnt/ya/$(date +%Y-%m-%d_%H)
НЕТ данная версия motion 3.4.0-20141018
Не поддерживает подобных экзерциссов  ;D
Потому что вы неправильно её готовите. Конфиг - это не шелл-скрипт.
Всё она поддерживает. Курите маны.
From http://www.lavrsen.dk/foswiki/bin/view/Motion/ConfigOptionTargetDir :
Цитировать
Note that the options snapshot_filename, jpeg_filename, movie_filename, and timelapse_filename all allows specifying directories. These will all be relative to 'target_dir'. This means in principle that you can specify target_dir as '/' and be 100% flexible.

Прочли? А теперь идите читать формат тех самых относительных параметров. И удивитесь.

А чем вам (я ко всем участникам обращаюсь) перелинковка не нравиться? motion будет считать, что пишет в одну и ту же директорию, а по факту в разные.
Тем, что это нафиг не нужно и она умеет сама писать в нужные каталоги?…
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #41 : 25 Октября 2015, 17:30:27 »
А, ну тогда ОК. Я на ман одним глазом смотрел.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #42 : 25 Октября 2015, 20:13:46 »
Вариант удаления нерабочий или требует коррекции:
cd /mnt/ya
-exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - 172800)) ] && rm -R "$0"' {} \;
-ash: -exec: not found
Ну вот Вы смешной… Вам до последней буквы расписывать?find <your_path> -exec sh -c '[ $(date -r "$0" +%s) -lt $(($(date +%s) - 172800)) ] && rm -R "$0"' {} \;
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Симэн

  • Автор темы
  • Новичок
  • *
  • Сообщений: 23
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #43 : 25 Октября 2015, 20:21:50 »
Azure,
"Аз есмЪ учил Бэйсик, в .... мохнатом году"  :2funny:
Спасибо за помощь и терпение  ;)
===
AnrDaemon,
Я правильно понимаю ?
Что раз по умолчанию:
target_dir /tmp/motion/picture_filename %d-%H:%M:%S
То данная "конструкция" должна заработать:
target_dir /mnt/ya/$(date +%Y-%m-%d_%H)/picture_filename %v-%Y%m%d%H%M%S-%q
Правда и здесь я попытался руссифицировать и уменьшить имя файла - для лучшего визуального восприятия информации.

У меня это выглядит так:
picture_filename %d-%H:%M:%S


« Последнее редактирование: 25 Октября 2015, 20:31:59 от Симэн »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: Скрипт для работы с данными
« Ответ #44 : 25 Октября 2015, 20:58:44 »
AnrDaemon,
Я правильно понимаю ?

Нет, неправильно.

Цитировать
Что раз по умолчанию:
target_dir /tmp/motion/picture_filename %d-%H:%M:%S
По умолчанию "target_dir" пустой а "picture_filename" = "%v-%Y%m%d%H%M%S-%q".

Цитировать
То данная "конструкция" должна заработать:
target_dir /mnt/ya/$(date +%Y-%m-%d_%H)/picture_filename %v-%Y%m%d%H%M%S-%q
Не должна, target_dir символы подстановки не поддерживает.

Цитировать
Правда и здесь я попытался руссифицировать и уменьшить имя файла - для лучшего визуального восприятия информации.

У меня это выглядит так:
picture_filename %d-%H:%M:%S

Это заметно.
Если вы до сих пор не можете включить голову - решение под спойлером.
(Нажмите, чтобы показать/скрыть)
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.019 секунд. Запросов: 21.