Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / скрипт на bash / 11 сообщений из 11, страница 1 из 1
29.11.2005, 12:59:52
    #33405607
Stepan_mk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
скрипт на bash
Мне нужно написать такою штуку на bash
есть у меня папка bases которой есть папки с названием оракловских юзеров. В те папки будут забрасиваться архиви БД.
Скрипт будет запускатся скажем раз в час и должен просмотреть все папки если там есть rar то раскрутить его и втянуть в БД где touser = навании папки в которой сидит архив.
Как на bash написать просмотр всех папок? На примере плиз
...
Рейтинг: 0 / 0
29.11.2005, 13:13:47
    #33405662
Adekamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
скрипт на bash
find / -name "*rar" etc.
...
Рейтинг: 0 / 0
29.11.2005, 13:14:23
    #33405666
Adekamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
скрипт на bash
точнее find / -name "*rar" -type f
...
Рейтинг: 0 / 0
29.11.2005, 13:17:49
    #33405682
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
скрипт на bash
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
gosha@b127:/tmp> cat  1 .sh
FIND_DIR='/tmp/u'

ls -lR $FIND_DIR

find $FIND_DIR  -type f -name '*.rar' |
        while read file_name
        do
                path=`dirname $file_name`
                user_name=`basename $path`

                echo "File name: $file_name"
                echo "File path: $path"
                echo "User name: $user_name"
        done

gosha@b127:/tmp> bash  1 .sh
/tmp/u:
итого  12 
drwxr-xr-x   2  gosha users  4096   2005 - 11 - 29   13 : 07  gosha
drwxr-xr-x   2  gosha users  4096   2005 - 11 - 29   13 : 07  ira
drwxr-xr-x   2  gosha users  4096   2005 - 11 - 29   13 : 07  vasya

/tmp/u/gosha:
итого  0 
-rw-r--r--  1 gosha users 0 2005-11-29 13:07 1.rar

/tmp/u/ira:
итого  0 

/tmp/u/vasya:
итого  0 
File name: /tmp/u/gosha/ 1 .rar
File path: /tmp/u/gosha
User name: gosha
...
Рейтинг: 0 / 0
30.11.2005, 11:10:01
    #33407806
no-dashi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
скрипт на bash
cd /basedir
for username in * ; do
cd $username
for f in *.rar ; do
unrar x $f
imp ... touser=($username)
done
cd ..
done
...
Рейтинг: 0 / 0
30.11.2005, 11:54:33
    #33407955
nik2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
скрипт на bash
no-dashicd /basedir
for username in * ; do
...
done

...после чего долго плеваться на `чудаков` которые имеют в иенах файлов\директорий пробелы... хотя и с не контролируемой рекурсией, чуть выше, в find'e тоже не все так чоколадно...
...
Рейтинг: 0 / 0
30.11.2005, 13:04:10
    #33408291
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
скрипт на bash
nik2 no-dashicd /basedir
for username in * ; do
...
done

...после чего долго плеваться на `чудаков` которые имеют в иенах файлов\директорий пробелы... хотя и с не контролируемой рекурсией, чуть выше, в find'e тоже не все так чоколадно...

Это в честь чего?

$ mkdir test
$ cd test
$ mkdir 'a b'
$ mkdir 'c d b'
$ for i in *
> do
> echo $i
> done
a b
c d b
$
...
Рейтинг: 0 / 0
30.11.2005, 13:10:02
    #33408313
nik2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
скрипт на bash
Хрен
...сори, х..ню сказал не проверив.
...
Рейтинг: 0 / 0
30.11.2005, 13:31:42
    #33408400
no-dashi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
скрипт на bash
nik2 no-dashicd /basedir
for username in * ; do
...
done

...после чего долго плеваться на `чудаков` которые имеют в иенах файлов\директорий пробелы...

нНу тогда и фиг с ними :-) Хотя в задании говорилось, что имена каталогов совпадают с именами юзеров, хотя конечно юзера с пробелом в логине на оракле тоже можно завести... Но ТОГДА они ССЗБ :-)
...
Рейтинг: 0 / 0
01.12.2005, 11:45:50
    #33410594
Stepan_mk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
скрипт на bash
Короче сделал я так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#!/bin/bash
FIND_DIR='/ora_rbs/bases'
ls -lR $FIND_DIR
find $FIND_DIR  -type f -name '*.rar' |
        while read file_name
        do
            path=`dirname $file_name`
            user_name=`basename $path`
            rar x -y $file_name $path
            echo $file_name|awk 'gsub(".rar",".dmp") {print $0}'|while read dmp;
 do
#           echo $s|awk 'gsub(".rar",".dmp") {print $0}'|while read dmp; do
            sqlplus system/solaris@OEDB @drop_shema.sql $user_name
            sqlplus system/solaris@OEDB @drop_shema.sql $user_name
            imp system/solaris@OEDB file=$dmp fromuser=prm touser=$user_name
            rm $file_name
            done
        done
Всё класно работает. Только один подводний камень
Я хочу ставить ету штуку в cron.hourly
Если у меня будет несколько баз для втягивания или одна большая - то за
час скрипт может не управится а вто время стартанёт ещё раз и может ерунда получится.
Как ету ситуацию обойти?
...
Рейтинг: 0 / 0
01.12.2005, 12:49:56
    #33410801
g613
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
скрипт на bash
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
touch .lock
lock=`cat .lock`
if [ "x$lock" != 'x' ]; then
    #
    # жив ли тот процесс который в том локе описан
    #
    SELF= 0 
    ps -p $lock -o cmd | grep $ 0  &> /dev/null && SELF= 1 
    if [ $SELF -eq  1  ]; then
        echo "типа я уже работаю..."
        exit
    fi
fi
echo $$ > .lock
#
#....
#
rm -f .lock
тока оно как то не совсем атомарно получается... Хотя вот если надо не каждый час запускать а 1)запустить-2)отработать-3)подождать_час-1)-2)-3)... то можно наверно atd вместо крона заюзать добавив в тот скрипт в конец постановку самого себя в очередь atd через час...
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / скрипт на bash / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]