Значение "total" в верхней части листинга ls -l
- это сумма блоков, используемых всеми элементами в этом листинге. Вы можете получить количество блоков для каждого отдельного элемента, добавив флаг -s
.
Кое-что о количестве блоков и "total":
ls
не сообщает количество блоков, используя размер блока файловой системы (который обычно составляет 4096 байт), а в единицах 1024 или 512 байт в зависимости от версии (и флагов, а иногда и переменных окружения). Вот почему на большинстве современных систем количество блоков, сообщаемое ls
, всегда кратно 4.
Размер каталога не является рекурсивной суммой размеров вещей, содержащихся в нем.
mkdir a
mkdir a/b
head -9999999999c /dev/urandom > a/b/foo
Что покажет ls -l a
? Он покажет b
, который является каталогом. Каков размер b
? Довольно маленький, вероятно, 4 блока (1 реальный блок файловой системы) Каталог - это не tarball; он физически не содержит файлы, находящиеся в нем. Это только список имен файлов и номеров inode. Так, список для a
включает только b
, что мало, и "итог" для этого списка также мал. ls -l a/b
покажет foo
, который большой, и "итог" будет большим.
Поскольку total - это сумма отображаемых элементов, опции ls
, изменяющие отображаемое, изменяют и total.
mv a/b/foo a/b/.foo
ls -l a/b
Поскольку .foo
начинается с точки, он больше не включен в список каталогов. Таким образом, "итого" теперь 0, для каталога с огромным файлом в нем! Добавьте флаг -a
, и .foo
появится, а "итого" снова станет большим. На самом деле, "итого" больше, чем количество блоков для .foo
, потому что оно также включает количество блоков для .
(a/b
) и ...
(a
). Флаг -A
приятнее (опустите .
и ...
, но включать все остальные дотфайлы).
Количество блоков не полностью предсказуемо по размерам файлов, потому что разные файловые системы имеют разные размеры блоков (поэтому файл, содержащий 1 байт, будет считаться занимающим 1 блок в файловой системе с 1024-байтными блоками и 4 блока в файловой системе с 4096-байтными блоками), а также потому, что подсчет включает накладные расходы файловой системы (косвенные блоки, в которых хранится основной список блоков), и потому, что существуют разреженные файлы - большой кусок нулей в файле может (но не всегда будет) храниться эффективным образом, не занимая дополнительных блоков.
Думаю, вы настроили файл sudoers как таковой:
test ALL=(weblogic) NOPASSWD: /u01/Oracle/Middleware/user_projects/domains/base_domain/startWebLogic.sh
Это позволит пользователю test
запускать команду от имени пользователя weblogic
, без необходимости вводить пароль. (Если вы этого не хотите, удалите NOPASSWD:
.
Кроме того, поскольку вы собираетесь запускать Weblogic в фоновом режиме, было бы неплохо настроить его на использование функции автоматического -входа в систему с помощью boot.properties, чтобы он не запрашивал пользователя/пароль. Поместите файл с именем boot.properties
в /u01/Oracle/Middleware/user_projects/domains/base_domain/servers/your_server_name/security
(, при необходимости создайте каталог безопасности )со следующим содержимым:
username=your_weblogic_username
password=your_weblogic_password
Затем войдите как test
и запуститеsudo -u weblogic nohup /u01/Oracle/Middleware/user_projects/domains/base_domain/startWebLogic.sh &
И вы получите:
root 3133 0.0 0.1 37084 6208 pts/1 S 17:47 0:00 sudo -u weblogic nohup /u01/Oracle/Middleware/user_projects/domains/base_domain/startWebLogic.sh
weblogic 3134 0.0 0.0 7112 2912 pts/1 S 17:47 0:00 \_ /bin/sh /u01/Oracle/Middleware/user_projects/domains/base_domain/startWebLogic.sh
weblogic 3135 0.0 0.0 7252 3508 pts/1 S 17:47 0:00 \_ /bin/sh /u01/Oracle/Middleware/user_projects/domains/base_domain/bin/startWebLogic.sh
weblogic 3168 2.8 10.8 2606220 437004 pts/1 Sl 17:47 0:15 \_ /home/weblogic/jdk/bin/java -server -Xms256m -Xmx512m -Dweblogic.Name=AdminServer -Djava.security.policy=/u01/Oracle/wlserver/server/lib/weblogic.policy -Dweblogic.ProductionModeEnabled=true -Djava.system.class.loader=com.oracle.classloader.weblogic.LaunchClassLoader -javaagent:/u01/Oracle/wlserver/server/lib/debugpatch-agent.jar -da -Dwls.home=/u01/Oracle/Middleware/wlserver/server -Dweblogic.home=/u01/Oracle/Middleware/wlserver/server weblogic.Server
попробуй:
su -p -s /bin/sh weblogic -c "nohup /u01/Oracle/Middleware/user_projects/domains/base_domain/startWebLogic.sh &"
Обратите внимание на «-c» перед командой в кавычках.
Также убедитесь, что у пользователя «weblogic» есть разрешение на запись в текущий каталог, потому что «nohup» перенаправит вывод сервера в файл «nohup.out» в текущем каталоге.