>From UNIX with love

Ivan8209


$ mkdir /tmp/test
$ cd /tmp/test
$ rsync rsync://rsync.allbsd.org/freebsd-cvs/
drwxr-xr-x 512 2003/02/28 06:23:30 .
drwxrwxr-x 1536 2009/05/24 12:48:30 CVSROOT-doc
drwxrwxr-x 1536 2009/06/20 04:50:56 CVSROOT-ports
drwxrwxr-x 1536 2009/06/18 14:00:16 CVSROOT-projects
drwxrwxr-x 2048 2009/06/12 20:48:22 CVSROOT-src
drwxr-xr-x 1024 2009/06/20 04:49:19 CVSROOT
drwxrwxr-x 512 2002/12/07 18:26:00 distrib
drwxrwxr-x 1536 2009/04/17 23:48:15 doc
drwxrwxr-x 1536 2009/06/20 02:00:56 ports
drwxrwxr-x 512 2007/03/20 00:52:39 projects
drwxrwxr-x 512 2006/12/22 08:02:08 root
drwxrwxr-x 1024 2009/06/19 22:17:28 src
drwxrwxr-x 512 2008/02/10 13:29:29 www
$ rmdir /tmp/test
$ rsync rsync://rsync.allbsd.org/freebsd-cvs/
rsync: getcwd: No such file or directory (2)
rsync error: errors selecting input/output files, dirs (code 3) at util.c(992) [receiver=3.0.5]
$ pwd
/tmp/test
$ ls
ls: .: No such file or directory

Какая потрясающая вещь!
---
"Note the consistent user interface and error reportage.
Ed is generous enough to flag errors, yet prudent enough
not to overwhelm the novice with verbosity."

agaaaa

Можешь для непосвящённых пояснить, интересно же.

yolki

программуле rsync почему-то становится плохо, когда она не может сделать getcwd
я не знаю тонкости, почему можно удалять каталоги, в которых кто-то стоит

kruzer25

Помнится, всем очень нравилась фича линукса, когда можно было удалять файлы, которые кто-то читает (точнее, фича многих линуксовых приложений, которые не блокировали эти файлы).
Видимо, его шелл ведёт себя так же.

july

$ rmdir /tmp/test
А shell не должен на это сказать, что, мол, directory not empty?

Ivan8209

А почему она должна это сказать?
---
...Я работаю антинаучным аферистом...

hwh2010

А shell не должен на это сказать, что, мол, directory not empty?
а ты думаешь, он в другой консоли в неё что-нить положил ради смеха?

july

rsync rsync://rsync.allbsd.org/freebsd-cvs/
Наверное, я не понял. Оно не в текущий каталог разве директорию синхронизует?

$ mkdir /tmp/test
$ cd /tmp/test
$ mkdir src
$ rmdir /tmp/test
rmdir: failed to remove `/tmp/test': Directory not empty
$


Ivan8209

>> rsync rsync://rsync.allbsd.org/freebsd-cvs/
> Наверное, я не понял. Оно не в текущий каталог разве директорию синхронизует?
Команду-то запусти, раз документацию сложно прочитать.
> $ mkdir /tmp/test
> $ cd /tmp/test
> $ mkdir src
И? Как это относится к тому, что написал я?
---
"Сэм замечательный малый, он за тебя дракону пасть порвёт,
если дотянется."

july

>Команду-то запусти, раз документацию сложно прочитать.
Usages with just one SRC arg and no DEST arg will list the source files instead of copying.
Sorry, ступил, да.

yolki

нет, не должен. потому что директория действительно пустая.
у меня тогда такой вопрос - почему можно удалять, но нельзя отмонтировать устройство?

# mkdir /tmp/test
# mount /dev/sdb2 test
# cd /tmp/test
# ls
2.6.28-g-r2 current grub lost+found
2.6.29-gentoo-r4 gentoo-linux-2.6.28 install-kernel next-current
boot gentoo-linux-2.6.28-2 kernel-2.6.30-rc5 vanilla
# umount /tmp/test
umount: /tmp/test: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1
# pwd
/tmp/test

ppplva

В линуксе удалять можно, потому что убирается только ссылка на директорию из родительской. getcwd при этом продолжает работать, и директория живет пока ей кто-то пользуется. У контры, очевидно, какая-то необычная ОС, о чем он стыдливо промолчал :)
Отмонтировать нельзя, потому что эта операция предполагает освобождение файловой системы, синхронизацию всех операций над ней, и так далее.

klyv

это линукс - необычная, слизанная с UNIX'а ОСь, а все потомки UNIX'а кошерны.

Ivan8209

> У контры, очевидно, какая-то необычная ОС, о чем он стыдливо промолчал
У меня обычная ОС, и PR, кстати, тоже относится к линуксу,
так что и там то же самое.
---
"Люди недалёкие обычно осуждают всё, что выходит за пределы их понимания."

vall

да?
$mkdir /tmp/test
$cd /tmp/test
$ls -a
. ..
$rmdir /tmp/test
$ls -a
$pwd
/tmp/test

Marinavo_0507

pwd != getcwd

Ivan8209

> Usages with just one SRC arg and no DEST arg will list the
> source files instead of copying.
Кстати, это ещё один косяк rsync. Это прямое нарушение POLA:
у всех подобных программ (prior art!) есть отдельный флаг для
этого действия, и когда первый раз с этим сталкиваешься,
сильно удивляешься глубине мысли разработчика.
---
Ken Thompson has an automobile which he helped to design.
Unlike most automobiles, it has neither speedometer, nor gas gauge,
nor any of the other numerous idiot lights which plague the modern
driver. Rather, if the driver makes a mistake, a giant "?" lights up
in the center of the dashboard. "The experienced driver," says
Thompson, "will usually know what's wrong."

Ivan8209

> это линукс - необычная, слизанная с UNIX'а ОСь
Линукс вообще не ОС.
---
Q9: А почему Линукс не ОС?
A9: ОС - это БЗДя

ppplva

Фигню сказал, getcwd не работает. Похоже, она определяет путь проходом до корня фс?

Marinavo_0507

у всех подобных программ (prior art!)
которые?

Ivan8209

>> у всех подобных программ (prior art!)
> которые?
pax, по меньшей мере.
---
...Я работаю антинаучным аферистом...

sergey_m

В линуксе удалять можно, потому что убирается только ссылка на директорию из родительской. getcwd при этом продолжает работать, и директория живет пока ей кто-то пользуется. У контры, очевидно, какая-то необычная ОС, о чем он стыдливо промолчал :)
И что же getcwd возвращает, интересно было бы узнать? :grin: Думаю ты что-то напутал, линукс конечно отстой, но не настолько.
Оставить комментарий
Имя или ник:
Комментарий: