30 Eylül 2018 Pazar

whois komutu

Giriş
who is kayıtlar thin ve thick olmak üzere iki şekilde tutulur. Açıklaması şöyle
WHOIS data for Internet domains can be stored in one of two ways:

-a thick data store where each TLD registry keeps the complete WHOIS records for each sub-domain of the TLD.
-a thin model where the TLD registry delegates storage and maintenance of the WHOIS records to the registrar that was used by the registrant to register the domain.
Thin Kayıt
Şöyledir.
Domain Name: GOOGLE.COM
Registry Domain ID: 2138514_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.markmonitor.com
Registrar URL: http://www.markmonitor.com
Updated Date: 2011-07-20T16:55:31Z
Creation Date: 1997-09-15T04:00:00Z
Registry Expiry Date: 2020-09-14T04:00:00Z
Registrar: MarkMonitor Inc.
Registrar IANA ID: 292
Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
Registrar Abuse Contact Phone: +1.2083895740
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
Domain Status: serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited
Domain Status: serverTransferProhibited https://icann.org/epp#serverTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Name Server: NS1.GOOGLE.COM
Name Server: NS2.GOOGLE.COM
Name Server: NS3.GOOGLE.COM
Name Server: NS4.GOOGLE.COM
DNSSEC: unsigned
Eğer thick kayıdın tutulduğu yeri öğrenmek istersek, nerede olduğunu gösteren satır şöyle.
Registrar WHOIS Server: whois.markmonitor.com
Bu satır eskiden şöyleydi ancak şekli değiştirildi. Eski whois uygulamaları bu satır değiştiği için otomatik olarak thick kayıdı getiremeyebilir.
Whois Server: whois.markmonitor.com
Thich Kayıt
Adres ve telefon bilgilerini de içerir. Açıklaması şöyle.
Every domain is required by ICANN to have a WHOIS entry, which among other things, includes the name, address, email, and phone number information of the domain's registrant, administrative, and technical contacts.
Authoritative Name Server
Bir alan adından sorum olan sunucudur. whois komutu ile şöyle öğrenilebilir.
$ whois toafinish.com | grep "Name Server"
   Name Server: DNS1.HOST1PLUS.COM
   Name Server: DNS2.HOST1PLUS.COM
.com Kayıtları
.com kayıtlarını Verisign saklar ve thin modeli kullanır.

Örnek
Ülke sorgulamak için şöyle yaparız.
:~> whois au
% IANA WHOIS server
% for more information on IANA, visit http://www.iana.org
% This query returned 1 object

domain:       AU

organisation: .au Domain Administration (auDA)
address:      Lv 17
address:      1 Collins St
address:      Melbourne VIC 3000
address:      Australia
Örnek
Alan sorgulamak için şöyle yaparız.
:~> whois edu.au
Domain Name: EDU.AU
Registry Domain ID: D407400000002449554-AU
Registrar WHOIS Server: whois.auda.ltd
Registrar URL: http://www.afilias.com.au
Last Modified:
Registrar Name: Afilias Australia Pty Ltd

:~> whois sydney.edu.au
Domain Name: SYDNEY.EDU.AU
Registry Domain ID: D407400000000057080-AU
Registrar WHOIS Server: whois.auda.org.au
Registrar URL: https://www.domainname.edu.au
Last Modified: 2018-07-17T00:59:06Z
Registrar Name: EDUCATION SERVICES AUSTRALIA LIMITED
-h seçeneği
Örnek
Şöyle yaparız.
whois -h whois.markmonitor.com google.com
Örnek
Şöyle yaparız.
whois -h whois.ripe.net 243.25.203.20
Çıktı olarak şunu alırız.
inetnum:        243.0.0.0 - 243.255.255.255
netname:        IETF-RESERVED-ADDRESS-BLOCK
descr:          IPv4 address block reserved by the IETF
remarks:        ------------------------------------------------------
remarks:
remarks:        This address block is reserved by the IETF
remarks:
remarks:        You can find more information on the IANA registry page:
remarks:        http://www.iana.org/assignments/ipv4-address-space
remarks:
remarks:        ------------------------------------------------------ 



27 Eylül 2018 Perşembe

sched_setscheduler metodu - Scheduler Seçimi İçindir

Giriş
Bu metod ile uygulama için scheduler'lardan birisi seçilebilir. Real time scheduler olarak SCHED_FIFO, SCHED_RR seçilebilir.

Eğer tek bir thread'in önceliğini değiştirmek istersek thread başladıktan sonra pthread_setschedparam(...) metodu kullanılır.

Real Time Priority Değerleri
Açıklaması şöyle.
"Every real-time process is associated with a real-time priority, which is a value ranging from 1 (highest priority) to 99 (lowest priority). "
Örnek
Şöyle yaparız.
struct sched_param schedparm;
memset(&schedparm, 0, sizeof(schedparm));
schedparm.sched_priority = 99; // highest rt priority
sched_setscheduler(0, SCHED_FIFO, &schedparm);
Eğer tek bir thread'in önceliğini değiştirmek istersek thread başladıktan sonra pthread_setschedparam(...) metodu kullanılır.

24 Eylül 2018 Pazartesi

cups

Giriş
Açıklaması şöyle.
the foreground program (lpr) sends its print jobs to cups, which stores it and then uses serial, parallel, USB, network, ... communication to actually start the printing process.
Bazı sistemlerde cups yerine lpd mevcut.
Tarayıcıda şu adresler kullanılabilir.
http://localhost:631
http://localhost:631/admin
http://localhost:631/admin/login

19 Eylül 2018 Çarşamba

cgroups - CPU, RAM, Disk Gibi Sistem Kaynaklarını Sınırlama Getirir

Giriş
cgroups control groups anlamına gelir. Açıklaması şöyle.
Systemd creates a cgroup for each user, and all processes of a user belong to the same cgroup.

Cgroups is a Linux mechanism to set limits on system resources like max number of processes, CPU cycles, RAM usage, etc. This is a different, more modern, layer of resource limiting than ulimit (which uses the getrlimit() syscall).

To change the max number of processes systemd will allow for each user, edit /etc/systemd/logind.conf. The default is max 12288 processes per user.
Açıklaması şöyle
We could have created a process separate from the other process with Linux namespaces. But if we create multiple namespaces, then how can we limit the resources of each namespace so that it doesn’t take up the resources of another namespace?

Luckily, in 2007 some people developed cgroups just for us. This is a Linux feature that allows you to limit the resources of a process. Cgroups will determine the limit of CPU and Memory that a process can use. To create cgroup, we will use cgcreate.
cgroup CPU, RAM, Disk gibi sistem kaynaklarını sınırlamaya olanak sağlayan bir kernel özelliğidir. İlk başta Google tarafından 2006/2007 yılında geliştirildikten sonra, 2008 yılında Linux çekirdeğine dahil edilmiştir.

Şeklen şöyle. Burada Docker açısında gösteriliyor ama mantık aynı. Üstte namespaces ile container'ların birbirlerini görmesi engelleniyor. Altta cgroups ile her container için kaynaklara sınırlama getiriliyor.



cgroup-tools Paketi

Kurulum Centos
libcgroup1 paketinin kurulu olması gerekir. Şöyle yaparız
sudo yum install libcgroup
Kurulum  Ubuntu ve Debian
Şöyle yaparız
sudo apt-get install cgroup-tools

cgcreate Komutu - Grup Yaratma
cgcreate komutu yazısına taşıdım

17 Eylül 2018 Pazartesi

nohup komutu

Giriş
Açıklaması şöyle.
The nohup utility ignores the HUP signal and starts the given utility. The utility inherits the signal mask from nohup and will therefore also ignore the HUP signal. When the shell terminates, the process remains as a child process of nohup (and nohup is re-parented to init).
stdbuf seçeneği
Varsayılan bufferin seçeneğini değiştirir. Şöyle yaparız.
nohup stdbuf -oL ./executable &> /tmp/out.log &

apt-cache komutu

depends seçeneği
Bir paketin bağımlılıklarını görmek için şöyle yaparız.
apt-cache depends default-jdk
rdepends seçeneği
Reverse dependency gösterir. Şöyle yaparız.
apt-cache rdepends default-jdk

11 Eylül 2018 Salı

gpasswd komutu

Giriş
groups komutu ile kullanıcının ait olduğu gruplar görülebilir.

-a seçeneği
Belirtilen kullanıcıyı gruba ekler.
Örnek
Şöyle yaparız.
# gpasswd -a <primary account> sudo
Örnek
Şöyle yaparız.
$ sudo gpasswd -a <primary account> wheel

setuid metodu

Giriş
İmzası şöyle.
int setuid(uid_t uid);
int setgid(gid_t gid);
Açıklaması şöyle.
a process running with superuser privileges has the ability of changing its own UID and GID
Açıklaması şöyle.
Any process with capability CAP_SETUID can set these IDs, root has this capability.
Yeni aranan uid'ye denk gelen kullanıcı ismi /etc/passwd dosyasında okunur.

Örnek
Şöyle yaparız.
setgid (54321);
setuid (12345);
Örnek
Binary dosyamızın setuid bit'i atanmıştır. Uygulamayı başlatınca root olarak başlar. Hakları azaltmak için şöyle yaparız.
setuid(getuid());

10 Eylül 2018 Pazartesi

dialog komutu

--title seçeneği
Örnek
Şöyle yaparız.
#!/bin/bash

# show an inputbox
dialog --title "Inputbox" \
--backtitle "Search vacancies" \
--inputbox "Enter your query " 8 60 2>$OUTPUT

# get respose
respose=$?


6 Eylül 2018 Perşembe

set komutu

Giriş
Açıklaması şöyle. env ve printenv komutundan farklı olarak export edilen veya edilmeyen tüm değişkenleri gösterir.
If you want to see all variables set in your session, irrespective of whether they have been exported, you can use set
Ayrıca set komutu ile kullanılan seçenekler shebang olarak ta kullanılabilir.  Açıklaması şöyle
All of the single-character shell options documented in the description of the set builtin command, including -o, can be used as options when the shell is invoked. [...]
-m seçeneği
Açıklaması şöyle. Background işleri ön plana getirmek mümkün
Monitor mode. Job control is enabled. This option is on by default for interactive shells on systems that support it (see JOB CONTROL above). Background processes run in a separate process group and a line containing their exit status is printed upon their completion.
Örnek
Şöyle yaparız
#!/bin/bash
set -m
sleep 3 &  # test
sleep 1    # wait some
sleep 4 &  # run program under test
jobs
fg %1
-u seçeneği
Açıklaması şöyle.
This would make the current shell treat expansions of unset variables as an error:
Örnek
Şöyle yaparız.
$ set -u
$ echo "$myvariable"
bash: myvariable: unbound variable
Örnek
Şöyle yaparız.
$ unset build
$ set -u
$ rm -rf "$build"/*
bash: build: unbound variable
-x seçeneği
Kabuğu debug moduna geçirir. Böylece çalıştırılan komutların aslında tam olarak ne olduğunu görebiliriz.
Örnek
Şöyle yaparız.
$ set -x
Daha sonra şöyle yaparız. grep -r "..." mydirectory şeklindeki komutun nasıl açıldığı görülebilir.
$ grep -r "washer" /home/steeldriver/backup/
+ grep --color=auto -r washer /home/steeldriver/backup/
/home/steeldriver/backup/aaa/info.txt:washer
/home/steeldriver/backup/great.txt:washer

5 Eylül 2018 Çarşamba

basename komutu

Giriş
Dosyanın sahip olduğu dizin yolunu silerek dosya ismi ve uzantsını döndürür.

Örnek
Şöyle yaparız. png,jpeg,jpg uzantılı dosyaları sıkıştırıp jpg uzantılı hale getirir.
for PHOTO in /home/dvms/Desktop/images/*.{png,jpeg,jpg}
  do
    BASE=$(basename $PHOTO)
    convert "$PHOTO" -quality 50% "/home/dvms/Desktop/src/imagesCompressed/${BASE%.*}.jpg"
done
Örnek
İki dizindeki aynı isimli dosyaları bulmak için şöyle yaparız. double dash ile o ve c değişkenlerine atıfta bulunulur.
# traverse the original's directory
for o in original/*/*.mkv; do
  # traverse the corrupted's directory
  for c in corrupted/*/*.mkv; do 
    # if a corrupted file has the same name as an original's
    # perform the `mv` command replacing the former
    if [[ "$(basename "$o")" = "$(basename "$c")" ]]; then
      mv -- "$o" "$c"; 
    fi
  done
done

open metodu

O_DIRECT seçeneği
Açıklaması şöyle.
Then there's also the O_DIRECT flag to open(), which is supposed to "try to minimize cache effects of the I/O to and from this file." Removing caching reduces performance, so that's mostly used by applications (databases) that do their own caching and want to be in control of it. (O_DIRECT isn't without its issues, the comments about it in the man page are somewhat amusing.)
- O_DIRECT seçeneği ile Page Cache (yani Virtual Memory gibi düşünülebilir) kullanılmıyor ancak Disk Write Cache halen kullanılıyor. Burada O_DIRECT açıklanmış.

- O_DIRECT'e karşılık olarak Windows'ta FILE_FLAG_NO_BUFFERING (önbellekte tutma) seçeneği kullanılabilir.

- Bir dosyanın O_DIRECT seçeneği ile açılıp açılmadığını görmek için How to tell if a given process opened files with O_DIRECT? sorusunun cevabına göz atabilirsiniz. Bu bayrağın kullanılması diske yazma işleminde tüm verinin tamamen yazıldıktan sonra write() metodunun dönmesini garanti etmez! How are the O_SYNC and O_DIRECT flags in open(2) different/alike? sorusunda da bu durum açıklanıyor.

fsync metodu

Giriş
Açıklaması şöyle.
In addition to fsync(), there are also the sync() and syncfs() system calls that ask the system to make sure all system-wide writes or all writes on a particular filesystem have hit the disk. The utility sync can be used to call those.

Linux Dosya Sistemleri

ramfs
Açıklaması şöyle.
ramfs, a file system that only exists in RAM
Açıklaması şöyle
Linux indeed has a "ramdisk" driver that could provide /dev/ram# devices, and it might be available on your system, but it is usually not loaded by default and those device nodes will not exist unless you load that driver first. To do so, insert the brd.ko kernel module and you should get 8 or 16 ram devices:

# modprobe brd
tmpfs - ramfs yerine geldi
Açıklaması şöyle.
tmpfs, a file system that only exists in RAM (or more precisely, in the buffer cache)
Açıklaması şöyle
So in short, while Linux has ramdisks, tmpfs is the modern replacement of ramdisks in just about every situation. You don't need to decide on its size, or to explicitly "mkfs" a filesystem – just mount a tmpfs wherever you need one:

# mount -t tmpfs horse /tmp/ramdisk
Sanal Dosya Sistemleri
sysfs, procfs, devfs, shmfs gibi sanal dosya sistemleri de var.

fsck komutu - Dosya Sistemini Düzeltir

Giriş
Ani elektrik kesilmelerinde veya diğer sebeplerden bazen dosya sistemi bozulur. Onarmak için bu komut kullanılabilir.

Örnek
Şöyle yaparız
fsck.ext4 /dev/sd(yourpartition)
-a seçeneği
Otomatik olarak onarsın diye şöyle yaparız.
$ sudo fsck -a /dev/sda1
-y seçeneği
Şöyle yaparız
fsck -y /dev/sda3