-
Notifications
You must be signed in to change notification settings - Fork 14
/
bolum10.tex
306 lines (244 loc) · 36.6 KB
/
bolum10.tex
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
\chapter{Dosya Sistemi}
\label{chap:bolum10}
\paragraph{Amaçlar}{
\begin{itemize}
\item “dosya” ve “sistem dosya” kavramların anlamak
\item Farklı dosya türlerin tanımak
\item Linux sistemin ağaç dizi yollarını öğrenmek
\item Dizi ağacı içerisinde harici dosyanın nasıl entegre edileceğini öğrenmek
\end{itemize}}
\paragraph{Önceden Bilinmesi Gerekenler}
\begin{itemize}
\item Linux temel bilgileri (Önceki Konulardan)
\item Dosyalar ve Dizinleri işlemesi (Bölüm ~\ref{chap:bolum6})
\end{itemize}
\paragraph{}{
\begin {table}[H]
\caption {Linux Dosya Türleri} \label{tab:title}
\begin{tabular}{l c l l}
\hline
Tür & ls -l& ls -F& Nasıl oluşturulur\\
\hline
düz metin & -& isim& çeşitli programlar\\
dizin & d & isim/ & mkdir \\
sembolik link & l & isim@ & ln -s \\
aygıt dosyası & b veya c & isim & mknod \\
FIFO (pipe) & p & name \textbar & mkfifo \\
UNIX domain socket & s & isim= & komut yok\\
\hline
\end{tabular}
\end {table}
}
\begin{section}{Terimler}
Genelde dosya, verilerin kendi içerisinde bulunan toplamlarıdır. Dosya içindeki veri türlerine bağlı herhangi bir kısıtlama yoktur; bir dosya metin birkaç harftan oluşabilir veya kullanıcın tam iş hayatın birden çok megabyte içeren arşivden oluşur. Dosyalar düz metin içermeleri gerekmez. Görüntü, Ses,.. çalışabilir uygulamalar ve diğer pek çok dosyalar bir depo üzerine yerleştirilir. Bir dosya veri türünü tahmin etmek için dosyanın içinde bulunan dosya komutun kulanabilir:
\begin{verbatim}
$ file /bin/ls /usr/bin/groups /etc/passwd
/bin/ls: ELF 32-bit LSB executable, Intel 80386,
version 1 (SYSV), for GNU/Linux 2.4.1,
dynamically linked (uses shared libs), for GNU/Linux 2.4.1, stripped
/usr/bin/groups: Bourne shell script text executable
/etc/passwd: ASCII text
\end{verbatim}
/usr/share/file alt dizinindeki kurallara uygun dosya sistemini tahmin eder.
yönetici /usr/share/file/magic alt dizini kuralların bulunduğu bir metin dosyası
bulundurur. Kendi kurallarınızı /etc/magic alt dizinine koymak şartıyla
tanımlayabilirsiniz. Detaylar için magic(5)'e bakınız. Uygun bir şekilde işleyebilmesi için bir Linux sistemi binlerce farklı dosyaya ihtiyaç duyar. Bunlar sistemin çeşitli kullanıcıları tarafından oluşturulmuş ve sahip olunan çeşitli
dosyalardır.
Uygun bir şekilde işleyebilmesi için bir Linux sistemi binlerce farklı dosyaya ihtiyaç duyar. Bunlar sistemin çeşitli kullanıcıları tarafından oluşturulmuş ve sahip olunan çeşitli dosyalardır.
Bir dosya sistemi depolama alanı üzerinde veri düzenleme ve yönetimini belirler. Bir sabit disk temelde sistemin tekrar bulabilmesi gereken byte ları içerir, hatta çok büyük,esnek ve verimli dosyalar olsalar bile. Dosya işletim sistemi detayları farklılık gösterebilir (Linux bunların bir çoğunu bilir. ext2, ext3 , ext4, ReiserFS, XFS, JFS, btrfs vb.) fakat kullanıcıya sunulan şey farklı türdeki ve isimdeki dosya ve dizin adlarıyla oluşturulmuş bir ağaç hiyerarşi yapısıyla aynıdır (ayrıca bkz. Bölüm ~\ref{chap:bolum6}).
Linux topluluğunda, terim "dosya sistemi" birkaç anlamı taşır. Burada sunulan anlama ek olarak—“bir ortam üzerinde bayt düzenleme yöntemi”, bir dosya sistemi her zaman bizim “dizin ağacı” olarak nitelendirdiğimizi göz önünde bulundurur. Buna ek olarak, bu veriler ile birlikte, belirli bir ortamda (bir sabit disk bölümü, USB anahtar, \ldots) genellikle bir "dosya sistemi" adı verilir. Örneğin bizim söylediğimiz anlamda sabit bağlantılar (Bölüm ~\ref{sec:bolum642}) sabit disk veya sabit disk ve USB anahtarı arasındaki iki farklı bölümler arasında, yani "dosya sistemi sınırlarının ötesinde" işe yaramaz.
\end{section}
\begin{section}{Dosya Türleri}
\label{sec:bolum102}
Linux sistemlerinde temel öncül “Herşey bir dosyadır”. Bu ilk bakışta şaşırtıcı görünebilir fakat çok kullanışlı bir konsepttir. Altı dosya türü şu şekilde sıralanabilir:
\paragraph{Yalın dosyalar}{Bu dosya grubu metinleri, grafikleri, ses dosyalarını içerir. Aynı zamanda çalıştırılabilir dosyaları da içerir. Yalın dosyalar editors, cat, shell output redirection gibi alışılmış araçlar kullanılarak oluşturulabilir.}
\paragraph{Dizinler}{Aynı zamanda "dosyalar" olarak bilinen dizinler, bildiğimiz gibi depolamaya yardımcı olur. Bir dizin temelde dosya adları ve ilişkili düğüm numaralarını veren bir tablodur. Dizinler mkdir komutu kullanılarak oluşturulurlar.}
\paragraph{Sembolik Linkler}{ Farklı bir dosyaya erişmek için belirtilen yolardır. (Windows' taki "kısayollar"a benzer). Ayrıca bkz Bölüm ~\ref{sec:bolum642}. Sembolik linkler ln -s kullanılarak oluştulurlar.}
\paragraph{Aygıt Dosyaları}{Bu dosyalar, disk sürücüleri gibi isteğe bağlı cihazlar için arabirim olarak görev. Örneğin, /dev/fd0 dosyası ilk disket sürücüyü temsil eder. Her yazma veya böyle bir dosyaya okuma erişimi gelen cihaza yönlendirilir. Aygıt dosyaları mknod komutu kullanılarak oluşturulur; Bu genellikle sistem yöneticisi önceliğidir ve bu yüzden bu kılavuzda daha ayrıntılı olarak açıklanmamıştır.}
\paragraph{FIFOlar}{Genellikle "adlandırılmış yöneltim” olarak bilinirler. Kabuk yöneltmeleri gibi, ara dosyaları kullanmadan süreçler arasındaki doğrudan iletişimi sağlarlar. Bir işlem FIFO'yu yazma, diğeri de okuma için açar. Kabuğun program açısından dosya gibi hareket eden ardışık düzen için kullandığı yönlendirmelerin aksine isimsizdir -- Dosya sistemi içinde bulunmazlar sadece bağlantılı süreçlerin arasında bulunurlar -- FIFO ların dosya isimleri vardır ve gelişigüzel programlar tarafından dosyalar gibi açılabilirler. Bunun yanısıra, FIFO ların erişim hakları olabilir (yönlendirmelerin yoktur). FIFO'lar mkfifo emri kullanarak oluşturulurlar.}
\paragraph{Unix-alan soketleri}{FIFOlar gibi, Unix-alan soketlerinde de süreçler arası iletişim yöntemi vardır. TCP/IP üzerinden gerçek ağ iletişimleriyle aynı programlama arayüzünü kullanıyorlar.Diğer taraftan, Unix-alan soketleri TCP / IP'ye göre çok daha verimlidir. FIFOların aksine, Unix alan soketleri iki yönlü haberleşmeyi-katılımcı da veri gönderip alabilir- sağlar. Eğer X sunucusu ve istemcileri aynı bilgisayarda ise Unix-alan soketleri X11 grafik sistemleri tarafından kullanılırlar. Unix-alan soketlerini oluşturmak için herhangi bir program yoktur.}
\paragraph{{\Huge{\PencilLeftDown}}Alıştırmalar}{
\begin{enumerate}
\item Sisteminizi çeşitli dosya türü örnekleri çerçevesinde kontrol ediniz (Tablo 10.1 Size sorulardaki dosyaları nasıl tanıyacağınızı gösterecek.)
\end{enumerate}}
\end{section}
\begin{section}{Linux Dizin Ağacı}
\label{sec:bolum103}
Bir Linux sistemi yüz binlerce dosya çeşidinden oluşu. rizleri tutmak için dizin yapıları ve Linux sistemi içeren bir dosya için belli kurallar vardır,F ilesystem Hierarchy Standard (FHS). Çoğu Linux dağıtımında bu standart(ufak sapmalarla) FHS'ye uygundur. FHS bütün dizinleri açıklar.
immediately below the file system’s root as well as a second level below /usr .
Dosya sistemi ağacı kök diziniyle başlar, “/” (root dizini /root ile karıştırılmamalı, root kullanıcının ev dizini). The root directory contains either just subdirectories or else additionally, if no /boot directory exists, the operating system kernel.
Kök dizinin alt dizinlerini listelemek için “ls -la /” komutunu kullanabilirsiniz. Sonuç Şekil 10.1 gibi görünmelidir. Bireysel alt dizinler FHS'ye uyar,bu nedenle yaklaşık olarak her dağıtım aynı dosyaları içerir. Şimdi dizinlerden bazılarına daha yakından bakalım:
\begin{verbatim}
$ cd /
$ ls -l
insgesamt 125
drwxr-xr-x 2 root root 4096 Kas 27 11:53 bin
drwxr-xr-x 3 root root 4096 Kas 30 10:53 boot
drwxr-xr-x 2 root root 4096 Oca 6 2012 cdrom
drwxr-xr-x 15 root root 4380 Ara 11 17:29 dev
drwxr-xr-x 164 root root 12288 Ara 18 09:27 etc
drwxr-xr-x 89 root root 4096 Eki 18 13:08 home
drwxr-xr-x 25 root root 4096 Eki 19 15:00 lib
drwxr-xr-x 2 root root 4096 Eki 19 14:33 lib64
drwx------ 2 root root 16384 Oca 6 2012 lost+found
drwxr-xr-x 3 root root 4096 Eki 19 15:49 media
drwxr-xr-x 2 root root 4096 Eki 9 2011 mnt
drwxr-xr-x 5 root root 4096 Kas 29 10:29 opt
dr-xr-xr-x 205 root root 0 Ara 6 09:31 proc
drwx------ 12 root root 4096 Ara 14 20:26 root
drwxr-xr-x 26 root root 880 Ara 18 14:15 run
drwxr-xr-x 2 root root 12288 Ara 12 09:05 sbin
drwxr-xr-x 2 root root 4096 Haz 21 2011 selinux
drwxr-xr-x 2 root root 4096 May 11 2012 srv
dr-xr-xr-x 13 root root 0 Ara 6 09:31 sys
drwxrwxrwt 16 root root 12288 Ara 18 15:32 tmp
drwxr-xr-x 11 root root 4096 Oca 6 2012 usr
drwxr-xr-x 15 root root 4096 Ara 6 09:30 var
\end{verbatim}
FHS hakkında çok fazla fikir birliği vardır fakat sadece Linux üzerindeki bir şeyi bağlamak kadardır, yani o kadar da fazla değildir. Bir yandan çoğunlukla sadece üretici tarafından dokunulan ve FHS’nin bütün ayrıntılarına uymanın hiçbir şey kazandırmadığı Linux sistemleri vardır(Örneğin geniş bant yönlendirici ve PVR). Diğer yandan kendi sisteminizde ne isterseniz yapabilirsiniz, fakat sonuçlarına hazırlıklı olmanız gerekir. Dağıtıcınız Dosya Hiyerarşi Sistemi’ne uymanız halinde bir sıkıntı çıkmayacağını size garanti eder, fakat aynı zamanda kurallara uymadan yaptığınız işlemlerden çıkan hatalardan dolayı şikayet etmemenizi bekler. Örneğin, eğer /usr/bin dizinine bir program yüklüyorsanız ve söz konusu olan dosya gelecek sistem güncellemesi esnasında üzerine fazla yazılırsa, FHSye göre /usr/local/bin dizinine kendi programlarınızı koymanız beklenmediği için bu sizin kendi hatanızdır.
\paragraph{İşletim sistemi çekirdeği-/boot}{/boot dizini asıl işletim sistemini içerir: vmlinuz Linux çekirdeğidir. /boot dizininde ayrıca boot yükleyicisi için gereken diğer dosyalar vardır (LILO yada GRUB).}
\paragraph{Genel araçlar -/bin}{/bin dizini içinde sistemi başlatmak için gerekli olan en önemli çalıştırılabilir programları(çoğunlukla sistem programları) vardır. Bu örneğin mkdir ve mount komutlarını içerir. Bu programların bazıları o kadar önemlidir ki sadece sistem başlaması esnasında değil, sistem çalışırken de gereklidir - ls ve grep gibi. /bin dizini aynı zamanda zarar görmüş sistemi tekrar çalıştırmak için gerekli olan programları içerir eğer sadece kök dizinini içeren dosya sistemine ulaşılabilirse. Sistem sistem tamiri ya da başlaması esnasında gerekli olmayan ek programlar /usr/bin dizini içinde bulunabilirler.}
\paragraph{Özel sistem programları-/sbin}{ /bin dizini gibi /sbin dizini de sistemi onaracak ya da başlatacak prgramları içerir. Ancak çoğu parça için bunlar sadece kök dizini(root) tarafından kullanılabilen sistem konfigrasyonu araçlarıdır. Normal kullanıcılar sistemi sorgulayacak programların bazılarını kullanabilirler, fakat hiçbir şeyi değiştiremezler. /bin dizininde olduğu gibi bu dizinle birlikte daha fazla sistem programlarını içeren /usr/sbin denilen bir dizin vardır.}
\paragraph{Sistem kütüphaneleri-/lib}{Burası dosyalar ve bağlantılar gibi /bin ve /sbin içinde bulunan programlar tarafından kullanılan “paylaşılmış kütüphaneler”dir. Paylaşılmış kütüphaneler çeşitli programlar tarafından kullanılan kodun parçalarıdır. Bazı süreçler aynı temel parçaları kullandığı için böyle kütüphaneler birçok kaynağı kurtarır ve bu temel parçalar belleğe sadece bir kere yüklenmeli: ek olarak bir kere sistemde bulunduklarında ve tüm programlar merkezi bir dosyadan söz konusu olan kodu yakaladığında böyle kütüphanelerde arızları onarmak daha kolaydır. Tesadüfen /lib/modules dizini altında çekirdek modülleri vardır(aygıt sürücüleri, dosya sistemleri ya da ağ protokolleri kullanımında gerekli olmayan çekirdek kodu gibi). Bu modüller gerek duyulduğunda çekirdek tarafından yüklenebilirler ve bazı durumlarda kullanım sonrası kaldırılabilirler.}
\paragraph{Aygıt dosyaları - /dev}{bu rehber ve alt dizinleri aygıt dosyaları için çoklu kayıtları içerir. Aygıt dosyaları kabuk(genellikle komut satırı kullanıcıları yada programcılar için ulaşılabilir olan sistemin bir parçası) ve çekirdek içerisindeki aygıt sürücüleri arasında arayüz oluştururlar. Diğer dosyalar gibi içerikleri yoktur fakat aygıt numaraları aracılığıyla çekirdek içerisindeki bir sürücüye referans olurlar.}
Daha önceki zamanlarda Linux dağıtıcıları için her kişiye göre araç için /dev dizini içinde bir aygıt içermesi alışılmıştı. Böylece bir laptop Linux sistemi bile her biri 63 bölümlü, 8 ISDN adaptörü, 16 seri halinde ve 4 paralel arayüzü ve bu tür özellikleri taşıyan 10 sabit disk için gerekli olan araç dosyalarını içerirdi. Bugün bu eğilim her hayali aygıt için bir aygıtı olan fazla dolu /dev dizinlerinden ve gerçekte bulunan araçlar için girişleri içeren çalışmakta olan çekirdeğe yakın olarak bağlanan sistemler için uzaktadırlar. Bu alanda sihirli kelime udev’dir ve Linux Administration kısmında daha detaylı anlatılacaktır.
Linux karakter araçları ve blok araçları arasında ayrım yapar. Örneğin bir karakter aracı ağdır,faredir ya da bir modemdir -tek karakterleri işleyen ya da sağlayan bir araç. Bir blok aracı ise bloklarda bilgileri işler- bu byte’ların tek başına okunamadığı, 512’li gruplar halinde okunduğu disket ya da sabit diskleri içerir. Aygıt dosyaları “ls -l” dizini içinde “c veya b” çıkışlarıyla etiketlenir.
\begin{verbatim}
crw-rw-rw- 1 root root 10, 4 Oct 16 11:11 amigamouse
brw-rw---- 1 root disk 8, 1 Oct 16 11:11 sda1
brw-rw---- 1 root disk 8, 2 Oct 16 11:11 sda2
crw-rw-rw- 1 root root 1, 3 Oct 16 11:11 null
\end{verbatim}
Dosya uzunluğu yerine bu liste 2 tane numarayı içerir. İlki aygıtın türünü belirten ve çekirdek sürücüsü bu aygıtın sorumluluğunda olduğu zaman yöneten “asıl aygıt numarası”dır. Örneğin tüm SCSI sabit diskleri 8 numaralı başlıca aygıta sahiptir. İkincisi ise “ikincil aygıt numarası”dır. Bu benzer ya da ilgili aygıtlar arasında ayrım yapan ya da bir diskin çeşitli bölünmelerini belirten sürücü tarafından kullanılır.
Birkaç tane göze çarpan uydurulmuş aygtlar vardır. null device, /dev/null, aslında gerekli olmayan program çıkışı için bir çöp kutusu gibidir, fakat aşağıdaki şekildeki gibi bir yerde yönetilmelidir.
\begin{verbatim}
$ program >/dev/null
\end{verbatim}
Aksi halde ağda gösterilen programın standart çıkışı göz ardı edilir. Eğer /dev/null okunursa boş bir dosya gibi davranır ve hemen dosya sonuna döner. /dev/null yazan ve okuyan tüm kullanıcılar için ulaşılabilir olmalıdır.
/dev/random ve /dev/urandom dizinlerindeki “aygıtlar” sistemde gürültüden oluşturulan şifrelemeyle ilgili kalitenin rastgele byte’larına döner-anahtar basımı gibi tahmin edilemeyen olaylar arasındaki aralıklar gibi. /dev/random dizininden gelen bilgiler yaygın şifrelemeyle ilgili algoritmaları için anahtarlar oluşturmak için uygundur. /dev/zero dosyası boş byte’ların sınırsız bir isteğine döner; bunları örneğin dd komutlu dosyaların üzerine yazmak için veya oluşturmak için kullanabilirsiniz.
\paragraph{Yapılandırma dosyaları - /etc}{/etc dizini çok önemlidir; çoğu program için yapılandırma dosyalarını içerir. Örneğin /etcinittab ve /etc/init.d/* dosyaları sistem dosyalarını başlatmak için gerek duyulan çoğu belirli bilgileri içerir. Aşağıda en önemli dosyaların daha detaylı tanımları bulunmaktadır-onların birkaçı dışında, sadece kök dizini kullanıcısının yazma izni vardır fakat herkes onu okuyabilir.}
\begin{itemize}
\item[/etc/fstab]bu tüm yerleştirilebilir dosya sistemini ve onların özelliklerini tanımlar(tür,ulaşım şekli vs.).
\item[/etc/hosts]bu dosya TCP/IP ağının yapılandırma dosyalarından biridir. IP adreslerine gelen ağ misafilerinin isimlerini haritalandırır.küçük ağlarda ve bağımsız misafirlerde bu yeni bir sunucu yerleştirir.
\item[/etc/inittab]bu dosya init programı için ve sistem başlangıcı için yapılandırma dosyasıdır.
\item[/etc/init.d/*]bu dizin çeşitli sistem servisleri için “init kodlarını” içerir. Bunlar başlatmak için ya da sistem kapandığında sistem dosyalarını durdurmak için kullanılırlar. Red Hat dağıtımlarında bu dizine /etc/rc.d/init.d denilmektedir.
\item[/etc/issue]bu dosya giriş yapmak için kullanıcıya sorulmadan önce karşılamayı içerir. Yeni bir sistemin yüklenmesinden sonra çoğunlukla satıcının ismini içerir.
\item[/etc/motd]bu dosya kullanıcı başarılı bir şekilde giriş yaptıktan sonra ortaya çıkan “günün mesajını” içerir. Sistem yöneticisi bu dosyayı önemli bilgileri ve olayların kullanıcılarını bildirmek için kullanır.\footnote{There is a well-known claim that the only thing all Unix systems in the world have in common is the “message of the day” asking users to remove unwanted files since all the disks are 98\% full.}
\item[/etc/mtab]bu yerleştirme noktalarını içeren tüm yerleştirilmiş dosya sistemlerini içeren bir listedir. Bu dosya an itibariyle yerleştirilmiş tüm dosya sistemlerini içermesinden dolayı /etc/fstab dosyasından ayrılmaktadır, /etc/fstab dosyası sadece yerleştirilmesi mümkün olan dosya sistemleri için ayarları ve seçenekleri içerir. Hatta bu liste komut satırı aracılığıyla dosya sistemlerini yerleştirebildiği için ayrıntılı değildir.
Dosyaların durgun olması gereken /etc içindeki bir dosyaya bu tür bilgileri yerleştirmemeliyiz.
\item[/etc/passwd]burada sistemce bilinen tüm kullanıcıların bir listesi vardır, kullanıcının belirli bilgilerinin çeşitli araçlarını toplamak için. Dosyanın ismine rağmen modern sistemlerde şifreler bu dosya içinde depolanmaz fakat /etc/shadow denilen başka bir dosya içinde depolanır. /etc/paswd’un aksine bu dosya normal kullanıcılar tarafından okunamaz.
\end{itemize}
\paragraph{Aksesuarlar-/opt}{Bu dizin gerçekten 3. şahıs yazılımına yöneliktir - bölgesel olarak yüklenen dosyalar ya da dağıtım dosyalarıyla çelişmeden yüklenebilmesi gereken tüm paketler. Böyle yazılım paketleri /opt (packages) gibi bir alt dizin meydana getirirler. Haklı olarak /opt dizini boş bir disk üzerine dağıtım yüklendikten sonra tamamen boş olmalı.}
\paragraph{“değişmeyen dosyalar”-/usr}{burada programları ve sistemin onarımı ya da başlatılması için önemli olmayan bilgi dosyalarını içeren çeşitli alt dizinler vardır. En önemli dizinler şunları içerir:}
\begin{itemize}
\item[/usr/bin] başlatma için önemli ya da önemsiz olan sistem programları
\item[/usr/sbin] kök dizini için daha fazla sistem programları
\item[/usr/lib] /bin ya da /sbin için kullanılmayan daha fazla kütüphane
\item[/usr/local] bölgesel sistem yöneticisi tarafından yüklenmiş dosyalar için dizin. /opt diziniyle benzerlik gösterir-dağıtım buraya hiçbir şey koymaz
\item[/usr/share]mimari olarak bağımsız veri. Esas olarak Intel, Sparc ve PowerPC ana makinelerinden oluşan bir Linux ağı merkezi bir sunucu üzerinden bu dosyanın tek bir kopyasını paylaşabilir.
\item[/usr/share/doc]belgeleme, örneğin HOWTO
\item[/usr/share/info]bilgi sayfaları
\item[/usr/share/man]alt dizinlerde elle yapılan sayfalar
\item[/usr/sc]çekirdek ve diğer programlar için kaynak kodu(eğer mümkünse).
\end{itemize}
/usr ismi çoğunlukla yanlış olarak Unix sistem kaynaklarının kısaltması olarak düşünülür. Esasen bu dizin bilgisayarların büyük ve yavaş bir sabit diskleri olduğu zamandan daha küçük ve daha hızlı sabit diskleri olduğu zamana kadarki süreçte türemiştir. Büyük disk daha az sıklıkla kullanılan ya da çok büyük olan dosyalar ve programlar için bir bellek olarak görev yaparken bütün sık kullanılan programlar ve dosyalar küçük diske gider. Bugün bu ayrım bir şekilde değişebilir: Dikkatle /usr dizinini kendi bölmesinin üzerine yerleştirebilirsin ve bu bölmeyi “salt okunur” olarak değiştirebilirsin. Disk belleğinin düşen fiyatları bunu artık gerekli kılmamasına rağmen uzak bir sunucudan /usr’yi içe aktarmak mümkündür (yaygın Linux dağıtımları bunu hiçbir şekilde desteklemez).
\paragraph{Çekirdek içine bir pencere-/proc}{bu en ilginç ve önemli dizinlerden biridir. /proc uydurulmuş dosya sistemidir: diskte boşluk meydana getirmez fakat onun alt dizinleri ve dosyaları birisi içerikleriyle ilgilendiğinde ya da ilgilenirse çekirdek tarafından oluşturulur. bilgisayarın donanımı hakkında çekirdeğin sahip olduğu diğer bilgilerin yanı sıra işleyen süreçler hakkında da bir çok bilgi bulacaksınız. Örneğin bazı dosyalarda bütün bir donanım analizi bulacaksınız. En önemli dosyalar şunları içerir:}
\begin{itemize}
\item[/proc/cpuinfo]işlemcinin tipi ve saat frekansı hakkında bilgiler içerir.
\item[/proc/devices]bu başlıca aygıt numaralarını içeren, çekirdek tarafından desteklenen aygıtların tüm listesini içerir.
\item[/proc/dma]kullanımdaki DMA kanallarının bir listesidir. Bugünün PCI temelli sistemlerinde ne ilgi çekici ne de önemlidir.
\item[/proc/interrupts]kullanımdaki bütün donanım kesintileridir. Bu kesinti numaralarını, tetiklenen kesintilerin numaralarını ve belirli kesintilerle uğraşan sürücüleri içerir(Bir kesinti sadece çekirdekte bir kesinti olduğunda bu listede yer alır).
\item[/proc/ioports]/proc/interrupts gibi fakat I/O bağlantı yerleri içindir.
\item[/proc/kcore]bu dosya bilgisayarın bütün RAM’lerini uygun hale getirir ve çekirdeğin hatalarını ayıklamak için gereklidir. Okumak için yetkili kullanıcı (root) ayrıcalıklarını gerektirir. Bundan uzak durursanız iyi edersiniz.
\item[/proc/loadavg]son 1,5 ve 15 dakika içindeki işlemci yüklemesini ölçen 3 numarayı içerir. Bu değerler genellikle uptime programı sayesinde verilir.
\item[/proc/meminfo]bellek ve takas kullanımını gösterir. Bu dosya free program tarafından kullanılır.
\item[/proc/mounts]tüm yerleştirilmiş dosya sistemlerinin başka bir listesidir. Çoğunlukla /etc/mtab’la özdeştir.
\item[/proc/scsi]bu dizinde uygun SCSI aygıtlarını listeleyen scsi isminde bir dosya vardır. SCSI hakkında bilgi veren bir 0(1,2,…,aynı türün çoklu adaptörleri için) dosyası içeren sistemde SCSI ana makine adaptörünün her türü için başka bir alt dizin vardır.
\item[/proc/version]model numarasını ve şu anki çekirdeğin derleme tarihini içerir.
\end{itemize}
Back when /proc had not been invented, programs like the process status display tool, ps, which had to access kernel information, needed to include considerable knowledge about internal kernel data structures as well as the appropriate access rights to read the data in question from the running kernel. Since these data structures used to change fairly rapidly, it was often necessary to install a new version of these programs along with a new version of the kernel. The /proc file system serves as an abstraction layer between these internal data structures and the utilities: Today you just need to ensure that after an internal change the data formats in /proc remain the same—and ps and friends continue working as usual.
\paragraph{Donanım kontrolü-/sys}{Linux çekirdeği versiyon 2.6’dan bu yana bu dizini belirtmiştir. /proc gibi çekirdeğin talebi üzerine uygun hale getirilir ve geniş bir alt dizinleri sıralaması içinde uygun donanım üzerinde istikrarlı bir görüşe izin verir. Aynı zamanda çeşitli özel dosyalar aracılığıyla donanım üzerinde yönetim işlemlerine destek sağlar.}
Teorik olarak bireysel girişlerle hiçbir alakası olmayan /proc dizinindeki tüm girişler /sys dizinine yavaşça geçirilmeli. Bu stratejik amaç gerçekleştirildiğinde bu, birisinin tahmini olduğundandır.
\paragraph{Dinamik olarak değişen dosyalar-/var}{bu dizin farklı dizinler boyunca dağıtılan dinamik olarak değişen dosyaları içerir. Çeşitli programları yerine getirdiğinde kullanıcı çoğu zaman bilgileri oluşturur(çoğunlukla gerçeğin farkında olmadan). Örneğin biçimlendirilmiş man sayfaları sonradan lazım olurlar diye bir süreliğine etrafta tutulurken man komutu sıkıştırılmış kılavuz sayfası kaynaklarını sıkıştırılmamış hale getirmeye sebep olur. Benzer olarak bir belge basıldığında yazıcıya gönderilmeden önce baskı bilgisi depolanmalı, örneğin /var/spool/cups içerisinde. /var/log içindeki dosyalar giriş ve çıkış zamanlarını ve diğer sistem olaylarını kaydeder, /var/spool/cron düzenli otomatik komut yürütmeleri hakkında bilgi içerir ve kullanıcının okunmamış mailini /var/mail’de tutar.}
Linux’te sistem log dosyaları genellikle “syslog” servisi tarafından işlenir.sys logd denilen bir program diğer programlardan gelen mesajları kabul eder ve bunları başlangıç ve önceliklerine göre sonraları bulabileceğiniz /var/log dizini altında dosyalar halinde sınıflandırır. Dosyalar dışında syslog servisi aynı zamanda mesajlarını başka yerde yazabilir. Örneğin konsola ya da ağ aracılığıyla bilgi merkezinizden tüm log mesajlarını birleştiren merkezi bir “yönetim istasyonu” olarak hizmet eden başka bir bilgisayara.
/sys/logd dizininin yanısıra bazı Linux dağıtımları klogd servisi içerir. Görevi işletim sistemi çekirdeğinden gelen mesajları kabul etmek ve onları sys logd dizinine doğru geçirmektir.diğer dağıtımlar kendi sys logd dizinleri bu işi kendileri yapabildikleri için ayrı bir klogd dizinine ihtiyaçları yoktur.
Linux çekirdeği sistem başlatılmadan önce onları kabul edecek sys logd dizinini çalıştırmak için yeterince uzakta mesajların tüm sınıflandırmasını yok eder. Mesajlar hala önemli olduğu için Linux çekirdeği onları içten depolar ve dmesg komutunu kullanarak onlara ulaşabilirsiniz.
\paragraph{Geçici dosyalar-/tmp}{bazı faydalar geçici dosya alanına ihtiyaç duyar, örneğin bazı editörler ya da türler. Tmp dizininde tüm programlar geçici bilgileri yerleştirirler. Bazı dağıtımlar sistem başlatıldığında tmp dizinini temizlemek için kurulabilirler: Bu yüzden kalıcı önemi olan hiçbir şeyi bu klasöre koymamalısınız.}
Alışılmışa göre, /tmp dizini sistem başlangıcında boşaltılır fakat öyle değildir. Dağıtımınızın ne yaptığını kontrol etmelisiniz.
\paragraph{Sunucu dosyaları-/srv}{ aşağıda çeşitli sunucu programları tarafından sunulan dosyaları bulacaksınız.}
\begin{verbatim}
drwxr-xr-x 2 root root 4096 Sep 13 01:14 ftp
drwxr-xr-x 5 root root 4096 Sep 9 23:00 www
\end{verbatim}
Bu dizin nispeten yeni bir buluştur ve oldukça mümkündür ki sisteminizde henüz bulunmamaktadır. Ne yazık ki web sayfaları FTP sunucusunun dökümanları için başka bir yer yoktur ki FHS yazarları bunun üzerinde uzlaşabilirler, bu sayede bu dosyalar olmadan bir sistem üzerinde tamamen farklı bir yerde sonlandırabilirler, örneğin /usr/local ya da /var alt dizinlerinde.
\paragraph{CD-ROM ya da Disketlere ulaşım--/media}{bu dizin çoğunlukla otomatik olarak meydana getirilir; CD-ROM’lar ve disketler için yerleşim noktaları olarak görev yapan /media/cdrom ve /media/floppy gibi ilave edilen bpş dizinleri içerir. Donanım başlangıcınıza dayanarak /media/dvd gibi daha fazla dizinleri eklemekte kendinizi özgür hissedebilirsiniz, eğer bunlar yerleşim noktaları olarak bir anlam ifade ediyorlarsa ve dağıtım satıcınız tarafından önceden yüklenmemişse.}
\paragraph{Diğer depolama ortamlarına ulaşım--/mnt}{bu dizin ilave edilen depolama ortamlarının geçici yerleştirilmesi için yerleşim noktası olarak görev yapar. Red Hat tarafından yapılan bazı dağıtımlarla CD-ROM ve disket için medya yerleşim noktaları /media’nın altında olmak yerine burada ortaya çıkabilir.}
\paragraph{Kullanıcı ev dizinleri--/home}{ bu dizin kök dizini dışında tüm kullanıcıların ev dizinlerini içerir.}
Eğer birkaç 100’den fazla kullanıcınız varsa tüm ev dizinlerini home dizinlerinin hemen alttakiler olarak tutunması özel koruma ve etkinlik açısından mantıklıdır. Örneğin daha uzak alt bölünme için ayırıcı bir özellik olarak kullanıcıların başlıca grubunu kullanabilirsiniz.
\begin{verbatim}
/home/support/jim
/home/develop/bob
\end{verbatim}
\paragraph{}{
\begin {table}[H]
\caption {FHS'ye Göre Dizin Ayrımı} \label{tab:title}
\begin{tabular}{r l l}
\hline
{} & Statik& Dinamik\\
\hline
yerel & /etc, /bin, /sbin, /lib & /dev, /var/log\\
uzak & /usr, /opt & /home, /var/mail\\
\hline
\end{tabular}
\end {table}}
\paragraph{Yöneticinin ev dizini--/root}{Yöneticinin ev dizini kök dizininde kuruludur. Bu, dogrudan kök alt dizinin dışında yönetici evinde konumlandırılmayan gözlenen bir farklılıkla diğer kullanıcılara benzer tamamen doğal bir ev yöneticisidir.}
\paragraph{Kayıp özelliği lost+found}{ (FHS tarafından yönetilen sadece iç hat dosya sistemleri) bu yönetici herhangi bir yöneticiye ait olmayan ama uygun görünen dosyalar için kullanılır. Dosya sistemini uygunluğunu kontrol edici,aynı dosya sistemi üzerinde ost+found yöneticide öyle dosyalara bağlantılar yaratır. Bu yüzden sistem yöneticisi dosya gerçekten nereye ait bulabilir; lost+found, dosya sistem uygunluğunu kontrol edicinin sabit bir yerin içinde bulabilme ümidiyle yaratılmıştır. Kural gereği, iç hat dosya sistemleri üzerinde bu her zaman dosya endeksi numarasını kullanır.}
Dizin düzenlemesi için başka bir yöntem de şöyledir: FHS dosyaları ve dizinleri 2 kritere göre böler-bölgesel olarak ulaşılabilir olmaya ihtiyacı var mı , başka bir bilgisayarda durabilirler mi ve ağ aracılığıyla ulaşılabilirler mi, bağlamları durgun mu ya da sistem çalışırken değişirler mi?
Bu bölünmenin arkasındaki düşünce sistem yönetimini yalınlaştırmaktır: dizinler dosya sunucularına taşınabilirler ve merkezi olarak sürdürülebilirler. Dinamik bilgiler içermeyen dizinler salt okunura yerleştirilirler ve kazalara daha fazla elverişlidir.
\paragraph{{\Huge{\PencilLeftDown}}Alıştırmalar}{
\begin{enumerate}
\item Sisteminiz "olağan" yerlerde kaç tane program içeriyor?
\item Eğer grep komut satırında birden fazla dosya ismiyle çağrılmışsa, her eşleşen hattın önüne söz konusu dosyanın adını verir. bir kabuk joker kalıbı(.txt gibi) ile grep'i çalıştırmak büyük olasılıkla bir problemdir, grep çıkışının kesi formatı öngörülemediğinden hangi programların ne şekilde çalışacağını bilemez. Arama kalıbı tek dosya ismini genişletse bile nasıl doya adı çıkışını zorlayabilirsiniz. (ipucu: /dev içerisinde çok faydalı bir dosya bulunmaktadır.)
\item “cp foo.txt /dev/null” komutu temelde hiçbir şey, ama “mv foo.txt /dev/null” uygun erişim izinleri varsayarak /dev/null by foo.txt ile yer değiştirir. Neden?
\item Sisteminizde,(Varsa) hangi yazılım paketleri /opt altına yüklüdür? Hangileri üretici taraından sağlanmıştır ve hangileri üçüncü parti ürünlerdir? Sizce üretici üçüncü parti ürünün teaser versiyonunu /opt içine veya farklı bir yere yüklemeli mi? Ne düşünüyorsunuz?
\item Neden /proc'ta köklü dizin ağacının yedek kopyalarının bulundurulması önerilmez?
\end{enumerate}
}
\end{section}
\begin{section}{Dizi Ağacı ve Dosya Sistemleri}
Bir Linux sistemi dizin ağacı diskler, CD-ROM diskler, USB anahtarları ve taşınabilir MP3ler gibi depolama birimleri üzerinde birden fazla bölüm boyunca uzanır. Microsoft Windows'taki yolunuzu biliyorsanız, muhtemelen bu sorunu Linux üzerinde harfler sayesinde farklı "sürücüler" tanımlaması ile çözebileceğinizin farkındasınız, mevcut tüm disk bölümleri ve medya "/" ile başlayan dizin ağacına entegre edilmiştir.
Genel olarak hiçbir şey sizi tam bir Linux sistemini tek bir sabit disk bölümüne yüklemenizi engelleyemez. Ancak, /home bölümleme dizinini kendi bölümüne koymak yaygındır. Bu yaklaşımın avantajı, Linux dağıtıcınız, tamamen kendi veri güvenliği (basitçe doğru zamanda dikkatli olmanız gerekmektedir, yani dağıtımcı yükleyicisinden yükleme için hedef bölüm(leri) aldığınız zaman.) hakkında endişelenmenize gerek kalmadan sıfırdan fiili işletim sistemini tekrar yükleyebilmenizdir. Bu aynı zamanda yedek kopya oluşturma işlemini kolaylaştırır.
Büyük sunucu sistemleri üzerinde, diğer dizinleri, tipik olan sunucu sistemleri Cally /tmp, /var/tmp'a veya /var/spool'a kendi bölümlerini atamanız da oldukça olağandır. Amaç önemli bölümleri tamamen doldurmayla kullanıcıları rahatsız edici sistem işlemlerini engellemektir. Örneğin /var doluysa, diske herhangi protokol mesajları yazılamasın, bu yüzden kullanıcıları /var/tmp dosyasındaki okunmamış büyük boyutlu maillerden, yazılmamış yazma işlemlerinden veya büyük dosyalardan korumak istiyoruz. Öte yandan, tüm bu bölümler sistemi kaplamak eğilimindedir.
More information and strategies for partitioning are presented in the Linup
Front training manual, Linux Administration I.
/etc/fstab dosyası sistemin nasıl çeşitli disk bölümlerinden oluştuğunu açıklar. Başlangıç boyunca, sistem normal bir kullanıcı olarak endişelenmemeniz gereken çeşitli sistem dosyalarını doğru yerlere yerleştiriyor (Linux buna "bağlamak" diyor). Aslında neye ilgi duyduğunuzu, yani nasıl CD-ROM diskler ve USB tuşlarına erişilebileceğinizi ve bunların da monte edilmesi gerekir. Dolayısıyla biz bu başlığı kısaca örterek en iyisini yapmış oluruz her ne kadar gerçekten de kullanıcının ülkesi olsa da.Bir orta monte etmek için, orta için her iki aygıt dosyası ismine (genellikle /dev/sda1 gibi bir blok aygıt) ve ortanın içeriğinin görünmesi gereken dizin ağacındaki bir dizine ihtiyacınız vardır. Bu herhangi bir dizin olabilr.
Başka bir ortayı üzerine bağladığınız orjinal içeriğe erişemeseniz bile dizin boş olmak zorunda değildir (siz ortayı yeniden bağladıktan sonra tekrar görünecektir).
Prensip olarak, birileri /etc gibi nemli sistem dizinine çıkarılabilir ortam monte etmeli (ideal olarak parolasız kök dizini girişi içeren passwd diye adlandırılan). Dizin ağacı içinde rasgele yerlerde dosya sistemlerinin montajı zaten kökü gibi, bu gibi maskaralık gerek olacaktır sistem yöneticisi, sınırlı olmasının nedeni budur. Bu yüzden dosyaları keyfi yerlere dizin ağaçlarıyla birlikte monte etme sistem kullanıcısına kısıtlanmıştır.
Daha önce, biz /dev/sda1 dosyasına "orta aygıt dosyası" denir dedik. Bu gerçekten sistemdeki ilk SCSI diskinin ilk bölümüdür - gerçek isim tamamen kullandığınız ortanın türüne göre değişir. USB anahtarları için hala bariz bir isimdir. Bu bilgiyle-aygıt adı ve bağlama noktası- bir sistem kullanıcısı ortayı aşağıdakileri takiben notme edebilir:
\begin{verbatim}
# mount /dev/sda1 /media/usb
\end{verbatim}
Bu ortamda dosyası olarak adlandırılan bir dosya olarak /media/usb/ dosya görünür olacağı anlamına gelir dizin ağacında. Aşağıdaki gibi bir komutla:
\begin{verbatim}
# umount /media/usb Note: no ‘‘n’’
\end{verbatim}
Kullanıcı aynı zamanda ortayı tekrar bağlayabilir.
\paragraph{Bu Bölümdeki Komutlar}{
\begin{itemize}
\item[dmesg]çekirdeğin arabellek mesajının içeriğini çıkarır
\item[file]Kurallar dosyası(1)'e göre dosyanın içeriğinin türünü tahmin eder
\item[free]ana bellek ve takas alanı kullanımını görüntüler
\item[klogd]Çekirdeik log mesajlarını kabul ede
\item[mkfifo]FIFO'ları oluşturur (named pipes)
\item[mknod]Aygıt dosyalarını oluşturur
\item[syslogd]sistem log mesajlarını işler
\end{itemize}}
\paragraph{Özet}{
\begin{itemize}
\item Dosyaların bir ad altında depolanan verilerinin, kendine yeten koleksiyonları vardır. Linux aynı zamanda diğer nesneler ve aygıtlar için dosya soyutlamayı kullanır
\item Bir disk üzerindeki veri ve idari bilgilerin düzenlenmesi yöntemine ''dosya sistemi'' denir.
\item Aynı zamanda dizinlerin ve dosyaların üzerindeki veriler ile birlikte sistemin tam hiyerarşi yapısını veya belirli bir depolama ortamını kapsar.
\item Linux dosya sistemleri (iki çeşittir FIFO'lar ve UNİX alan soketleri ): düz dosyaları, dizinleri, sembolik bağları ve aygıt dosyalarını içerir
\item Dosya sistemi Hiyerarşisi Linux sistemi tarafından birçoğunun anlamını önemli bir dizinlerini ve dağılımlarını açıklar.
\end{itemize}}
\end{section}