Pratik Bilgiler Komutlar: Linux

Merhabalar. Serimizin bu yazısındaki ipuçları linux işletim sistemleri ile ilgili olacak.

  1. İki linux bilgisayar arasında nasıl dosya kopyalanır?
  2. Linux’ta her şeye otomatik olarak yes demek. Elle her sorulduğunda yes demekten kurtulmak – otomatik yes demek – otomatik evet demek.
  3. Linux CentOS7’de zaman dilimini İstanbul olarak ayarlamak.
  4. Linux CentOS7’de tarih saati güncellemek
  5. Aramada büyük-küçük harf duyarlılığını kaldırmak(name -> iname)
  6. Bir dosya içinde sadece TC kimlik numaralarını yakalayan düzenli ifade (regex)
  7. Bir dizin içinde kaç dosya var?
  8. Bir dosya hangi diskte ve mount point üzerinde?
  9. CentOS7 ntpd or chronyd
  10. Windows ana makineden linux sanal makineye dosya/klasör kopyalamak
  11. Bir dosyanın içeriğini tamamen silmek
  12. Linux bir port kullanılıyor mu? Kullanılıyorsa kim ve pid’si nedir?
  13. CentOS7 Linux repoyu kapatmak (disable repo with command)
  14. Ubuntu üzerine Pycharm kurmak ve Pycharm’ı arayüzden başlatmak
  15. Ubuntu üzerine Postman hızlı ve pratik şekilde nasıl kurulur?
  16. VMWare üzerindeki sanal Ubuntu Desktop makineye sabit ip adresi belirleme (set ubuntu static ip)
  17. Linux bir klasörü izlemek (watch a directory)
  18. Ubuntu Desktop klavyeyi Türkçe yapmak
  19. Birden fazla sunucuya paralel dosya kopyalama (pscp-pssh)
  20. Kafka topic içinde kaç tane kayıt var?
  21. Kafka topic 100 MB’yi geçmesin ve 10 dk sonra silinsin
  22. Linux bit port kullanılıyor mu? Kullanılıyorsa öldür lsof

1. İki linux bilgisayar arasında nasıl dosya kopyalanır?

scp ile kopyalama yapabiliriz.

scp [options] username1@source_host:directory1/filename1 username2@destination_host:directory2/filename2

2. Linux’ta her şeye otomatik olarak yes demek. Elle her sorulduğunda yes demekten kurtulmak.

Başına yes deyip | ile ayırdıktan sonra komut çalıştırırsak yes/no sorularına yes cevabını otomatik olarak verebiliriz.

yes | mkfs.ext4 /home/myBlockDevice

İkinci bir örnek de şu olsun: 6 adet sunucum var ve her birinde tensorflow=2.2.0 yüklü. Ben bunları kaldırmak istiyorum. Ancak 6 makineye komutu gönderdiğimde pip bana kaldırayım mı diye soracaktır. Ben de peşinen evet demiş olacağım.

[root@cdh1 ~]# dsh -aM -c "yes | python3.6 -m pip uninstall tensorflow"

3. Linux CentOS7’de zaman dilimini İstanbul olarak ayarlamak.

 timedatectl set-timezone 'Europe/Istanbul'

4. Linux CentOS7’de tarih saati güncellemek

 timedatectl set-time '2015-11-20 16:14:50'

Bu değer /etc/timezone dosyasında saklanır.

 cat /etc/timezone
Europe/Istanbul

5. Dosya aramada büyük-küçük harf duyarlılığını kaldırmak(name -> iname)

Genelde aramaları name ile yaparız. Eğer aramada büyük küçük harf duyarlılığını kaldırmak (making case-insensitive) istiyorsak iname kullanmamız yeterlidir.

[root@utility ~]# find /etc -iname "test*"
/etc/test.txt
/etc/TEST.txt

6. Bir dosya içinde sadece TC kimlik numaralarını yakalayan düzenli ifade (regex) nedir?

 grep ' [0-9]\{11\} ' numbers_names.txt

7. Bir dizin içinde kaç dosya var?

Aşağıdaki komut /home dizininde kaç tane dosya olduğunu gösteriyor.

[root@cloudera]# ls -l /home/ | wc -l
4

8. Bir dosya hangi diskte ve mount point üzerinde?

df -Th /home/murat/movies.json
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdc2      ext4   99G   79G   15G  85% /

9. CentOS7 ntpd or chronyd

RHEL 7’de ntpd, varsayılan ağ zaman protokolü arka plan programı olarak chronyd ile değiştirilir. Chronyd daha doğru ve akıllı zaman senkronizasyonu mekanizmasıdır. O yüzden ntpd kullanacağım diye zorlamayın.

10. Windows ana makineden linux sanal makineye dosya/klasör kopyalamak

Çoğumuz ana işletim sistemi Windows üzerine Virtualbox veya VMWare ile sanal linux makineler kurup çalıştırıyoruz. Peki ana makinemizdeki bir dosyayı sanal linux makinesine kopyalamak istersek ne yapmalıyız. Örnek Windows gitbash terminal üzerinden verilmiştir. Bunun için scp kullanabiliriz. Varsayılan portu 22’dir.

 scp -p port_numarasi <windows_dosya> <kullanıcı>@<linux_sanal_makine_ip_veya_adi>:/linux/dizin

Örnek:
 scp complex.txt root@k81:

Yukarıdaki örnek windows üzerindeki complex.txt dosyasını linux root diznine root kullanıcısı ile taşıdı. Benim makinem k81 ip adresi Windows hosts dosyasında tanımlı olduğu için ip yerine isim kullandım. Bu örnek dosya içindi şayet klasör kopyalayacaksanız complex: not a regular file şeklinde bir hata alacaksınız. Klasör ve içeriğini kopyalamak için -r eklemeniz yeterlidir.

11. Bir dosyanın içeriğini tamamen silmek

Linux üzerinde dosya içerikleriyle uğraşırken genelde nano veya vi gibi editörler kullanıyoruz. Ancak bu editörler Nodepad++ kadar konforlu değiller. Bazen bir dosya içini tamamen temizlemek isteriz. Bunu bahsi geçen editörlerle yapmak biraz güç. Dolayısıyla bu sorunu basit ve pratik olarak dosya dışından komut satırı üzerinden çözeceğiz.

> içi_temizlenecek_dosya.uzantı

12. Linux bir port kullanılıyor mu? Kullanılıyorsa kim ve pid’si nedir?

Zaman zaman bir portun açık olup olmadığını bilmek isteriz. Aşağıda paylaşacağım komut 5000 numaralı portun açık olup olmadığı bilgisini bize verecektir.

sudo netstat -tulnp | grep 5000

Sonuç:
tcp        0      0 192.168.206.110:5000    0.0.0.0:*               LISTEN      12080/python

Evet 5000 portu açık ve 192.168.206.110 numaralı ip üzerinden dinliyor. Komutta kullanılan -tulnp anlamı ise:

t – TCP bağlantıları göster.
u – UDP bağlantıları göster.
l – Sadece dinleme yapan (listening) prosesi göster bağlantı yapanlar değil.
n – Ip adreslerin isimlerini çözmeye çalışma
p – İlgili portu dinleyen prosesin adını göster

13. CentOS7 Linux repoyu kapatmak (disable repo with command)

CentOS’un paket yöneticisi yum’dur. yum ise paketleri /etc/yum.repos.d dizininde bulunan .repo uzantılı dosyalardan faydalanarak yönetir. .repo uzantılı dosyada temel olarak paketlerin nerede olacağı ve repo’nun aktif mi pasif mi olduğu bilgisi yer alır. Bazen repo^’yu silmek istemeyiz ancak kullanmak da istemeyiz. repo’yu pasif hale getirmenin iki yolu var. İlki editör ile repo içine girip enabled değerini 0 yapmak. İkincisi ise aşağıdaki komutu kullanmak. Komut öncesi ius.repo

 cat /etc/yum.repos.d/ius.repo
[ius]
name = IUS for Enterprise Linux 7 - $basearch
baseurl = https://repo.ius.io/7/$basearch/
enabled = 1
repo_gpgcheck = 0
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7
yum-config-manager --disable ius

Bu komut ius.repo olarak kayıtlı repoyu pasif hale getirecektir.

cat /etc/yum.repos.d/ius.repo
[ius]
name = IUS for Enterprise Linux 7 - $basearch
baseurl = https://repo.ius.io/7/$basearch/
enabled = 0
repo_gpgcheck = 0
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-IUS-7

14. Ubuntu üzerine Pycharm kurmak ve Pycharm’ı arayüzden başlatmak

Pycharm pyton geliştirme ortamlarından en popüler olanlarından biri. Bu soruda hızlı bir şekilde Pycharm’ı Ubuntu Desktop üzerinde nasıl kurarız ve terminalden başlatmak yerine arayüz/kısayol ile nasıl başlatırız onun cevabını veriyor olacağım. Çünkü terminalden başlattığımızda terminali meşgul ediyor ve sürekli açık bir terminal bunu çok istemiyoruz.

  1. Browser üzerinden PyCharm’ı indirin
  2. PyCharm Downloads’a inecektir. Onu kullanıcı home dizinine taşıyalım (/home/erkan)
  3. erkan@ubuntu:$ mv Downloads/pycharm-community-2020.1.2.tar.gz .
  4. Paketi açalım
  5. tar xzf /pycharm-community-2020.1.2.tar.gz
  6. pycharm olarak soft link verelim
  7. ln -s pycharm-community-2020.1.1 pycharm
  8. sudo nano /etc/environment komutu ile
    PYCHARM_HOME=”/home/erkan/pycharm”
    PATH sonuna :$PYCHARM_HOME/bin
    ekleyelim
  9. source /etc/environment ile değişiklikleri geçerli kılalım.
  10. pycharm.sh ile PyCharmı’ı başlatalım. Burada terminal açık kalıp boşuna terminali meşgul edecektir.
  11. Pycharm Arayüzünden Tools -> Create Desktop Entry işaretleyelim.
    Dilerseniz bunu tüm kullanıcılar için yapabilirsiniz ancak sudo yetkisi ister.
  12. PyCharm’ı normal olarak kapatalım.
  13. Şekil-1’deki noktalara tıklayıp PyCharm diye aradığımızda artık PyCharm icon karşımıza gelecektir. Ona tıklayarak terminali meşgul etmeden PyCharm kullanabiliriz.
Şekil-1: Ubuntu Show Application

15. Ubuntu üzerine Postman hızlı ve pratik şekilde nasıl kurulur?

Postman daha çok makine öğrenmesi modellerini bir web uygulaması üzerinden sunacakların, özellikle Python Flask ile, kullanabileceği bir araç. Özet olarak Postman API geliştirmenize ve test etmanize yardımcı oluyor. Şimdi bunu Ubuntu Desktop üzerine nasıl kurarız onun komutunu paylaşıyor olacağım.

erkan@ubuntu:$ sudo snap install postman
[sudo] password for erkan:

Çıktı:
postman 7.25.2 from Postman, Inc. (postman-inc✓) installed

16. VMWare üzerindeki sanal Ubuntu Desktop makineye sabit ip adresi belirleme (set ubuntu static ip)

Sanallaştırma yazılımları ile sık sık linux makineler oluşturuyor ve bu makinelere ana bilgisayardan isim ile erişmek istiyorsanız ana bilgisayarın hosts dosyasına bu ip ve belirlediğiniz ismi eklemeniz gerekir. Ancak oluşturduğunuz sanal makine VMWare DHCP ile dinamik ip adresi alıyor ise makineyi müteakip açışınızda isim ip eşleşmesi bozulabilir ve artık siz isim ile sanal makineye ana makinenizden erişemez hale gelebilirsiniz. Aşağıda VMWare NAT ağına bağlı bir Ubuntu Desktop sanal makinenin ip adresini nasıl static yaparız onu göreceğiz. Genelde oluşan sanal bağlantı noktası adı ens33’dür, yine de ifconfig ile kontrol etmenizde yarar var.

/etc/netplan içinde bulunan dosyanın adını değiştirerek yedekleyin ve 01-netcfg.yaml adında yeni dosya oluşturun. Dosya içeriğini aşağıdaki gibi hazırlayın.
erkan@ubuntu:~# cd /etc/network/netplan

erkan@ubuntu:/etc/netplan$ cat 01-netcfg.yaml 
network:
  version: 2
  ethernets: 
    ens33:
      dhcp4: no
      addresses: [192.168.206.194/24]
      gateway4: 192.168.206.2
      nameservers: 
        addresses: [8.8.8.8, 8.8.4.4]

Değişikliği yaptıktan sonra makineyi yeniden başlattıktan sonra ifconfig komutuyla kontrol ettiğinizde ip numarasının 192.168.206.194 olduğunu göreceksiniz. Yukarıdaki değerleri kendinize uyarlamayı unutmayın.

17. Linux bir klasörü izlemek (watch a directory)

Bir klasörü izlemek istediğimizde özellikle streming veya log hareketleri watch gibi faydalı bir komut bulunuyor. Format:

watch [options] "komut /izlenecek/klasör"

Örnek:

watch -n 1 -d "ls -lh /home/myuser/log"

Seçeneklerin açıklamasını olduğu gibi buraya ekliyorum:

Options:
  -b, --beep             beep if command has a non-zero exit
  -c, --color            interpret ANSI color and style sequences
  -d, --differences[=<permanent>]
                         highlight changes between updates
  -e, --errexit          exit if command has a non-zero exit
  -g, --chgexit          exit when output from command changes
  -n, --interval <secs>  seconds to wait between updates
  -p, --precise          attempt run command in precise intervals
  -t, --no-title         turn off header
  -x, --exec             pass command to exec instead of "sh -c"

18. Ubuntu Desktop klavyeyi Türkçe yapmak

System Sttings -> Keyboard -> Text Entry -> Input resourse to use -> + -> Turkish

Başka bir yazıda görüşmek dileğiyle hoşça kalın…

19. Birden fazla sunucuya paralel dosya kopyalama (pscp-pssh)

# Format
pscp.pssh -h sunucular kaynak_dosya hedef_klasör

pscp.pssh -h otherhosts /var/kerberos/krb5kdc/kadm5.acl /var/kerberos/krb5kdc/kadm5.acl

Yukarıdaki otherhosts dosyası içinde hedef sunucuların isim veya ip adresleri bulunur. Ayrıca pssh kurulu olmalıdır. yum -y install pssh

20. Kafka topic içinde kaç tane kayıt var?

How many records in a Kafka topic?

kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic test1 --time -1 --offsets 1 | awk -F ":" '{sum += $3} END {print sum}'
159

21. Kafka topic 100 MB’yi geçmesin ve 10 dk sonra silinsin

Topic bazlı konfigürasyonları kullanarak sadece o topic için topic boyutunu ve mesajların ömrünü belirleyebiliriz. Aşağıdaki rakamlar yanlış değilse 95 MB ve 10 dk yaptık.

kafka-topics.sh --bootstrap-server localhost:9092 --create --topic test2 replication-factor 1 --partitions 3 --config max.message.bytes=64000 --config flush.messages=1 --config retention.bytes=100000000 --config retention.ms=604800

22. Linux bit port kullanılıyor mu? Kullanılıyorsa öldür lsof

Baze aşağıdakine benzer hatalar alabiliriz

bind: Address already in use
channel_setup_fwd_listener_tcpip: cannot listen to port: 8080
Could not request local forwarding.

Bunun sebebi aynı portun başka bir proses tarafından dinleniyor olmasıdır. Peki bir portu dinleyen prosesin PID numarasını bulup onu öldürebilir miyiz? Evet. Aşağıdaki örnek lsoft ile yapılmıştır.

erkan@ubuntu:~$ lsof -ti:8080
65350

8080’i dinleyen 65350 numaralı proses imiş. Onu sudo kill -9 65350  komutuyla öldürebiliriz.

Yazar Hakkında
Toplam 177 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara