Loading...
mihayloff14 avatar mihayloff14 824 Точки

[LSA] Няколко въпроса свързани с материала от курса

Здравейте,

През ваканцията успях да усвоя материала от курса и започнах да поназнайвам някои неща, но наред с това се породиха и някои въпроси. Първо, нека попитам някои random въпроси свързани с най-различни части от курса, които ми дойдоха наум докато гледах лекциите:

1. Защо командата lsof (която би трябвало да показва всички отворени файлове и съответните програми които са ги отворили) показва повече отворени файлове за даден процес отколкото има отворени file descriptors в /proc/PID/fd директорията си? Доколкото разбирам по това се съди дали даден файл е отворен или не или може би се бъркам.

Example:
lsof | grep -c "^chrome[ ]*5016" // Output 150 - броя отворени файлове от процеса 5016, стартиран от chrome

ls -l /proc/5016/fd | wc -l // Output 30 - File descriptors отворени от процеса 5016

2. Как можем да зададем директорията, в която yum инсталира пакети и ако е възможно - директория по default в която да се инсталират. В интернет попаднах на отговори тип "You simply can't", но Мариян спомена на съответната лекция за нещо подобно, въпреки че не обясни как става номера доколкото помня.

3. Разбрах че bash и sh са различни shell-ове и по принцип скриптовете се изпълняват с командата bash, но забелязвам из интернет и хора, които ползват sh за изпълнение на скриптове. Въпросът ми е, има ли съществена разлика при изпълнението на скриптове от съответни команди? Тъй като sh е по-стар shell предполагам, че предлага по-ограничени неща, но когато тествах на моята машина с различните команди не открих особена разлика.

UPDATE: След проведеното контролно по ЛСА, вече имам и нов въпрос и той е - какво точно е значението на първото число от четирицифрения вариант на file permission mod (ex. 0777). Предполагам, че това е свързано със setuid, sticky bit, etc. Явно това ми е убягнало из лекциите и не съм го разбрал добре. :/

 

Другото за което бих искал да помоля е качествен manual/introduction/tutorial за боравене със systemd init системата, защото в съответната лекция това се засегна отгоре отгоре и не стана много ясно как точно работи и как се борави с него, а Мариян подчерта, че в популярни дистрибуции като Ubuntu и Fedora, се използва systemd. Другото което е, това което намирам в интернет изглежда доста сложно за начинаещи и затова да попитам има ли някой по-userfriendly вариант да се запознаем с това?

Благодаря предварително на всеки, който би могъл да ми помогни с някои от въпросите ми. :)

0
Linux Курсове 16/01/2015 10:51:35
hackman avatar hackman Trainer 72 Точки

Отговор за lsof ;)

Това което виждате отдолу е извадка от file descriptors на ntpd. Както виждаме имаме fd 0, 1 и 2 насочени към /dev/null, но все пак отворени, и всички останали descriptors са network sockets.

[root@operations ~]# ll /proc/1631/fd
total 0
lrwx------ 1 root root 64 Feb 20 14:55 0 -> /dev/null
lrwx------ 1 root root 64 Feb 20 14:55 1 -> /dev/null
lrwx------ 1 root root 64 Feb 20 14:55 16 -> socket:[11457]
lrwx------ 1 root root 64 Feb 20 14:55 17 -> socket:[11458]
lrwx------ 1 root root 64 Feb 20 14:55 18 -> socket:[11462]
lrwx------ 1 root root 64 Feb 20 14:55 19 -> socket:[11463]
lrwx------ 1 root root 64 Feb 20 14:55 2 -> /dev/null
lrwx------ 1 root root 64 Feb 20 14:55 20 -> socket:[11464]
lrwx------ 1 root root 64 Feb 20 14:55 21 -> socket:[11465]
lrwx------ 1 root root 64 Feb 20 14:55 22 -> socket:[11466]
lrwx------ 1 root root 64 Feb 20 14:55 3 -> socket:[11454]
[root@operations ~]# ll /proc/1631/fd|wc -l
12
Тази цифра 12 включва и първият ред който е 'total 0' съответно това са 11 file descriptors.

Това са всички file descriptors които има отворени от ntpd

[root@operations ~]# ps axf|grep 1631
 1631 ?        Ss     0:07 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
[root@operations ~]#

Когато обаче пуснем lsfo -p 1631 (т.е. командата само за pid 1631) виждаме, очевадно повече редове и разни файлове.

[root@operations ~]# lsof -p 1631
COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME
ntpd    1631  ntp  cwd    DIR              252,1     4096       2 /
ntpd    1631  ntp  rtd    DIR              252,1     4096       2 /
ntpd    1631  ntp  txt    REG              252,1   614144 1553667 /usr/sbin/ntpd
ntpd    1631  ntp  mem    REG              252,1   113952 1313411 /lib64/libresolv-2.12.so
ntpd    1631  ntp  mem    REG              252,1    27424 1311113 /lib64/libnss_dns-2.12.so
ntpd    1631  ntp  mem    REG              252,1    65928 1311115 /lib64/libnss_files-2.12.so
ntpd    1631  ntp  mem    REG              252,1   145896 1313401 /lib64/libpthread-2.12.so
ntpd    1631  ntp  mem    REG              252,1    21152 1313447 /lib64/libattr.so.1.1.0
ntpd    1631  ntp  mem    REG              252,1    91096 1313402 /lib64/libz.so.1.2.3
ntpd    1631  ntp  mem    REG              252,1    22536 1313403 /lib64/libdl-2.12.so
ntpd    1631  ntp  mem    REG              252,1  1926800 1313397 /lib64/libc-2.12.so
ntpd    1631  ntp  mem    REG              252,1    47064 1313404 /lib64/librt-2.12.so
ntpd    1631  ntp  mem    REG              252,1    19016 1310754 /lib64/libcap.so.2.16
ntpd    1631  ntp  mem    REG              252,1  1953536 1443759 /usr/lib64/libcrypto.so.1.0.1e
ntpd    1631  ntp  mem    REG              252,1   599384 1310743 /lib64/libm-2.12.so
ntpd    1631  ntp  mem    REG              252,1   156928 1313396 /lib64/ld-2.12.so
ntpd    1631  ntp    0u   CHR                1,3      0t0    3848 /dev/null
ntpd    1631  ntp    1u   CHR                1,3      0t0    3848 /dev/null
ntpd    1631  ntp    2u   CHR                1,3      0t0    3848 /dev/null
ntpd    1631  ntp    3u  unix 0xffff880118b34cc0      0t0   11454 socket
ntpd    1631  ntp   16u  IPv4              11457      0t0     UDP *:ntp
ntpd    1631  ntp   17u  IPv6              11458      0t0     UDP *:ntp
ntpd    1631  ntp   18u  IPv6              11462      0t0     UDP localhost:ntp
ntpd    1631  ntp   19u  IPv6              11463      0t0     UDP [fe80::5653:52ff:fe30:70b]:ntp
ntpd    1631  ntp   20u  IPv4              11464      0t0     UDP localhost:ntp
ntpd    1631  ntp   21u  IPv4              11465      0t0     UDP operations.sgvps.net:ntp
ntpd    1631  ntp   22u  sock                0,6      0t0   11466 can't identify protocol
[root@operations ~]#

File descriptors показани от lsof са няколко вида. И реалните отворени файлове в момента имат тип "u" т.е. само последните 11 са реално отворени файлове в момента. Това е същата бройка като информацията от /fd директорията.

Тогава какво са горните неща?
За да не copy/paste-вам документация... а и за да се научите вие, моля отворете man page-а на lsof "man lsof" и потърсете секцията "File Descriptor number", където е описано какво са другите видове file descriptors.

Важно е да кажа, че другите файлове са отворени от програмата ntpd, когато тя се е стартирала, прочетени са, заредени са в паметта и след това са затворени. Т.е. това е и причината да не се виждат във /fd директорията.

За другите въпроси, сигурно довечера или утре ще отговоря.

1
hackman avatar hackman Trainer 72 Точки

първо, ... както винаги: man yum

и една малка извадка от там:

       --installroot=root
              Specifies an alternative installroot, relative to which all packages will be installed. Think of this like doing "chroot <root> yum" except using --installroot allows yum to work before the chroot is created.  Note: You may also want to use the option --releasever=/ when creating the installroot as otherwise the $releasever value is taken from the rpmdb within the installroot (and thus. will be empty, before creation).
              Configuration Option: installroot

 

 

за YUM ето едно добро четиво:

http://prefetch.net/articles/yumchrootlinux.html

 

 

 

 

0
hackman avatar hackman Trainer 72 Точки

bash vs sh

Разликата между двата shell-a e, че sh е основополагащият, един от първите shell-ове. Bash от друга страна добавя много допълнителни функционалности и улеснения.

Един пример са regular expressions в bash. Те не работят в sh. Тук има информация за някой от разликите, но не всички:

http://mywiki.wooledge.org/Bashism

1
hackman avatar hackman Trainer 72 Точки

0777, първото число е за да сложиш

- setuid

- setgid

- sticky bit

0
hackman avatar hackman Trainer 72 Точки

systemd

с цел да не псувам много :)  а и да не взема да обяснявам глупости(примерно днес разбрах, че systemd се е сдобил със собствен boot loader code), ви предлагам да разгледате следните 2 линка:

 

http://www.linux.com/learn/tutorials/788613-understanding-and-using-systemd

 http://0pointer.de/blog/projects/three-levels-of-off

 

0
mihayloff14 avatar mihayloff14 824 Точки

Благодаря за отговорите. Ще са ми от полза ^^

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.