Bilgisayar ne kadar süredir açık görmek için. Yanında ek bilgiler de var.
$ uptimeBurada mavi ile verilen ilk bölüm mevcut yerel saati gösteriyor. Kırmızı ile verilen ikinci bölüm ne kadar süredir açık olduğunu, sonraki yeşil bölüm kaç kullanıcının oturum açtığını, en son turuncu bölüm ise son 1, 5 ve 10 dakikalık zaman dilimindeki iş yükü ortalamasını gösteriyor, yüzdesel olarak.
16:07:00 up 50 min, 1 user, load average: 0,05, 0,02, 0,00
Üçüncü bölümde yeşil olarak verilen şu anda oturum açmış kullanıcıların kimler olduğunu görmek için kullanılabilecek birkaç komut var. İlki en basit şekliyle kaç kullanıcının ne zaman oturum açtığını gösteren who:
$ whoBu komuttan biraz daha fazla bilgi veren w komutu var, bir miktar uptime ile birleştirilmiş who gibi:
usern tty1 2019-09-08 21:43 (:0)
$ wYa da ps komutunu u parameteresiyle kullanabiliriz. Bunun avantajı, eğer oturumunu sonlandırmayı istediğimiz bir kullanıcı varsa bu komut aracılığıyla PID sütunundaki kimlik numarası kullanarak yapabiliriz.
21:59:28 up 16 min, 1 users, load average: 0,79, 1,00, 0,78
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
usern tty1 21:43 16:18 1:02 0.02s /bin/bash
$ ps uÖrneğin tek kullanıcımız usern'in oturumunu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
usern 1447 0.0 0.0 10444 4524 pts/2 Ss 21:43 0:00 /bin/bash
$ kill 1447ile sonlandırabiliriz.
last
Bilgisayar ilk kurulduğu günden beri açılış ve oturum açma işlemlerini listeler.
$ last
usern tty1 :0 Fri Sep 6 15:18 still logged inÇok geriye gitmeden son birkaç satırı aldım. İşletim sisteminin açılışı reboot ile başlayan satırlarda belirtiliyor:
usern :0 Fri Sep 6 15:18 still logged in
reboot system boot 5.2.5-200.fc30.x Fri Sep 6 15:16 still running
usern tty1 :0 Thu Aug 8 16:16 - 18:03 (01:46)
usern :0 Thu Aug 8 16:16 - down (01:48)
reboot system boot 5.1.18-300.fc30. Thu Aug 8 16:05 - 18:05 (02:00)
reboot system boot 5.2.5-200.fc30.x Fri Sep 6 15:16 still runningBu gibi satırlarda 2. sütunda hep system boot yazıyor. 3. sütunda ise yükleme işleminden sorumlu çekirdek sürüm numarası var. Son sütunda ise sistemin açılış tarihi ve saati ile kapanış saati ve parantez içinde de sistemin açık kalma süresi var.
Kullanıcı adıyla (usern) başlayan satırlar kullanıcının şifresini girerek oturum açması ile ilgili olan satırlar.
usern :0 Fri Sep 6 15:18 still logged inBurada tty1 (veya genel olarak tty*) yerel olarak terminal etkileşimini, pts0 (veya pts*) uzaktan ssh gibi yöntemlerle terminal etkileşimini gösterir. Bu satırların sonunda ise kullanıcının oturumu açık olarak kaldığı süre gösterilir.
Sadece sistemin başlatma olaylarını listelemek için
$ last rebootsadece belli bir kullanıcının oturum açma olaylarını listelemek için de
$ last usernKapanma olaylarını ve çalışma seviyesi (runlevel) değişikliklerini görebilmek için -x kullanılır.
$ last -xkullanılabilir. Belli bir tarihten sonra gerçekleşen olayların listesi için -s anahtarı (since), bir tarihe kadar olan bir olayları görmek için -t (until) veya son 10 sayıda olayı görmek için -n 10 gibi anahtarlar kullanılabilir.
$ last -s 2019-03-01 -t 2019-05-31Belirtilen bir tarihteki olayları görmek için -p (present)
$ last -n 10
$ last -p 2019-05-19awk
Çok faydalı bir araç. İsmini geliştiricilerinin soyisimlerinin başharflerinden alıyor. Örneğin last komutu ile 01.05.2019 tarihinden sonra kimler giriş yapmış, kullanıcı adlarını görüntülemek için şöyle bir komut kullanılabilir:
$ last -s 2019-05-01 | awk '{print $1}'reboot yazılan satırlar sistem açılışları, gerçek kullanıcı değil. Varsayılan olarak boşluk karakterlerini alan ayraçı olarak kullanır. Bunu değiştirmek için -F anahtarı kullanılır. Örneğin /etc/passwd dosyasındaki kullanıcı isimlerini ve tire "-" karakteri ile ayrılan açıklamalarını yazmak için şöyle bir komut kullanılabilir:
$ awk -F: '{print $1 " - " $5}' /etc/passwdÖrnek olarak aşağıdaki gibi notlar.txt dosyamız olsun.
Arda 80
Batu 60
Deniz 40
Caner 30
Bu verilere göre 50 geçer notun üzerinde not alan öğrencilerin geçtiğini açıklamak istiyoruz. Şöyle bir satır işimizi görür:
$ awk '{if ($2>50) print $1 " geçti"}' notlar.txtBir sonraki aşama, notlar.txt dosyasında her satırda isim ve 2 sınav notu yer alıyor.
Arda geçti
Batu geçti
Arda 80 60
Batu 60 70
Deniz 40 80
Caner 30 50
Bu 2 notun ortalamasını ekrana yazmak istiyoruz.
$ awk '{Şöyle bir sonuç verecek:
total = 0
for (i=2; i<4; i++)
{ total += $i }
avg = total/(i-2)
print $1 ": " avg
}' notlar.txt
Arda: 70
Batu: 65
Deniz: 60
Caner: 40
Notlar dosyasında sadece Deniz'in ilk sınav notunu merak ettik diyelim. Bunu yapmanın başka yolları var elbette, ama awk örneği olsun diye böyle yapalım.
$ awk ' /'Deniz'/ {print $2}' notlar.txtBaşka bir örnek; adı sayilar.txt ve her satırında 10, 20, 30 ve 40 olan bir metin dosyasındaki tüm sayıların toplamını hesaplamak için
40
cat sayilar.txt | awk '{toplam+=$1} END {print toplam}'Veya kısa bir oran hesaplaması yapmak için
cat sayilar.txt | awk 'BEGIN {adet=0} {toplam+=$1; adet++} END {print toplam " / " adet " = " toplam/adet}'Daha fazla ayrıntı için [1] ve [2] ye bakılabilir.
sed
Stream EDitor kısaltması. Bu aracın da ilginç kullanım alanları var. Örneğin bir dosyamız olsun, aşağıdaki gibi.
Bu birinci satır
Sonra gelir ikinci
Sondan bir önceki üçüncü
En sonda da dördüncü
Bu dosyanın örneğin 2. satırını silmek istiyoruz
$ sed '2d' ornek.txtYa da en son satırını
Bu birinci satır
Sondan bir önceki üçüncü
En sonda da dördüncü
$ sed '$d' ornek.txt2. ve 4. satırlar arasını da silebiliriz
Bu birinci satır
Sonra gelir ikinci
Sondan bir önceki üçüncü
$ sed '2,4d' ornek.txtDosyanın sadece 2. satırını yazdırmak istersek
Bu birinci satır
$ sed -n 2p ornek.txtDosyanın içinde "önceki" kelimesini "evvelki" ile değiştirmek için
Sonra gelir ikinci
$ sed 's/önceki/evvelki/' ornek.txt
Bu birinci satır
Sonra gelir ikinci
Sondan bir evvelki üçüncü
En sonda da dördüncü
Eğer son kesmeden sonra bir sayı gelmiyorsa sadece ilk görülen "önceki" kelimesi "evvelki" ile değiştirilir. En son kesme işaretinden sonra bir sayı geliyorsa, örneğin 2, "önceki" kelimesinin sadece 2. tekrarını "evvelki" ile değiştirir. Eğer kesmeden sonra g geliyorsa tüm tekrarlar değiştirilir.
Bir dosyanın içindeki boşluk karakterlerini yeni satır (carriage return) karakteriyle değiştirmek için
$ sed s/" "/\\n/g ornek.txt
Tüm satırların öncesinde satır numaralarını yazmak için '=' kullanılır (ki bunun alternatifi cat -n dir)
$ sed '=' ornek.txtİkinci satırın içeriğini tümüyle değiştirmek istersek
1
Bu birinci satır
2
Sonra gelir ikinci
3
Sondan bir önceki üçüncü
4
En sonda da dördüncü
$ sed '3c\BURASI ÜÇÜNCÜ SATIR' ornek.txtBirkaç karakteri değiştirmek:
Bu birinci satır
Sonra gelir ikinci
BURASI ÜÇÜNCÜ SATIR
En sonda da dördüncü
$ sed 'y/ioü/104/' ornek.txt
B1r1nc1 satır
S0nra gel1r 1k1nc1
S0ndan b1r öncek1 4ç4nc4
En s0nda da dörd4nc4
cut
Bazı ls parametreleri
Bulunduğumuz klasördeki sadece klasörleri görüntülemek için
$ ls -ld */
Listelemede önce klasör isimlerini görmek için
$ ls --group-directories-first
Bir klasörde yer alan dosyaları en son değiştirilme tarihine göre listelemek istersek:
$ ls -ltkullanabiliriz. Bu şekilde en yeniler en üstte yer alır. Sıralamayı tersine çevirmek için -r (reverse) anahtarını eklemek gerek:
$ ls -ltrBunu bütün alt klasörler için yapmak istesek -R anahtarını kullanmak gerek (büyük/küçük harf hassasiyetine dikkat!):
$ ls -ltR
Klasördeki dosyaları boyutlarına göre sıralamak için -S (varsayılan olarak büyükten küçüğe) anahtarı kullanılır:
$ ls -lS | head -5
ile mevcut klasördeki en büyük 5 dosyayı görebiliriz.
Bir sürecin başlama zamanını ve açık kalma süresini görmek için aşağıdaki komut kullanılabilir [8]:
# ps -eo comm,lstart,etime,user | grep firefox
En çok işlemci kullanan 3 uygulamayı görmek için
# ps -e –sort=-pcpu -o pid,pcpu,comm | head -n 4
Aynı şekilde en çok bellek kullanan 3 uygulamayı görmek için
# ps -e –sort=-pmem -o pid,pmem,comm | head -n 4
find
Bir klasör ve alt klasörlerinde son 24 saatte değişen dosyaları ve klasörleri bulabilmek için şu komut kullanılabilir:
$ find /klasor -mtime -1 -lsBurada -1 son 24 saat içinde değişenler demek. +1 kullansaydık son 24 saatten önce değişenler anlamına gelecekti. Ayrıca şunun gibi "daha insani" yollar da önerilmiş:
$ find /klasor -newermt "-24 hours" -lsDaha iyi bir çıktı için:
$ find /klasor -newermt "5 days ago" -ls
$ find /klasor -newermt "yesterday" -ls
$ find /klasor -mtime 0 -printf '%T+\t%s\t%p\n' 2>/dev/null | sort -r | more
gibi bir komuttan bahsedilmiş ki burada dosyalar son değiştirilme tarihi ile listelenecek, bu tarihe göre sıralanacak ve sayfalanacak. Sadece dosyaları görmek istersek -type f ile listelenecek öğe tipini dosya (f) olarak kısıtlayabiliriz. Burada -prinf sonrasındaki alanlar şöyle verilmiş:
%T : Dosyanın son değiştirilme tarihi (yerel saatte)
%s : Byte olarak dosya boyutu
%p : Dosya adı
aralardaki \t tab karakteri, \n ise tahmin edilebileceği gibi yeni satır karakteri.
Bir klasör ve alt klasörleri içinde son 6 ay içinde üzerinde değişiklik yapılmamış dosyaları silmek için
find /hedef -type f -mtime +180 -exec rm -f {} \+
Burada
-type f : sadece dosyaları hedef al
-mtime +180: değiştirilme tarihi 180 günden önce (-180 olsaydı 180 günden sonra olurdu)
-exec rm -f {} : bulunan her öğe için rm (remove) komutunu çalıştır, bunu -f ile (force) destekle
\+ : bunları tek bir satırda toplayarak rm -f dosya1 dosya2 ... dosyaN şeklinde çalıştır
\; olsaydı bu her bir exec işlemini ayrı ayrı yap anlamına gelecekti (rm -f dosya1, rm -f dosya2, .... gibi). Burada \ escape karakteri.
Bir klasörün altındaki tüm boş dosyaları bulmak için
$ find . -type f -empty
Hatta boş klasörler için
$ find . -type d -empty
Veya 2 KB'tan büyük dosyaları bulmak için
$ find . -type f -size +2K
systemd 1 root cwd DIR 8,3 4096 2 /
systemd 1 root rtd DIR 8,3 4096 2 /
systemd 1 root txt REG 8,3 1640496 14161 /usr/lib/systemd/systemd
du (disk usage)
Komut satırında çalışırken bir klasörün alt klasörleri ile birlikte diskte ne kadar yer kapladığını bulmak için bu komut ideal. Örneğin Fedora'nın dnf yerel önbelleğinde tutulan dosyaların boyutunu öğrenmek için
$ sudo du -sh /var/cache/dnf/kullanabiliriz. Burada
-s : tek satırda tüm alt klasörlerle boyutu yaz
-h : byte cinsinden değil, otomatik olarak hangi ölçekteyse KB, MB veya GB cinsinden yaz.
Faydalı bir anahtarı daha var; örneğin tmp uzantılı dosyalar hariç boyutu görmek istiyorsak --exclude="*.tmp" yazabiliriz.
Bunun sonucunda görülecek sayı dosya yöneticisi ile bakıldığında görülecek sayı ile bir olmayabilir. Bunun sebebi du'nun dosyanın diskte kapladığı yeri göstermesi, dosya yöneticisinin ise dosyaların toplam boyutlarını göstermesidir (aradaki fark; 300 byte'lık bir dosya diskte asgari bir blocksize yer kaplar ki o da muhtemelen 4KB'dır. Sizinkini görmek için blocksize --getbsz /dev/sdaX). Bu durumda dosya yöneticisinin verilerini doğrulamak için
$ find /var/cache/dnf/ -type f -exec ls -l {} \; | awk '{toplam+=$1} END {print toplam}'
devtmpfs devtmpfs 469808 0 469808 0% /dev
tmpfs tmpfs 488044 0 488044 0% /dev/shm
tmpfs tmpfs 488044 1284 486760 1% /run
/dev/mapper/fedora_localhost--live-root ext4 37868960 10927560 24988020 31% /
tmpfs tmpfs 488044 164 487880 1% /tmp
/dev/sda1 ext4 999320 235008 695500 26% /boot
tmpfs tmpfs 97608 36 97572 1% /run/user/1000
/dev/mapper/fedora_localhost--live-root 37868960 10927560 24988020 31% /
/dev/sda1 999320 235008 695500 26% /boot
devtmpfs devtmpfs 469808 0 469808 0% /dev
/dev/mapper/fedora_localhost--live-root ext4 37868960 10927584 24987996 31% /
/dev/sda1 ext4 999320 235008 695500 26% /boot
Kısayol Tuşu |
İşlevi |
---|---|
aşağı ok , enter , e , veya j |
Bir satır aşağı |
yukarı ok , y , veya k |
Bir satır yukarı |
boşluk çubuğu |
Bir sayfa aşağı |
b |
Bir sayfa yukarı |
sağ ok |
Yatay sağa kay |
sol ok |
Yatay sola kay |
g |
İlk satıra git |
G |
Son satıra git |
10g |
10. satıra git. Farklı sayıla ile istenen satıra gidilebilir |
50p veya 50% |
Tam ortaya (veya başka bir sayı verilerek istenen yüzdelik noktaya) git |
/search terim |
Şu anki noktadan aşağıya doğru terimi ara |
?search terim |
Şu anki noktadan yukarıya doğru terimi ara |
n |
Arama sırasında bir sonraki bulunan noktaya git |
N |
Arama sırasındaki bir önceki bulunan noktaya git |
m <c> |
m'den sonra herhangi bir karakter girerek şu anki konumu işaretle |
' <c> |
Tek tırnak tuşu ile yukarıdaki gibi işaretlenen noktaya git |
q |
çıkış yap
|
---
[1] https://likegeeks.com/awk-command/
[2] https://linuxconfig.org/learning-linux-commands-awk
[3] https://www.geeksforgeeks.org/sed-command-in-linux-unix-with-examples/
[4] https://www.linuxtechi.com/20-sed-command-examples-linux-users/
[5] https://likegeeks.com/sed-linux/
[6] https://www.howtogeek.com/562941/how-to-use-the-awk-command-on-linux/
[7] https://www.linuxteck.com/find-command-in-linux-with-examples/
[8] https://www.linuxteck.com/ps-command-in-linux-with-examples/
[9] https://medium.com/techtofreedom/8-uses-of-sed-in-linux-e61678b04114
[10] https://medium.com/@hicransevik/some-text-processing-tools-aaac89e89a16
Hiç yorum yok:
Yorum Gönder