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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Вопрос по скрипту  (Прочитано 653 раз)

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

Оффлайн drivemaster

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Вопрос по скрипту
« : 18 Июня 2011, 12:20:01 »
Есть такой скрипт.

#!/bin/bash

### Устанавливаем значения переменных ###
sd=/home/1/2
td=/home/1/2/3
tmp=/home/1/2/3/4
date=`date +%d.%m.%Y`
time=`date | grep +3 | awk '{ print $4 }'`
lognm=$tmp/log.log
arlist=$tmp/arlist.lst
rmt=10 ### время жизни архивов  в днях ###
ndrmt=10 ### время жизни файла в мин ###
### Все выводы комманд отправляются в файл $lognm ###
echo "### Начинаю процесс ###" >>$lognm
echo $date-$time >>$lognm
echo ----------------------------------------------- >>$lognm
###Берем список файлов из директории . $sd и записываем в файлы $lognm ###
cd $sd
echo "### Список файлов ###" >>$lognm
ls -1 *.file >>$lognm
echo ----------------------------------------------- >>$lognm
### Запаковываем файлы в rar, отправляя их при этом в $td ###
for flnm in $( ls *.file );
do rm -f $td/$flnm.rar; done
echo "### Список запакованных архивов ###" >>$lognm
for flnm in $( ls *.file );
do rar a -y -o+ $td/$flnm.rar $flnm >>$lognm; done
echo ----------------------------------------------- >>$lognm
### Ищем и удаляем все файлы, измененные последний раз больше $ndrmt минут назад ###
echo "### Удаленные демо ###" >>$lognm
find $sd/*.file -mmin +60 -exec rm -f {} \; -print >>$lognm
### Так же берем список запакованных архивов и добавляем их в файл $arlist ###
cd $td
ls -1 *.rar >$arlist
echo ----------------------------------------------- >>$lognm
echo $date-$time >>$lognm
echo "### Завершен ###" >>$lognm

Суть скрипта, он берёт файлы из одной дректории, архивирует их и перемещает в другую, потом он по  заданным параметрам должен удалить те файлы, которые были изменены указаное в скрипте время назад. Всё работает нормально, архивируется ,перемещается, но файлы не удаляются , в логе написано следующее :

### Удаленные файлов ###
-----------------------------------------------
18.06.2011-
### Завершен ###

Подскажите в чём ошибка, пожалуйста.

// В дальнейшем используйте тег код (code). (RazrFalcon)
« Последнее редактирование: 18 Июня 2011, 22:25:24 от RazrFalcon »

Оффлайн alecsartania

  • Старожил
  • *
  • Сообщений: 1564
  • УМка.
    • Просмотр профиля
Re: Вопрос по скрипту
« Ответ #1 : 18 Июня 2011, 13:06:07 »
ты показываешь вывод одного скрипта, а в коде приводишь другой.
ну и удаления файлов не видно в скрипте.  чего написано то и получилось.
Дома Linux Mint 20.1 / 20.02

andrey_p

  • Гость
Re: Вопрос по скрипту
« Ответ #2 : 18 Июня 2011, 13:06:55 »
Цитировать
### Ищем и удаляем все файлы, измененные последний раз больше $ndrmt минут назад ###
...
find $sd/*.file -mmin +60 -exec rm -f {} ; -print >>$lognm

Здесь комментарий и код не соответствуют друг другу. Что делает find на самом деле можно выяснить экспериментально в командной строке или man find.

Пользователь решил продолжить мысль 18 Июня 2011, 13:12:09:
Конечно эксперименты в специально отведенной для этого директории, поскольку эта строка таки удаляет файлы и может удалить что-нибудь хорошее.
« Последнее редактирование: 18 Июня 2011, 13:12:09 от andrey_p »

Оффлайн drivemaster

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопрос по скрипту
« Ответ #3 : 18 Июня 2011, 22:13:48 »
Скрипт, не я писал, поэтому , конечно, возможны несовпадения. Насколько я понял вот эти переменные

rmt=10 ### время жизни архивов  в днях ###
ndrmt=10 ### время жизни файла в мин ###

Мы их вводим, но дальше в коде они даже не фигурируют

Они же должны тут фигурировать, чтобы найти именно нужные файлы

find $sd/*.file -mmin +60 -exec rm -f {} \; -print >>$lognm
не могли ли вы мне описать что делает эта строка :
find $sd/*.file - ищет файлы в указанной директории с указанным расширением,
 -mmin +60 - а что значит вот эта часть ? - сюда же по идеи надо ставить переменную ndrmt ?
« Последнее редактирование: 18 Июня 2011, 23:25:22 от drivemaster »

 

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