Существует ли различие между hardlinking с CP-l или ln?

Сообщение от оболочки начинается -sh. Это дает два важного ключа к разгадке:

  • Продвижение - указывает, что это - оболочка входа в систему. Условно, программа входа в систему (программа, где Вы вводите свое имя пользователя и пароль, которое может быть login, gdm, sshd, …), запускает оболочку с набора названия программы для начала с дополнительного -. Таким образом, оболочка знает, что это - оболочка входа в систему и чтения ~/.profile или другая сессия запускает файл.
  • Имя оболочки sh. Таким образом, оболочка входа в систему пользователя установлена на /bin/sh, а не колотить. Также /bin/sh символьная ссылка состоит в том, чтобы колотить, или это - некоторая другая оболочка, такая как тире. Когда удар вызывается под именем sh, это не читает свои конфигурационные файлы, только стандартные файлы (~/.profile и /etc/profile в оболочках входа в систему, ничем в оболочках невхода в систему), для совместимости. Так так или иначе ~/.bashrc не читается.

При явном вызове удара он будет читать .bashrc. Необходимо будет передать -t флаг к ssh сказать этому открывать терминал даже при том, что Вы указали команду.

ssh -t testuser@nameofhost bash

Можно хотеть переключить оболочку входа в систему пользователя, чтобы быть ударом вместо /bin/sh. Как testuser, выполните команду

chsh -s /bin/bash

Измените путь к /usr/local/bin/bash или везде, где удар расположен. Если Вы вызываете chsh без аргументов Вы получите меню, показывающее, что окружает, Вам разрешают выбрать.

15
09.08.2014, 10:18
2 ответа

Результаты обоих должны быть одинаковыми, поскольку создается жесткая ссылка на исходный файл.

Разница заключается в предполагаемом использовании и, следовательно, в параметрах, доступных для каждой команды. Например, cp может использовать рекурсию, тогда как ln не может:

cp -lr <src> <target>

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

При копировании одного файла, как в вашем примере, результаты будут идентичными.

16
27.01.2020, 19:49

ссылка использует наименьшее количество системных вызовов, за ней следует ln и, наконец, cp :

$ strace link f.txt g.txt | wc --lines
282

$ strace ln --symbolic f.txt g.txt | wc --lines
311

$ strace ln f.txt g.txt | wc --lines
334

$ strace cp --symbolic f.txt g.txt | wc --lines
394

$ strace cp --link f.txt g.txt | wc --lines
410
2
27.01.2020, 19:49

Теги

Похожие вопросы