skip to Main Content

linux de cpu kullanımını kısıtlamak

genel olarak bir uygulamanın çok fazla cpu tüketmesi istenilmez. bu cpu tüketimi genel olarak bir kaç nedenden kaynaklanır.

  • kötü programcılık örnekleri
  • zafiyat oluşturmak için kötü niyetli uygulamalar
  • iyi yönetilmeyen sunucularda yük dengeleme v.b. yapılmaması
  • gerçekten işlem gücü gerektiren kernel derleme, 3d render v.b. işlemlerde

cpu tüketimi neden olursa olsun pcde bunun olmasını elbette istemiyoruz.. bunun için oldukça kullanışlı bir uygulama mevcut. önce uygulamayı sistemize kuralım.

sudo apt-get install cpulimit

kurulu yaptıktan sonra kullanmaya başlayabilirsiniz basit bir örnek yapalım.

cpulimit -l 20 python face-detect.py haarcascade.xml

diğer kullanım seçenekleri için help den yararlanılabilir. sisteminizde faza tüketilen uygulamalar için http://www.ferhatcicek.com/bilisim-dunyasi/isletim-sistemi-bilisim-dunyasi/linux/sh/20170821/yuksek-kaynak-tuketen-uygulamalari-bulmak/2177.html yazısına bakabilirsiniz.

Usage: cpulimit TARGET [OPTIONS...] [-- PROGRAM]
   TARGET must be exactly one of these:
      -p, --pid=N        pid of the process
      -e, --exe=FILE     name of the executable program file
                         The -e option only works when
                         cpulimit is run with admin rights.
      -P, --path=PATH    absolute path name of the
                         executable program file
   OPTIONS
      -b  --background   run in background
      -f  --foreground   launch target process in foreground and wait for it to exit
      -c  --cpu=N        override the detection of CPUs on the machine.
      -l, --limit=N      percentage of cpu allowed from 1 up.
                         Usually 1 - 800, but can be higher
                         on multi-core CPUs (mandatory)
      -m, --monitor-forks  Watch children/forks of the target process
      -q, --quiet        run in quiet mode (only print errors).
      -k, --kill         kill processes going over their limit
                         instead of just throttling them.
      -r, --restore      Restore processes after they have
                         been killed. Works with the -k flag.
      -s, --signal=SIG   Send this signal to the watched process when cpulimit exits.
                         Signal should be specificed as a number or 
                         SIGTERM, SIGCONT, SIGSTOP, etc. SIGCONT is the default.
      -v, --verbose      show control statistics
      -z, --lazy         exit if there is no suitable target process,
                         or if it dies
          --             This is the final CPUlimit option. All following
                         options are for another program we will launch.
      -h, --help         display this help and exit

linuxde klasör altındaki en büyük boyutlu dosyaları bulmak

find . -printf ‘%s %p\n’| sort -nr | head -10

ile en büyük 10 dosya aranmış olur.

root@cicekpc:/boot# find . -printf '%s %p\n'| sort -nr | head -10
59562456 ./initrd.img-4.13.0-46-generic
59549708 ./initrd.img-4.13.0-45-generic
43531219 ./initrd.img-4.10.0-32-generic
7870224 ./vmlinuz-4.13.0-46-generic
7870224 ./vmlinuz-4.13.0-45-generic
7579408 ./vmlinuz-4.10.0-32-generic
3884611 ./System.map-4.13.0-46-generic
3884611 ./System.map-4.13.0-45-generic
3719197 ./System.map-4.10.0-32-generic
2397909 ./grub/unicode.pf2

ubuntu üzerinde ssh sunucu

ubuntu üzerinde ssh sunucuyu aktif etmek istiyorsanız openssh-server i kurmak yeterli olacaktır.

fcicek@ubuntu:~$ sudo apt-get install openssh-server

sunucunun aktif olduğunun kontrollerini yapalım.

fcicek@ubuntu:~$ ps -aux|grep sshd
root        472  0.0  0.5  72136  5656 ?        Ss   09:31   0:00 /usr/sbin/sshd -D
root       1268  0.0  0.7 105604  7044 ?        Ss   09:36   0:00 sshd: fcicek [priv]
fcicek     1292  0.0  0.4 105604  4608 ?        S    09:36   0:00 sshd: fcicek@pts/0
fcicek     1467  0.0  0.1  14352  1168 pts/0    S+   09:44   0:00 grep --color=auto sshd

linuxte yüksek kaynak tüketen uygulamaları bulmak

root@cicekpc:/home/fcicek#  ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
  PID  PPID CMD                         %MEM %CPU
 2878  2102 /usr/lib/firefox/firefox    17.8 28.3
 1274     1 /usr/sbin/mysqld             1.8  0.0
 2579  2102 /usr/bin/compiz              1.4  1.5
 2710  2452 /usr/bin/gnome-software --g  1.0  0.0
 1313  1267 /usr/lib/xorg/Xorg -core :0  0.8  1.8
 2723  2452 nautilus -n                  0.6  0.0
 2879     1 /usr/lib/fwupd/fwupd         0.6  0.0
 3083  2102 /usr/lib/gnome-terminal/gno  0.5  0.1
 1513     1 dockerd -G docker --debug -  0.5  0.1

debian altında kullanılmayan yapılandırma dosyaları

sisteminiz üzerinden programı kaldırdıktan sonra sistem üzerinde kalan ve kullanılmayan yapılandırma dosyalarını bulmak için

dpkg -l | awk '/^rc/ {print $2}'

kaldırmak için

sudo su
dpkg -l | awk '/^rc/ {print $2}' | xargs dpkg --purge

kullanabilirsiniz.

linuxde açık port ve socket

linuxte açık portları ve socketleri öğrenmek istiyorsak, en temel uygulamamız netstat dan başka bir şeye gerek yok.

fcicek@fcicek-home:~$ sudo netstat -plnt
Aktif internet bağlantıları (sadece sunucular)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               DİNLE      1298/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               DİNLE      3905/cupsd          
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               DİNLE      1525/postgres       
tcp        0      0 127.0.0.1:5433          0.0.0.0:*               DİNLE      1508/postgres       
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               DİNLE      1436/mysqld         
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               DİNLE      1293/systemd-resolv 
tcp6       0      0 :::22                   :::*                    DİNLE      1298/sshd           
tcp6       0      0 ::1:631                 :::*                    DİNLE      3905/cupsd          
tcp6       0      0 :::5355                 :::*                    DİNLE      1293/systemd-resolv 
tcp6       0      0 :::80                   :::*                    DİNLE      1524/apache2

 

fcicek@fcicek-home:~$ netstat -lx 
Active UNIX domain sockets (sadece sunucular)
Proto RefCnt Flags       Type       State         I-Node   Yol
unix  2      [ ACC ]     AKIŞ      DİNLENİYOR  34197    /tmp/.ICE-unix/2505
unix  2      [ ACC ]     AKIŞ      DİNLENİYOR  28166    /run/user/125/bus
unix  2      [ ACC ]     AKIŞ      DİNLENİYOR  34061    /run/user/1000/systemd/private
unix  2      [ ACC ]     AKIŞ      DİNLENİYOR  34066    /run/user/1000/bus
unix  2      [ ACC ]     AKIŞ      DİNLENİYOR  34196    @/tmp/.ICE-unix/2505
unix  2      [ ACC ]     AKIŞ      DİNLENİYOR  87786    /tmp/.org.chromium.Chromium.9o8hA2/SingletonSocket
unix  2      [ ACC ]     AKIŞ      DİNLENİYOR  27553    @/tmp/.ICE-unix/1750

 

bash-completion : bash ile gelişmiş komut tamamlama

debian tabanlı dağıtımlarda bash-completion özelliği genellikle varsayılan paketler arasında yer alıyor. nedir bu bash-completion derseniz komut yorumlayıcısında her aşamada tab tuşu ile komut tamamlama özelligidir.

örnek olarak “apt-get install ” yaptığınızda paketin tam adını bilmesek bile kurulabilecek paketler listenelecektir.

yazılım hakkında detaylı bilgi almak isterseniz http://bash-completion.alioth.debian.org/ adresinden bilgi alabilirsiniz.

eğer bu paket dağıtımınızda yoksa öncelikle kurmanız

root@cicek:~#apt-get install bash-completion

ve sonrasında .bash_profile veya .bashrc gibi uygun bir dosyayı

root@cicek:~#vi .bash_profile

düzenleyerek aşagıdaki satırları eklememiz yeterli olacaktır.

if [ -f /etc/bash_completion ]; then
 . /etc/bash_completion
fi

Back To Top