Команда pstree в linux 2021

2.1 High Level View¶

The most important thing to understand is that the DT is simply a data
structure that describes the hardware. There is nothing magical about
it, and it doesn’t magically make all hardware configuration problems
go away. What it does do is provide a language for decoupling the
hardware configuration from the board and device driver support in the
Linux kernel (or any other operating system for that matter). Using
it allows board and device support to become data driven; to make
setup decisions based on data passed into the kernel instead of on
per-machine hard coded selections.

Ideally, data driven platform setup should result in less code
duplication and make it easier to support a wide range of hardware
with a single kernel image.

Linux uses DT data for three major purposes:

Debugging

(Also see .)

  • tutorials
    • «Solving Device Tree Issues» (updated), ELCE October 2015 by Frank Rowand
      • PDF slides
      • Supporting Resources (patches, etc)
  • diffing .dts, .dtb, /proc/devicetree/
    • scripts/dtc/dtx_diff
      • in the Linux kernel source tree as of 4.6-rc1
      • use cases, advantages, and things to be aware of are described in «Solving Device Tree Issues» (updated), ELCE October 2015 by Frank Rowand (PDF). dtx_diff is referred to as «dtdiff» in this presentation.
  • locating source file and line for nodes and properties
    • scripts/dtc/dtx_diff —annotate
      • in the Linux kernel source tree as of 5.0-rc1
      • useful for ‘dtx_diff DTx’
      • not useful for ‘dtx_diff DTx_1 DTx_2’
  • boot time messages
    • device creation
    • driver registration
    • binding driver to device
    • deferred binding

11. Параметры для использования с командой Tree в Linux

Параметры для использования с деревом

Далее Solvetic объяснит доступные параметры для использования с Tree:

-a: распечатать все файлы, помните, что по умолчанию дерево не печатает скрытые файлы.

-d: список только каталогов.

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

-f: вывести префикс полного пути к объектам.

-x: остается только в текущей файловой системе.

-L Level: позволяет определить максимальную глубину просмотра дерева каталогов в результате.

-R: Действовать рекурсивно, пересекая дерево в каталогах каждого уровня, и в каждом из них оно будет выполняться. дерево снова, добавив `-o 00Tree.html ‘.

-P шаблон: список только файлов, которые соответствуют шаблону подстановки.

-I шаблон: не перечислять файлы, которые соответствуют шаблону подстановки.

—matchdirs. Этот параметр указывает шаблон соответствия, который позволяет применять шаблон только к именам каталогов.

—prune: этот параметр удаляет пустые каталоги из выходных данных.

—noreport: пропускает печать файла и отчета каталога в конце списка выполненного дерева.

Общие параметры дерева

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

-q: печатать непечатаемые символы в именах файлов.

-N: печать непечатных символов.

-Q: его функция заключается в назначении имен файлов в двойных кавычках.

-p: вывести тип файла и разрешения для каждого файла в каталоге.

-u: распечатать имя пользователя или UID файла.

-s: вывести размер каждого файла в байтах, а также его имя.

-g Распечатать имя группы или GID файла.

-h: его функция — распечатывать размер каждого файла разборчиво для пользователя.

—du: Он действует в каждом каталоге, генерируя отчет о его размере, включая размеры всех его файлов и подкаталогов.

—si: он использует степени 1000 (единицы СИ) для отображения размера файла.

-D: Распечатать дату последнего изменения файлов.

-F: Ваша задача — добавить `/ ‘для каталогов, a` =’ для файлов сокетов, a` * ‘для исполняемых файлов, `>’ для дверей (Solaris) и a` | ‘ для FIFO.

—inodes: вывести номер инода файла или каталога.

  • —device: вывести номер устройства, к которому относится файл или каталог в результате.
  • -v: Сортировать вывод по версии.

-U: не упорядочивает результаты.

-r: сортировать вывод в обратном порядке.

-t: сортировать результаты по времени последней модификации, а не по алфавиту.

-S: активировать линейную графику CP437

-n: отключает раскраску результата.

-C: активирует раскраску.

-X: активировать вывод XML.

-J: активировать вывод JSON.

-H baseHREF: активирует вывод HTML, включая ссылки HTTP.

—help: Помощь дерева доступа.

—version: показывает используемую версию команды Tree.

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

Команды Linux, для работы с файлами

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

33. ls

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

34. pwd

Linux pwd — это команда для показывает имя текущего рабочего каталога. Когда мы теряемся в каталогах, мы всегда можем показать, где мы находимся.

Пример ример ниже:

35. mkdir

В Linux мы можем использовать команду mkdir для создания каталога.

По умолчанию, запустив mkdir без какой-либо опции, он создаст каталог в текущем каталоге.

36. cat

Мы используем команду cat в основном для просмотра содержимого, объединения и перенаправления выходных файлов. Самый простой способ использовать cat— это просто ввести » имя_файла cat’.

В следующих примерах команды cat отобразится имя дистрибутива Linux и версия, которая в настоящее время установлена на сервере.

37. rm

Когда файл больше не нужен, мы можем удалить его, чтобы сэкономить место. В системе Linux мы можем использовать для этого команду rm.

38. cp

Команда Cp используется в Linux для создания копий файлов и каталогов.

Следующая команда скопирует файл ‘myfile.txt» из текущего каталога в «/home/linkedin/office«.

39. mv

Когда вы хотите переместить файлы из одного места в другое и не хотите их дублировать, требуется использовать команду mv. Подробнее можно прочитать ЗДЕСЬ.

40.cd

Команда Cd используется для изменения текущего рабочего каталога пользователя в Linux и других Unix-подобных операционных системах.

41. Ln

Символическая ссылка или программная ссылка — это особый тип файла, который содержит ссылку, указывающую на другой файл или каталог. Команда ln используется для создания символических ссылок.

Команда Ln использует следующий синтаксис:

42. touch

Команда Touch используется в Linux для изменения времени доступа к файлам и их модификации. Мы можем использовать команду touch для создания пустого файла.

44. head

Команда head используется для печати первых нескольких строк текстового файла. По умолчанию команда head выводит первые 10 строк каждого файла.

45. tail

Как вы, возможно, знаете, команда cat используется для отображения всего содержимого файла с помощью стандартного ввода. Но в некоторых случаях нам приходится отображать часть файла. По умолчанию команда tail отображает последние десять строк.

46. gpg

GPG — это инструмент, используемый в Linux для безопасной связи. Он использует комбинацию двух ключей (криптография с симметричным ключом и открытым ключом) для шифрования файлов.

50. uniq

Uniq — это инструмент командной строки, используемый для создания отчетов и фильтрации повторяющихся строк из файла.

53. tee

Команда Linux tee используется для связывания и перенаправления задач, вы можете перенаправить вывод и/или ошибки в файл, и он не будет отображаться в терминале.

54. tr

Команда tr (translate) используется в Linux в основном для перевода и удаления символов. Его можно использовать для преобразования прописных букв в строчные, сжатия повторяющихся символов и удаления символов.

Команды Linux, связанные с процессом

Эти команды используются для обработки процессов Linux

55. ps

Команда Linux ps — это встроенный инструмент для отслеживания текущих процессов в системе. Он будет фиксировать состояние системы за один раз.

56. pmap

Команда pmap отображает карту использования памяти процесса или нескольких процессов. Pmap сообщает информацию об адресном пространстве или карте использования памяти процесса.

57. top

Команда top в Linux отображает запущенные процессы в системе. Эта команда широко используется для мониторинга нагрузки на сервер.

58. kill

Команда kill используется в Linux и других Unix-подобных операционных системах для завершения процессов без необходимости выхода из системы или перезагрузки компьютера.

59. killall

Команда killall может использоваться для отправки сигнала определенному процессу, используя его имя. Это означает, что если у вас запущено пять версий одной и той же программы, команда killall уничтожит все пять.

60. pkill

Аналогично команде killall, pkill посылает сигнал для завершения процесса с его именем. Начиная с Centos 7 рекомендуется использовать pkill.

61. fg и bg

Мы можем запускать задания в фоновом режиме без какого-либо вмешательства пользователя. Процессы, которые были остановлены каким-либо сигналом прерывания, могут быть продолжены в фоновом режиме с помощью команды bg. Команда fg похожа на команду bg, за исключением того, что вместо отправки команды в фоновом режиме она запускает их на переднем плане, занимает текущий терминал и ожидает завершения процесса.

2.2 Platform Identification¶

First and foremost, the kernel will use data in the DT to identify the
specific machine. In a perfect world, the specific platform shouldn’t
matter to the kernel because all platform details would be described
perfectly by the device tree in a consistent and reliable manner.
Hardware is not perfect though, and so the kernel must identify the
machine during early boot so that it has the opportunity to run
machine-specific fixups.

In the majority of cases, the machine identity is irrelevant, and the
kernel will instead select setup code based on the machine’s core
CPU or SoC. On ARM for example, setup_arch() in
arch/arm/kernel/setup.c will call setup_machine_fdt() in
arch/arm/kernel/devtree.c which searches through the machine_desc
table and selects the machine_desc which best matches the device tree
data. It determines the best match by looking at the ‘compatible’
property in the root device tree node, and comparing it with the
dt_compat list in struct machine_desc (which is defined in
arch/arm/include/asm/mach/arch.h if you’re curious).

The ‘compatible’ property contains a sorted list of strings starting
with the exact name of the machine, followed by an optional list of
boards it is compatible with sorted from most compatible to least. For
example, the root compatible properties for the TI BeagleBoard and its
successor, the BeagleBoard xM board might look like, respectively:

compatible = "ti,omap3-beagleboard", "ti,omap3450", "ti,omap3";
compatible = "ti,omap3-beagleboard-xm", "ti,omap3450", "ti,omap3";

Where “ti,omap3-beagleboard-xm” specifies the exact model, it also
claims that it compatible with the OMAP 3450 SoC, and the omap3 family
of SoCs in general. You’ll notice that the list is sorted from most
specific (exact board) to least specific (SoC family).

Astute readers might point out that the Beagle xM could also claim
compatibility with the original Beagle board. However, one should be
cautioned about doing so at the board level since there is typically a
high level of change from one board to another, even within the same
product line, and it is hard to nail down exactly what is meant when one
board claims to be compatible with another. For the top level, it is
better to err on the side of caution and not claim one board is
compatible with another. The notable exception would be when one
board is a carrier for another, such as a CPU module attached to a
carrier board.

One more note on compatible values. Any string used in a compatible
property must be documented as to what it indicates. Add
documentation for compatible strings in Documentation/devicetree/bindings.

Again on ARM, for each machine_desc, the kernel looks to see if
any of the dt_compat list entries appear in the compatible property.
If one does, then that machine_desc is a candidate for driving the
machine. After searching the entire table of machine_descs,
setup_machine_fdt() returns the ‘most compatible’ machine_desc based
on which entry in the compatible property each machine_desc matches
against. If no matching machine_desc is found, then it returns NULL.

The reasoning behind this scheme is the observation that in the majority
of cases, a single machine_desc can support a large number of boards
if they all use the same SoC, or same family of SoCs. However,
invariably there will be some exceptions where a specific board will
require special setup code that is not useful in the generic case.
Special cases could be handled by explicitly checking for the
troublesome board(s) in generic setup code, but doing so very quickly
becomes ugly and/or unmaintainable if it is more than just a couple of
cases.

Instead, the compatible list allows a generic machine_desc to provide
support for a wide common set of boards by specifying “less
compatible” values in the dt_compat list. In the example above,
generic board support can claim compatibility with “ti,omap3” or
“ti,omap3450”. If a bug was discovered on the original beagleboard
that required special workaround code during early boot, then a new
machine_desc could be added which implements the workarounds and only
matches on “ti,omap3-beagleboard”.

Options

Tree understands the following command line switches:

—help

Outputs a verbose usage listing.

—version

Outputs the version of tree.

-a

All files are printed. By default tree does not print hidden files (those beginning with a dot ‘.’). In no event does tree print the file system constructs
‘.’ (current directory) and ‘..’ (previous directory).

-d

List directories only.

-f

Prints the full path prefix for each file.

-i

Makes tree not print the indentation lines, useful when used in conjunction with the -f option.

-l

Follows symbolic links if they point to directories, as if they were directories. Symbolic links that will result in recursion are avoided when detected.

-x

Stay on the current file-system only. Ala find -xdev.

-P pattern

List only those files that match the wild-card pattern. Note: you must use the -a option to also consider those files beginning with a dot ‘.’
for matching. Valid wildcard operators are ‘*’ (any zero or more characters), ‘?’ (any single character), » (any single character listed between brackets
(optional — (dash) for character range may be used: ex: ), and » (any single character not listed in brackets) and ‘|’ separates alternate
patterns.

-I pattern

Do not list those files that match the wild-card pattern.

—noreport

Omits printing of the file and directory report at the end of the tree listing.

-p

Print the file type and permissions for each file (as per ls -l).

-s

Print the size of each file in bytes along with the name.

-h

Print the size of each file but in a more human readable way, e.g. appending a size letter for kilobytes (K), megabytes (M), gigabytes (G), terrabytes (T),
petabytes (P) and exabytes (E).

-u

Print the username, or UID # if no username is available, of the file.

-g

Print the group name, or GID # if no group name is available, of the file.

-D

Print the date of the last modification time for the file listed.

—inodes

Prints the inode number of the file or directory

—device

Prints the device number to which the file or directory belongs

-F

Append a ‘/’ for directories, a ‘=’ for socket files, a ‘*’ for executable files and a ‘|’ for FIFO’s, as per ls -F

-q

Print non-printable characters in filenames as question marks instead of the default caret notation.

-N

Print non-printable characters as is instead of the default caret notation.

-v

Sort the output by version.

-r

Sort the output in reverse alphabetic order.

-t

Sort the output by last modification time instead of alphabetically.

—dirsfirst

List directories before files.

-n

Turn colorization off always, over-ridden by the -C option.

-C

Turn colorization on always, using built-in color defaults if the LS_COLORS environment variable is not set. Useful to colorize output to a pipe.

-A

Turn on ANSI line graphics hack when printing the indentation lines.

-S

Turn on ASCII line graphics (useful when using linux console mode fonts). This option is now equivalent to ‘—charset=utf-8’ and will eventually be
depreciated.

-L level

Max display depth of the directory tree.

—filelimit #

Do not descend directories that contain more than # entries.

-R

Recursively cross down the tree each level directories (see -L option), and at each of them execute tree again adding ‘-o 00Tree.html’
as a new option.

-H baseHREF

Turn on HTML output, including HTTP references. Useful for ftp sites. baseHREF gives the base ftp location when using HTML output. That is, the local
directory may be ‘/local/ftp/pub’, but it must be referenced as ‘ftp://hostname.organization.domain/pub’ (baseHREF should be
‘ftp://hostname.organization.domain’). Hint: don’t use ANSI lines with this option, and don’t give more than one directory in the directory list. If you wish
to use colors via CCS stylesheet, use the -C option in addition to this option to force color output.

-T title

Sets the title and H1 header string in HTML output mode.

—charset charset

Set the character set to use when outputting HTML and for line drawing.

—nolinks

Turns off hyperlinks in HTML output.

-o filename

Send output to filename.

Примеры использования tree

Самый простой способ использовать команду tree Linux — напечатать в терминале всего лишь одно слово:

Результатом станет стандартное отображение структуры папок. Размер выдачи зависит от того, сколько хлама накопилось на жестком диске. У автора его столько, что листать — не перелистать:

Немного сократить объем информации можно, попросив команду показывать только папки. Для этого служит опция -d. А чтобы отпилить от дерева еще больше ненужных веток, установим ограничение на количество файлов, которые хранятся в папках (если файлов больше, папка не попадет в выдачу). В этом нам поможет опция —filelimit.

Кстати, нельзя устанавливать лимит меньше, чем 25 файлов.

По умолчанию команда tree в linux не показывает скрытые папки. Чтобы увидеть их, следует воспользоваться опцией -a. Заодно не помешает упорядочить выдачу — например, по уровням вложенности (параметр -v). Ну и почему бы не узнать, когда тот или иной файл был изменен последний раз — добавим к команде еще и -D.

Теперь поработаем с определенной группой файлов. Для примера отберем те, у которых формат pdf — сделать это позволяет опция -P. Она дает команде понять, что нужно выводить только документы, соответствующие маске. Чтобы задать маску для любого количества символов от 0 до бесконечности используется знак  *, а чтобы обозначить только 1 символ — знак ?.  Название файла или папки следует заключить в одинарные кавычки.

Опция —prune нужна для того, чтобы исключить из выдачи папки, внутри которых нет  искомых документов (по умолчанию команда выводит даже те папки, которые не имеют отношения к поисковому запросу).

Вот что получаем в итоге:

Стандартно результат команды tree направляется в терминал. Но есть возможность напечатать его в файл и сохранить для дальнейшего использования. С этой целью создадим документ txt с названием tree_command_results и поместим его в корневой каталог. После этого выполним команду следующего вида:

Опция -d использована для сокращения количества информации и ее присутствие здесь не обязательно. Опция -o  отвечает за перенаправление вывода в файл.

В терминале никакой результат не отображается:

Зато в указанном файле находим перечень папок, который занимает 45 страниц:

Для получения дополнительной информации о файлах дополним команду tree опциями -h (показывает размер), -u (указывает на аккаунт, с которого файл был создан), -p (так мы узнаем, что можно делать с каждым конкретным файлом — только просматривать или также изменять его содержимое). Также используем параметр -f, чтобы видеть полный путь к каждому документу.

Полезный лайфхак — если объединить опции -P и -f, можно быстро находить файлы, затерявшиеся в памяти компьютера:

chmod

Команда chmod устанавливает права доступа к файлу или каталогу.

chmod позволяет:

  • Разделить привилегии между пользователями.
  • Ограничить доступ к нежелательным файлам и папкам.
  • Контролировать доступные сервисам действия и прочее.

Синтаксис команды chmod:

Если вывести список папок и файлов командой ls с параметром –l, то можно увидеть нечто подобное:

Первый символ означает:

  • «-» — является файлом;
  • «d» — является каталогом.

Остальная часть строки в 9 символов разбивается на три группы по 3 символа в каждой:

  • Первые 3 символа – права доступа к файлам владельца (-rwx——).
  • Вторые 3 символа – права доступа к файлам группы (—-rwx—).
  • Последние 3 символа – разрешения для других (——-rwx).

Обозначения символов:

  • r – Чтение.
  • w – Запись.
  • x – Выполнение.

Если какой-то из символов отсутствует и вместо него указан «-», тогда нет доступа к данному действию.

Также задать права доступа можно с помощью цифр:

  • 0 – нет прав (-);
  • 1 – только выполнение (—x);
  • 2 – только запись (-w-);
  • 3 – запись и выполнение (w-x);
  • 4 – только чтение (r—);
  • 5 – чтение и выполнение (r-x);
  • 6 – чтение и запись (rw-);
  • 7 – чтение, запись и выполнение (rwx).

Например, у файла «ex.txt» указаны все права:

Нужно изменить их на:

  • Пользователь – все права (7 или rwx).
  • Группа – чтение и запись (6 или rw-).
  • Другим – чтение и выполнение (5 или r-x).

Тогда вводим следующую команду:

Примеры использования

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

Чтобы получить всю информацию о конкретной команде (в нашем случае — bash), нужно набрать в терминале

На скриншоте можно увидеть как выглядит вывод, если команда существует в системе:

  • bash: — это название искомой команды;
  • /bin/bash — адрес, по которому лежит двоичный файл;
  • /etc/bash.bashrc — конфигурационный файл;
  • /usr/share/man/man1/bash.1.gz — мануал.

Если команда по какой-либо причине не существует, в выводе появится только ее название.

Нужно получить информацию о нескольких командах? Нет нужды отдельно прописывать строку поиска для каждой из них. Можно перечислить все названия через пробел, как здесь:

На скриншоте видно, что данные о каждой команде выводятся с новой строки. Для поиска исходных файлов достаточно напечатать

Вместо kword может быть название любой другой программы или команды. Если исходные файлы будут обнаружены, whereis сообщит об их месте расположения. Поиск мануалов происходит так:

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

Для поиска информации в определенных директориях с помощью опций -S, -M, -B следует прописывать путь к требуемому каталогу и не забывать об опции -f перед названием команды, об которой будете искать информацию. К примеру, чтобы найти бинарный файл команды cp в каталоге /bin нужно ввести в терминале:

Воспользовавшись опцией -u, легко найти все необычные записи (то есть, команды или программы, у которых нет бинарного или исходного файла, мануала; а также те, у которых таких файлов два и больше). Вот пример для поиска всех бинарных файлов в директории /bin, которые соответствуют упомянутым характеристикам:

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: