Дочерний процесс наследовался что nice
значение сохранено родителем в то время, когда это разветвлено (в Вашем примере, 5
).
Однако, если nice
значение изменений родительского процесса после разветвления дочерних процессов, дочерние процессы не наследовали новое nice
значение.
Можно легко наблюдать это с контрольным инструментом top
. Если nice
поле (NI) не показывают по умолчанию, можно добавить его путем нажатия f
и выбор I
. Это добавит NI
столбец к top
дисплей.
* I: NI = Nice value
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1937 root 20 0 206m 66m 45m S 6.2 1.7 11:03.67 X
Хорошая информация от man 2 fork
ветвление () создает новый процесс путем дублирования обработки вызовов. Новый процесс, называемый ребенком, является точным дубликатом обработки вызовов, называемой родителем, за исключением следующих моментов:
- У ребенка есть его собственный уникальный идентификатор процесса, и этот PID не соответствует идентификатору никакой существующей группы процесса (setpgid (2)).
- Идентификатор родительского процесса ребенка совпадает с идентификатором процесса родителя.
- Ребенок не наследовал блокировки памяти его родителя (mlock (2), mlockall (2)).
- Использования ресурса процесса (getrusage (2)) и счетчики процессорного времени (времена (2)) обнулены в ребенке.
- Множество ребенка незаконченных сигналов первоначально пусто (sigpending (2)).
- Ребенок не наследовал семафорные корректировки от его родителя (semop (2)).
- Ребенок не наследовал рекордные блокировки от его родителя (fcntl (2)).
- Ребенок не наследовал таймеры от его родителя (setitimer (2), предупреждение (2), timer_create (2)).
- Ребенок не наследовал выдающиеся асинхронные операции ввода-вывода от его родителя (aio_read (3), aio_write (3)), и при этом он не наследовал асинхронных контекстов ввода-вывода от своего родителя (см. io_setup (2)).
Я думаю, что Вы могли бы думать tree
команда. Например:
$ tree -pufid apps/glassfish3/ | less
apps/glassfish3
[drwxr-xr-x saml ] apps/glassfish3/bin
[drwxr-xr-x saml ] apps/glassfish3/glassfish
[drwxr-xr-x saml ] apps/glassfish3/glassfish/bin
[drwxr-xr-x saml ] apps/glassfish3/glassfish/config
[drwxr-xr-x saml ] apps/glassfish3/glassfish/docs
[drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api
[drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/doc-files
[drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax
[drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/annotation
[drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/annotation/security
[drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/annotation/sql
[drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/decorator
[drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/ejb
[drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/ejb/embeddable
...
...
Вышеупомянутые переключатели делают следующее:
-p
- полномочия-u
- имя пользователя/идентификатор пользователя-f
- полный путь-i
- не печатайте строки добавления отступа-d
- каталоги печати только/home/user/dir/child/file
не дети.
– Raphael Ahrens
10.07.2013, 08:12
-u
действительно необходимый? Кажется, что это - значение по умолчанию здесь (Дерево ver. 1.6.0 под GNU колотят 4.2.45). Существует ли опция заставить "имя пользователя/идентификатор пользователя" замолчать?
– Nikos Alexandris
14.12.2013, 01:42
После предоставления его некоторые думали, что я придумал это
#!/bin/sh
l_path=$1
while [ "$l_path" != / -a "$l_path" != . ]; do
ls -ld $l_path
l_path=$(dirname -- "$l_path")
done
Вывод похож на это
-rw------- 1 tant tant 181016423 Jun 25 23:49:17 2013 /home/tant/test_file
drwxr-xr-x 85 tant tant 5632 Jul 9 19:40:11 2013 /home/tant
lrwxr-xr-x 1 root wheel 8 Sep 4 23:53:27 2012 /home -> usr/home
Я надеюсь, что все в порядке, который это в обратном порядке.
На основе комментариев вот способ перечислить от корня вниз:
#!/bin/sh
l_path=$1
while [ "$l_path" != / -a "$l_path" != . ]; do
ls -ld $l_path
l_path=$(dirname -- "$l_path")
done | sed '1!G;h;$!d'
| tac
если у Вас есть он, или | sed '1!G;h;$!d'
если нет.
– mrb
09.07.2013, 20:44
[ "$l_path" != / -a "$l_path" != . ]
вместо этого.
–
09.07.2013, 20:52
stat -l
должен, вероятно, быть stat
или ls -ld
.
–
09.07.2013, 20:59
Команда Вы ищете список полномочий и владельцев/групп, является ls-l.
- l опция используется для длинного формата списка.
ls-l/path/to/list
Кроме того, если Вы хотите перечислить, и скрытые файлы затем добавляют-a (вся) опция.
ls - al/path/to/list
Кроме того, если Вы хотите перечислить полномочия в своем-R использования подкаталогов (рекурсивная) опция.
ls-Rl/path/to/list
Первые отображения столбца полномочия (читает (r), запишите (w), выполнитесь (x)) и некоторые специальные полномочия (каталоги (d), - (регулярный файл)), и 3-й и 4-й столбец показывает Вам владельца файла/каталога и группу соответственно.
В каталоге которого вы хотите узнать разрешения и владельцев предка:
for i in $(seq 0 $(pwd | tr -cd / | wc -c)) ; do pwd ; ls -lad ; cd.. ; done
Обратите внимание, что после этого вы окажетесь в /
:), если вы хотите вернуться туда, где вы были, оберните команду внутри
HERE=$(pwd)
...
cd ${HERE}
namei -mo
является большим, что это также дает Вам владельца. – earthmeLon 16.06.2015, 08:17sudo su nginx -s/bin/bash
– Ray Foss 29.09.2016, 03:36