powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / solaris, truss и дескриптор файла
9 сообщений из 9, страница 1 из 1
solaris, truss и дескриптор файла
    #34845385
х.з.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть solaris 9 и кусок трассировки:

Код: plaintext
1.
2.
3.
/1:     pread(256, "06A2\0\001 BDF06 x h GC8".., 8192, 0x5BE0C000) = 8192
/1:     pread(256, "06A2\0\001 BDF16 x h GC8".., 8192, 0x5BE2C000) = 8192
/1:     poll(0xFFFFFFFF7FFF4688, 1, 0)                  = 0
/1:     pread(258, "06A2\0\00180 \ 98DE3 5E4".., 8192, 0x0B872000) = 8192

не нашел нигде как определить файл который читается.

как я понял 256,258 это дескриптор

1. Он (дескриптор) уникален в пределах системы или для каждого процесса только?

2. Никто не поделится "справочником" по вызовам truss ?
...
Рейтинг: 0 / 0
solaris, truss и дескриптор файла
    #34845524
Фотография Умаксуман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, ты правильно понял. А вообще гениальный совет - смотри ман
man pread -там про нее все написано
Дескриптор уникален в пределах процесса, причем для одного и того же файла у одного процесса может быть несколько дескрипторов - например один поток процесса открыл файл на запись, а другой на чтение.


Справочника по вызовам truss нет и быть не может - это системные вызовы. Ищи в гугле что-нибудь типа Solaris system calls. К тому же для каждого системного вызова есть ман.
...
Рейтинг: 0 / 0
solaris, truss и дескриптор файла
    #34845526
Фотография Умаксуман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, а чтобы определить файл нужно просмотреть трассировку и найти где вызов типа creat или open возвращает значение 256 и 258 соответственно - то есть происходит создание или открытие файла
...
Рейтинг: 0 / 0
solaris, truss и дескриптор файла
    #34858855
Isaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
х.з.есть solaris 9 и кусок трассировки:

Код: plaintext
1.
2.
3.
/1:     pread(256, "06A2\0\001 BDF06 x h GC8".., 8192, 0x5BE0C000) = 8192
/1:     pread(256, "06A2\0\001 BDF16 x h GC8".., 8192, 0x5BE2C000) = 8192
/1:     poll(0xFFFFFFFF7FFF4688, 1, 0)                  = 0
/1:     pread(258, "06A2\0\00180 \ 98DE3 5E4".., 8192, 0x0B872000) = 8192

не нашел нигде как определить файл который читается.



lsof -p ...
lsof
...
Рейтинг: 0 / 0
solaris, truss и дескриптор файла
    #34859084
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Isaev х.з.есть solaris 9 и кусок трассировки:

Код: plaintext
1.
2.
3.
/1:     pread(256, "06A2\0\001 BDF06 x h GC8".., 8192, 0x5BE0C000) = 8192
/1:     pread(256, "06A2\0\001 BDF16 x h GC8".., 8192, 0x5BE2C000) = 8192
/1:     poll(0xFFFFFFFF7FFF4688, 1, 0)                  = 0
/1:     pread(258, "06A2\0\00180 \ 98DE3 5E4".., 8192, 0x0B872000) = 8192

не нашел нигде как определить файл который читается.



lsof -p ...
lsof

Здесь вам не тут (с) :)
man pfiles

Доступ к содержимому файла - через /proc/PID/fd/номер_дескриптора.
...
Рейтинг: 0 / 0
solaris, truss и дескриптор файла
    #34859628
Isaev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
УмаксуманДа, а чтобы определить файл нужно просмотреть трассировку и найти где вызов типа creat или open возвращает значение 256 и 258 соответственно - то есть происходит создание или открытие файла
А если файл был открыт раньше начала трассировки?


Scott Tiger Isaev х.з.есть solaris 9 и кусок трассировки:

Код: plaintext
1.
2.
3.
/1:     pread(256, "06A2\0\001 BDF06 x h GC8".., 8192, 0x5BE0C000) = 8192
/1:     pread(256, "06A2\0\001 BDF16 x h GC8".., 8192, 0x5BE2C000) = 8192
/1:     poll(0xFFFFFFFF7FFF4688, 1, 0)                  = 0
/1:     pread(258, "06A2\0\00180 \ 98DE3 5E4".., 8192, 0x0B872000) = 8192

не нашел нигде как определить файл который читается.



lsof -p ...
lsof

Здесь вам не тут (с) :)
man pfiles

Доступ к содержимому файла - через /proc/PID/fd/номер_дескриптора.

Не понял как этим можно воспользоваться для решения задачи автора?!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
bash- 2 . 03 # ls -l /proc/`ps -e|grep cron|awk '{print $1}'`/fd
total  181536 
c---------   1 root     sys       13,  2 Oct 10 09:05 0
--w-------   1 root     root     46438713 Oct 10 12:01 1
--w-------   1 root     root     46438713 Oct 10 12:01 2
p---------   1 root     root           0 Feb 15  2007 3
p---------   0 root     other          0 Oct 10 12:01 4
D---------   1 root     root           0 Dec 25  2002 5
p---------   0 root     other          0 Oct 10 12:01 6

bash- 2 . 03 # pfiles `ps -e|grep cron|awk '{print $1}'`
 179 :    /usr/sbin/cron
  Current rlimit:  256  file descriptors
    0 : S_IFCHR mode: 0666  dev: 85 , 2  ino: 260863  uid: 0  gid: 3  rdev: 13 , 2 
      O_RDONLY|O_LARGEFILE
    1 : S_IFREG mode: 0600  dev: 85 , 2  ino: 31243  uid: 0  gid: 0  size: 46438713 
      O_WRONLY|O_APPEND|O_LARGEFILE
    2 : S_IFREG mode: 0600  dev: 85 , 2  ino: 31243  uid: 0  gid: 0  size: 46438713 
      O_WRONLY|O_APPEND|O_LARGEFILE
    3 : S_IFIFO mode: 0600  dev: 85 , 2  ino: 18763  uid: 0  gid: 0  size: 0 
      O_RDWR|O_LARGEFILE
    4 : S_IFIFO mode: 0000  dev: 277 , 0  ino: 66  uid: 0  gid: 0  size: 0 
      O_RDWR|O_NONBLOCK
    5 : S_IFDOOR mode: 0444  dev: 282 , 0  ino: 38693  uid: 0  gid: 0  size: 0 
      O_RDONLY|O_LARGEFILE FD_CLOEXEC  door to nscd[ 194 ]
    6 : S_IFIFO mode: 0000  dev: 277 , 0  ino: 66  uid: 0  gid: 0  size: 0 
      O_RDWR

bash- 2 . 03 # /usr/local/bin/lsof -p `ps -e|grep cron|awk '{print $1}'`
COMMAND PID USER   FD   TYPE        DEVICE SIZE/OFF   NODE NAME
cron     179  root  cwd   VDIR           85 , 2        512    80758  / (/dev/md/dsk/d2)
cron     179  root  txt   VREG           85 , 2      56772   149044  / (/dev/md/dsk/d2)
cron     179  root  txt   VREG           85 , 2      44836   156078  /usr/lib/nss_files.so. 1 
cron     179  root  txt   VREG           85 , 2      17096   211083  /usr/platform/sun4u/lib/libc_psr.so. 1 
cron     179  root  txt   VREG           85 , 2      70864   155470  /usr/lib/libsocket.so. 1 
cron     179  root  txt   VREG           85 , 2    1158072   156431  /usr/lib/libc.so. 1 
cron     179  root  txt   VREG           85 , 2      24968   155446  /usr/lib/libmp.so. 2 
cron     179  root  txt   VREG           85 , 2       5008   155486  /usr/lib/libdl.so. 1 
cron     179  root  txt   VREG           85 , 2      40684   156435  /usr/lib/libpam.so. 1 
cron     179  root  txt   VREG           85 , 2      13376   156436  /usr/lib/libproject.so. 1 
cron     179  root  txt   VREG           85 , 2      26712   155491  /usr/lib/libsecdb.so. 1 
cron     179  root  txt   VREG           85 , 2     920100   156072  /usr/lib/libnsl.so. 1 
cron     179  root  txt   VREG           85 , 2     127744   155709  /usr/lib/libbsm.so. 1 
cron     179  root  txt   VREG           85 , 2      24628   155416  /usr/lib/libcmd.so. 1 
cron     179  root  txt   VREG           85 , 2        140   199646  /var/ld/ld.config
cron     179  root  txt   VREG           85 , 2     266140   155463  /usr/lib/ld.so. 1 
cron     179  root    0r  VCHR           13 , 2       0t0  260863  /devices/pseudo/mm@ 0 :null
cron     179  root    1w  VREG           85 , 2   46438713    31243  / (/dev/md/dsk/d2)
cron     179  root    2w  VREG           85 , 2   46438713    31243  / (/dev/md/dsk/d2)
cron     179  root    3u  FIFO           85 , 2      0t26   18763  / (/dev/md/dsk/d2)
cron     179  root    4u  FIFO 0x30000a61e20      0t1      66  (fifofs) PIPE->0x30000a61f08
cron     179  root    5r  DOOR          282 , 0       0t0   38693  /etc/.name_service_door (door to nscd[ 194 ])
cron     179  root    6u  FIFO 0x30000a61f08      0t0      66  (fifofs) PIPE->0x30000a61e20
bash- 2 . 03 #

...
Рейтинг: 0 / 0
solaris, truss и дескриптор файла
    #34859932
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IsaevА если файл был открыт раньше начала трассировки?

pfiles, я ж сказал. А если и трассировка не с начала, и процесс закончился, то уже мало что поможет. Хотя есть вероятность, что повторный запуск процесса открывать файлы будет в том же порядке, и можно будет подсмотреть.

Isaev Scott Tigerman pfiles

Доступ к содержимому файла - через /proc/PID/fd/номер_дескриптора.

Не понял как этим можно воспользоваться для решения задачи автора?!


Не понял - в чём трудности? Определить имя файла по известным major device number, minor device number и inode number? Или получить список замапленных библиотек? Так второе есть в /proc/PID/object/ и есть стандартные средства pldd и, для особо въедливых, pmap , а первое неплохо уметь и самому определять.
Понятно, что lsof даёт более человекочитаемый вывод, но это не есть стандартная утилита, значит, нет смысла её использовать при наличии стандартной альтернативы. В 10-й версии, кстати, pfiles уже выводит имя файла, а в /proc есть /proc/PID/path/ .
...
Рейтинг: 0 / 0
solaris, truss и дескриптор файла
    #34862523
х.з.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scott TigerНе понял - в чём трудности? Определить имя файла по известным major device number, minor device number и inode number?
в общем то да. пришлось потратить 20 мин. :) забывается все блин

то что lsof - нету уже сказали. за pfiles спасибо.

про major|minor: совсем уж удобного способа не нашел, только получение "sd@1,0:a │ 0, 8"
а дальше что у меня на 1 ид я знаю.

Как-то можно получить ссылку напрямую на ФС?
...
Рейтинг: 0 / 0
solaris, truss и дескриптор файла
    #34865552
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
х.з.
про major|minor: совсем уж удобного способа не нашел, только получение "sd@1,0:a │ 0, 8"
а дальше что у меня на 1 ид я знаю.

Как-то можно получить ссылку напрямую на ФС?

Ну, например, minor number присутствует в выводе mount, правда - в шестнадцатиричном виде. Например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
$ pfiles 23152
23152:  ora_lgwr_scpp
  Current rlimit: 65536 file descriptors
...
 277: S_IFREG mode:0640 dev:85, 107  ino:4 uid:100 gid:100 size:2147491840
      O_RDWR|O_DSYNC|O_LARGEFILE FD_CLOEXEC
      advisory write lock set by process 23150
...

107 в шестнадцатиричном виде - это 6b

$ mount | grep 6b
 /oracle/oradata2 on /dev/md/dsk/d107  read/write/setuid/intr/forcedirectio/largefiles/logging/xattr/noatime/onerror=panic/dev=15400 6b  on Sun Jul  1 11:11:33 2007
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / solaris, truss и дескриптор файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]