Почему я могу «Не создать жесткую ссылку из файла устройства в каталоге, отличном от / dev?

ps ej | cut -d "" -f1 | sort | uniq -c

Фактически, ps ej отображает родительский Pid процесса, поэтому, если процесс много разветвляется, все его дочерние элементы будут иметь один и тот же Ppid.

cut -d "" -f1 предназначен для сохранения только первого поля вывода ps, затем сортирует данные, и, наконец, uniq -c отобразит количество вхождений каждого uniq pid.

У вас также может быть версия только для awk с подсчетом вхождений с массивом: ps ejx | awk -n '{count [$ 1] ++} END {for (j in count) print "process:" j, "(" count [j] ")"} '

11
29.03.2018, 23:13
2 ответа

Жесткие ссылки просто создают еще одну запись в каталоге, указывающую на файл (, где файл — это нечто вроде файла, например, каталог ). Поэтому жесткие -ссылки не могут ссылаться на файл в другой файловой -системе.

Мягкие ссылки -вам в этом случае помогут. Используйте ln -s. Программные ссылки могут проходить через файловые системы и даже указывать на то, чего там нет.

2
27.01.2020, 19:57

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

Однако вы можете добиться желаемого с помощью команды mknod.

  1. Выполнить ls -l /dev/devicefile. Вы должны увидеть такой вывод:

    crw-rw-rw- 1 root root 1, 9 Mar 29 15:46 /dev/urandom
    
  2. Обратите внимание на число в столбце размера(1, 9).
  3. Запустите команду mknod /path/to/destination c 1 9(, подставив нужные значения ).

Почему это работает?

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

11
27.01.2020, 19:57

Теги

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