Видео ролики бесплатно онлайн

Смотреть вк видео

Официальный сайт interaktiveboard 24/7/365

Смотреть видео бесплатно

18.09.09 03:40 lwilis

Я идиот!Хочу замену /bin/cp!

Я щитаю, что очень хорошо, когда машина делает то, что сказали; но при этом способна проверить банальности и "банально гибка". Этой самой "банальной гибкости" не хватает. Да, она - раб, и будет делать то, что сказано. Но от нее нужно больше, она должна выбирать когда петь, а когда говорить. И поэтому я люто хочу, чтоб либо /bin/cp научился говорить: "Хозяин, места нету расчисть, - я допишу", либо хочу замену. ДаЭ!!!1111
mirivlad 18.09.09 08:22 # +-1
и правда)
lwilis 18.09.09 08:59 # +0
И да, меня отпустило и возникла мысль о реализации сабжевой фичи.

Во-первых, cp не виноват, да. Он должен копировать, вот и пусть.
Во-вторых демон нужен. Он будет висеть и посматривать: "А не запущен ли cp?", и если запущен, то будет смотреть в /proc/$pid_of_cp/cmdline, оттуда парсить путь назначения, делать df путь_назначения, и, если вдруг ОЙ. - стопарим cp, вываливаем нотификатор "Ололо места нету!" и продолжает чекать наличие фри спейса, как только достаточно (проверяет исходный размер и уже скопированный) - снимает cp с паузы.
Или это до сих пор продолжается, омг... )

Внимание вопрос: Как один процесс может поставить на паузу другой процесс?
muhas 18.09.09 09:14 # +3
Как один процесс может поставить на паузу другой процесс?
зачем???

всё делается элегантно. Пишется sh функция cp вызывающая /bin/cp только тогда когда есть место на разделе для копируемого файла/файлов и ругающегося на недостаточное место когда его не хватает не вызываю уже /bin/cp

если не лень пиши, задача не трудная. только вот хитрозадость одна (остальное я знаю как реализовать) - как вычеслить на какое блочное устройство будет производиться запись что бы высчитать место именно на нем?
lwilis 18.09.09 09:20 # +0
Нефти тебе. тыщщу

А с местом, можно схитрить. Сделать врапер над cp, который будет смотреть путь назначения перед запуском процесса копирования. Ну таким образом мы все узнаем.
muhas 18.09.09 11:03 # +0
Ну правильно. сначала смотрим куда копируем. высчитываем там место и т.д.
Только вот как узнать на какое устройство копируем что бы считать место я хз :(
lwilis 18.09.09 15:59 # +0
Видимо мы не допонимаем друг друга. Мой вариант.
Вот, скажем, хотим копировать нечто в /tmp/.
Делаем df /tmp/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 42931632 12882596 27868216 32% /

после смотрим размер исходных данных.

а этого достаточно, чтоб подытожить хватит нам места или нет.
KblCb 18.09.09 11:14 # +0
Наверное как-то так: берём абсолютный путь до места куда копируем, затем получаем список блочных устройств на которые можно писать (банально можно распарсить df), затем начинаем сравнивать абсолютный путь до места копирования с точками монтирования блочных устройств. Итого: мы пишем на то устройство где совпадение максимально. У меня есть два сомнения: не знаю как развернуть абсолютный путь с учётом симлинков и не знаю что будет если у тебя имеется стековая файловая система.
muhas 18.09.09 11:51 # +0
df -h папка | tail -n 1 | awk '{print $4}'
спасибо жуйке
lwilis 18.09.09 16:00 # +0
да, это я и имел в виду, только сначала сам написал, а потом твой коммент увидел
lwilis 18.09.09 16:02 # +0
да и кст, в жуйке уже посоветовали бросить велосипедо-строение, - есть же rsync и curl. ага.

можно расслабиться и почитать маны :)
muhas 18.09.09 16:30 # +0
не разу не велосипед...
не катит ни курл не rsync несколько не то делают, хотя и близко
lwilis 18.09.09 16:02 # +0
а вот симлинки, могут подпортить мед. Но для начала можно и без поддержки симлинков реализовать.

а что есть стековая фс? вкратце, как влияет на сабж
KblCb 18.09.09 21:22 # +1
Это aufs, mhddfs и иже с ними. Позволяют смонтировать несколько блочных устройств в единое нечто и как-то с ним работать.
xT 18.09.09 16:23 # +0
а как быть с софтом использующим cp ? =) пересобирать с вызовом этой функции?
или сабж только для ручного копирования?
muhas 18.09.09 16:28 # +0
mv /bin/cp /bin/cpp
а на место /bin/cp положить скриптик. не?
xT 18.09.09 16:39 # +0
можно, но что-то мне говорит, что не всё гладко будет
muhas 18.09.09 17:19 # +0
интересно что будет не гладко?
KblCb 18.09.09 21:23 # +0
добавляешь в скрипт волшебный ключ который позволяет следить за заполненностью дисков и всё.
razum2um 18.09.09 21:01 # +0
По вашему алгоритму проверка ведь будет однократной, да?
Ну и что получится, если запустите первый, а затем сразу второй cp, каждый по гигу скажем, на свободное место гига в полтора?
muhas 20.09.09 14:48 # +0
кончится если место то что-то не запишется =) собственно для постоянной проверки проще cp патчить чем простыми скриптами
razum2um 20.09.09 15:46 # +0
Собстно постоянная проверка все тормознет ;)
Не Ъ это все. cp должно просто копировать, а не печься о free space
lwilis 18.09.09 09:14 # +0
из жуйка подсказывает @rakoth: что-то типа kill -STOP ${pidof cp}
razum2um 18.09.09 21:02 # +1
А чисто из интереса: как его резюмить?
lwilis 20.09.09 23:52 # +0
хороший вопрос.
yuretsz 18.09.09 12:01 # +0
И прогрессбарчики красивые чтоб рисовались, да.
muhas 18.09.09 12:17 # +0
вроде где-то был патч для cp для сих целей, на в апстрим не вошло. погугли по этому поводу
lwilis 18.09.09 16:06 # +0
use pv )
xT 18.09.09 16:07 # +0
использовать pv
yuretsz 18.09.09 16:29 # +0
Ну pv и что? Знаешь патч cp, который использует pv?
xT 18.09.09 16:30 # +0
по предложенному muhas`ом варианту
yuretsz 18.09.09 16:33 # +0
Какбе самому чтоле написать? Я простую копирялку писал на основе cp, но весь фунционал cp я ниосилил написать.
xT 18.09.09 16:46 # +0
нечто вроде такого внесте в .bashrc или другой .шеллrc
cppv() { cp $@ | pv ; }
yuretsz 18.09.09 18:27 # +0
Этот вариант не работает.
xT 18.09.09 19:48 # +0
Сорри. Не проверил сам =)

исправленный вариант =) увиденный минус - теряются права, но можно извратиться
1
2
3
4
5
6
7
cppv() {
if [ -d $2 ]; then
pv $1 > $2/$1
else
pv $1 > $2
fi }
 

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 54)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 1125 из 82 городов)
            Топ пользователей Топ блогов
            В сети: Kraplax, Craftuser, sht, HTaeD, DOMr

            Новенькие: Phoen, Malek, apl, Mag_reef, durc
            welinux.ru

            В хорошем качестве hd видео

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн