*nix запустить процесс с заданным именем

zya369

как, скажем, vi запустить чтобы он в ps отображался как XXX ?
можно кроме "exec -a" это как-нить сделать?
и чтоб как минимум на AIX'е работало...

kruzer25

ln /bin/vim /bin/XXX
XXX

pitrik2

а -s не нужно после ln ?

slonishka

пенартур делает жоско!

zya369

да уж, да здравствует больше мусора на винте

kruzer25

Да в общем-то без разницы ;0

kruzer25

Ты ln от cp не отличаешь?

zya369

а ты мусор от места?

kruzer25

Вообще-то, хардлинк - не больший (а мб даже и меньший) мусор, чем симлиник

pitrik2

а расскажи в чем отличие хардлинка от симлинка
имеется ввиду не физически (как это делает операционка понятно а с точки зрения удобства/возможностей работы с созданным линком
пока один плюс в пользу симлинков: вроде бы ls -al не показывает хардлинки, хотя может я ошибаюсь

Sharp

вроде бы ls -al не показывает хардлинки


fe:hamilton[3] ~$ ln a.txt a2.txt
fe:hamilton[4] ~$ ls -l a2.txt
-rw-r--r-- 2 fe fe 119 29 июл 2006 a2.txt
fe:hamilton[6] ~$ rm a.txt
fe:hamilton[8] ~$ ls -l a2.txt
-rw-r--r-- 1 fe fe 119 29 июл 2006 a2.txt

Видишь число после режимов доступа — это и есть число ссылок на данный inode. После создания ссылки стало 2, когда удалили один из ссылаемых файлов, стало 1.
Плюс в пользу симлинков немного другой — симлинк может ссылаться на другую файловую систему.

pitrik2

Видишь число после режимов доступа — это и есть число ссылок на данный inode. После создания ссылки стало 2, когда удалили один из ссылаемых файлов, стало 1.
речь не про это была
в случае симлинков мне явно показывается что это симлинк и явно показывается на что он ссылается
в случае хардлинка я не знаю изначальный это файл или линк и мне стоит некого труда узнать какие еще есть линки на этот файл, тоесть чьим линком я могу быть

kruzer25

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

sergey_m

Хардлинк быстрее.

Sharp

А в случае хардлинка у тебя просто нет такого понятия, как изначальный файл.
Есть место на диске и есть несколько ссылок на это место, они все равноправны между собой.
Иными словами, ссылку ты делаешь не на имя файла, а на его содержимое.

kruzer25

в случае хардлинка я не знаю изначальный это файл или линк
В случае хардлинка нет понятия "изначальный файл".
Грубо говоря, все файлы - линки на своё содержимое; содержимое не знает, кому оно принадлежит; а хардлинк - это когда ты делаешь ещё один линк на чьё-то содержимое.

pitrik2

А в случае хардлинка у тебя просто нет такого понятия, как изначальный файл.
Есть место на диске и есть несколько ссылок на это место, они все равноправны между собой.
Иными словами, ссылку ты делаешь не на имя файла, а на его содержимое.
я это для кого писал?
имеется ввиду не физически (как это делает операционка понятно)

pitrik2

дык все таки
как найти все ссылки на этот файл?
и хард и сим?
в случае сим оно может быть и не нужно
а в случае хард явно нужно при удалении

kruzer25

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

pitrik2

дык все таки
как найти все хард ссылки на этот файл?
никак?

kruzer25

Наверняка можно поиском, как и по обычным файлам.
В любом случае, навряд ли это сильно тяжелее (или легче чем найти все симлинки на заданный файл.

pitrik2

Наверняка можно поиском, как и по обычным файлам.
ну вот я имею два файла
у обоих одинаковая цифра в соотв. столбце ls
как понять что эти файлы - хардлинки одного и того же

kruzer25

ls -i

kruzer25

$ echo >test1
$ echo >test2
$ ln test1 test1_hardlink
$ ln -s test1 test1_symlink
$ ls -li
total 4
5135 -rw-r--r-- 2 penartur ╬ЄёєЄёЄтєхЄ 1 Jul 25 16:24 test1
5135 -rw-r--r-- 2 penartur ╬ЄёєЄёЄтєхЄ 1 Jul 25 16:24 test1_hardlink
5137 lr--r--r-- 1 penartur ╬ЄёєЄёЄтєхЄ 5 Jul 25 16:24 test1_symlink -> test1
5136 -rw-r--r-- 1 penartur ╬ЄёєЄёЄтєхЄ 1 Jul 25 16:24 test2
$

pitrik2

╬ЄёєЄёЄтєхЄ
что это?

kruzer25

Кодировка

Dasar

как понять что эти файлы - хардлинки одного и того же
этот вопрос остался без ответа...

kruzer25

Я же сказал - с помощью ls -i получаем inode файлов, сравниваем их.

Dasar

> Я же сказал - с помощью ls -i получаем inode файлов, сравниваем их.
если надо решить обратную задачу: по имени файла понять какие еще ссылки ссылаются на этот файл, то браузим все дерево текущей файловой системы?

kruzer25

если надо решить обратную задачу: по имени файла понять какие еще ссылки ссылаются на этот файл, то браузим все дерево текущей файловой системы?
Видимо, да. (Я не знаю, возможно, в некоторых ОС на некоторых ФС есть более простые способы решения этой задачи).
В общем-то, если по имени файла надо понять, какие ещё симлинки на него ссылаются, задача остаётся тако

pitrik2

если надо решить обратную задачу: по имени файла понять какие еще ссылки ссылаются на этот файл, то браузим все дерево текущей файловой системы?
ну дык для симлинков аналогично

Dasar

> ну дык для симлинков аналогично
для симлинков понятно, что другого решения нет.
я удивлен, что нет нормального решения для hardlink-ов, данные-то все у файловой системы есть...

kruzer25

данные-то все у файловой системы есть...
Данных, в общем-то, в нормальном виде нет.
То есть, все файлы знают, какие у них inode, но inode не знают, какие файлы на них ссылаются - знают только количество.
Если inode будут знать, кто на них ссылается - это какое-то излишнее дублирование данных, чреватое ещё и нарушением целостности данных.

pitrik2

данные-то все у файловой системы есть...
не у всех ФФС эти данные есть
в большинстве случаев видимо нету
в файле прописана ссылка на инод
но в иноде ссылки на файл то не прописано
вот и занимаемся перебором всех файлов чтобы найти тот у которого ссылка на наш инод

pitrik2

аперидил на несколько секунд

Dasar

> Если inode будут знать, кто на них ссылается - это какое-то излишнее дублирование данных, чреватое ещё и нарушением целостности данных.
в существующем решении: как раз есть дублирование данных, потому что в одном месте (в дереве файлов) хранятся сами ссылки на файлы, а в другом месте(inode-ы) - хранится кол-во ссылок.
соответственно легко получить невалидное состояние файловой системы: допустим реальных ссылки 3, а в inode записано число ссылок 2 или 4.

kruzer25

соответственно легко получить невалидное состояние файловой системы: допустим реальных ссылки 3, а в inode записано число ссылок 2 или 4.
Да, это косяк. Но более прилично тут никак не сделать, чтобы inode удалялись, когда ссылок становится 0, поэтому для ФС без транзакций было придёмано шаманство - сначала удаляем ссылку, а потом уменьшаем счётчик; если между этими двумя действиями что-то случится (отключат свет худшее, что произойдёт - будет занято лишнее место на винчестере; и можно написать специальную очищалку, которая как раз и будет проверять целостность данных, и удалять inode, на которые никто не ссылается.

sergey_m

> как найти все хард ссылки на этот файл?
find -inum
Оставить комментарий
Имя или ник:
Комментарий: