Kategori arşivi: Linux

Postgresql uzak sunucudan otomatik backup alma işlemi

sudo apt-get install postgresql-client

Öncelikle backup.sh adında bir script oluşturdum. Script’in içeriği şu şekilde olacak;

BACKUP_DIR=/directory_to_backup 
PGPASSWORD="password" /usr/bin/pg_dump -C -h hostname -U dbuser dbname | gzip > $BACKUP_DIR/"`date +\%Y-\%m-\%d-\%H\%M\%S`.gz"

İlk satırda backup’ın hangi dizine alınacağını belirliyoruz. İkinci satırda ise öncelikle bağlanacağımız postgresql veri tabanının şifresi, pg_dump binary’sinin bulunduğu dizin, sunucunun ip adresi yada hostname’i, veri tabanı kullanıcısının ismi, veri tabanının ismi yazıldıktan sonra backup’ın sıkıştırılma formatı olarak gzip belirleniyor ve backup’ın alınacağı dizine scriptin çalıştırılma tarihi ve saati eklenerek kaydediliyor. Scripti hazırladıktan sonra cron job olarak olarak ekleyip bu işlemi otomatikleştirebilirsiniz. Cron’a aşağıdaki şekilde eklediğiniz iş ile saat 12 ve 18’de olmak üzere günlük iki adet backup alacaktır.

30 12,18 * * * bash /root/backup.sh

Aşağıdaki cron job’ı ise her dakika çalışmaktadır.

*/1 * * * * bash /root/backup.sh

Iptables – fail2ban: Yararlı komutlar (Centos)

Iptables’ı kaydedip, servis restart işleminde silinmesini önlemek

iptables-save | sudo tee /etc/sysconfig/iptables

Kuralları listeleme (port numaraları nümerik olarak)

iptables -L -n

Herhangi bir chain’e accept kuralı ekleme

iptables -I chain_name 1 -s ip_address -j ACCEPT

Fail2ban için exception ekleme; /etc/fail2ban/jail.conf (yada duruma göre jail.local) dosyası içerisinde ilgili satırı düzenlemek gerekiyor.

ignoreip = 127.0.0.1/8 xx.xx.xx.xx # (xx eklemek istediğiniz ip adresi)

Linux: Useful Commands (kullanışlı-faydalı komutlar)

Check if hyper-threading is enabled (Hyper threading aktif mi kontrolü);

lscpu
check Thread(s) per core

Delete all files except specific file extension (belirli bir uzantıya sahip dosyalar haricindeki tüm dosyaların silinmesi);

find . -type f ! -name '*.txt' -delete

Remove all files which has specific extension (belirli bir uzantıya sahip tüm dosyaların silinmesi);

find . -name "*.txt" -print0 | xargs -0 rm

Remove except some files (bazı dosyalar haricinden hepsini silme)

rm */!(align_*)  #dizin ve alt klasörlerdeki align ile başlayan dosyalar hariç tüm dosyaları siler

Delete all empty folders repititive (bir dizin içerisindeki bütün alt boş klasörlerin silinmesi).

find . -type d -empty -exec rmdir "{}" \;

Delete repetitive lines in a file and save as different file (bir dosyadaki tekrarlayan satırların silinip yalın bir şekilde başka bir dosyaya kaydedilmesi);

cat filename.txt | sort | uniq > new_file.txt

Find a file in subfolders (bir dosyayı tüm alt klasörlerde arama);

find ./ -name "filename*"

Get my public ip from commandline (public ip adresinin komut satırıyla bulunması);

curl ipinfo.io/ip

Run command with parameter on terminal (terminalden parametre ile komut çalıştırma);

parameter='ls'
$parameter | wc -l

List empty folders (Boş klasörleri listeleme)

find . -type d -empty

Count of just all files in directory (bir dizindeki alt dizinler dahil bütün dosyaların toplam sayısı)

find * -type f | wc -l

Find unique, distinct lines in text file (text dosyası içerisindeki unique satırları bulma)

sort file_name.txt | uniq > new_text.txt

LINUX: Dropbox Command Line Interface (CLI) Installation

Installation and Using:

mkdir -p ~/bin
wget -O ~/bin/dropbox.py "https://www.dropbox.com/download?dl=packages/dropbox.py"
chmod +x ~/bin/dropbox.py

Using:

 
 ~/bin/dropbox.py help

Source: http://www.dropboxwiki.com/tips-and-tricks/using-the-official-dropbox-command-line-interface-cli

Slurm Faydalı Komutlar – Örnekler

Slurm ile ilgili yazdığımız bildiriye bağlantıdan ulaşabilirsiniz.

You can access our report about Slurm from the link


Bir kullanıcıya ait tüm işleri sonlandırma:

scancel -u username

Bir işi spesifik bir node’da çalıştırma:

sbatch --nodelist nodename scriptname

Belli bir node’u drain durumuna alarak sonraki işlerin ona verilmemesini sağlamak.

scontrol update nodename=nodeismi state=drain reason="sebebi"

Sunucuda node bilgilerini görme (node ismi belirtilmezse tüm node’ları gösterir);

scontrol show nodes nodeismi

Node’u resume moduyla tekrar aktif etme;

scontrol update nodename=nodeismi state=resume

Client’larda node bilgilerini görme;

slurmd -C

Çalışmayan node’lar ve çalışmama sebeplerini görme;

sinfo -R

Çalışan ve çalışmayan tüm node’ları gruplayarak listeleme;

sinfo -l

Sunucuda slurm servisini restart etme (çalışan işlere zarar vermez);

systemctl restart slurmctld.service

Kuyruktaki bir iş hakkında bilgi edinme;

scontrol show job job_id

Çalışan, bekleyen ve yeni bitmiş işler hakkında bilgi edinme

sacct 
sacct -u username | grep COMPLETED

Bir işi gönderirken bazı node’lara işin gönderilmesini önleme (yavaş çalışan bir node vardır işin bu node’a gitmesini istemiyorsunuzdur).takipçi satın al

sbatch --exclusive=nodeismi scriptname

Kuyrukta PENDING olarak bekleyen işin tahmini başlama süresini görüntüleme

squeue --start

Kuyruktaki bütün işlerin JOBID’ye göre sıralanmış hali.

squeue --sort=i 
veya
squeue -S i

Linux/Centos LVM partition’ı bölerek iki partition yapma

Centos’ta lvm home partition’ın bir kısmını alarak başka bir partition oluşturmak istiyorum. Öncelikle

umount /home

komutuyla partition unmount ediyoruz.

lvdisplay

komutuyla logical volume’leri sıralıyoruz ve /home partition’ının LV path’ine bakıyoruz. Bu partition’ı

lvremove /dev/cl/home

komutu ile siliyoruz.

Eğer bu noktada Logical volume cl/home in use şeklinde bir hata alırsanız bilgisayarınızı yeniden başlattıktan sonra aynı işlemi tekrarlayın. Daha sonra

vgs

komutu ile sildiğimiz partition boş alan olarak görünüyor mu ona bakıyoruz. Aşağıdaki komutlarla iki yeni lvm partition oluşturuyorum ve lsblk komutu ile isimlerine bakarak bu partition’ları yeniden isimlendiriyorum.

lvcreate -L 450GB cl
lsblk
lvrename /dev/cl/lvol0 /dev/cl/mds
lvcreate -L 426GB cl
lvrename /dev/cl/lvol0 /dev/cl/home

Daha sonra bu oluşturulan partitionları istediğim dosya formatında formatlıyorum (ben ext4 olarak seçtim).

mkfs.ext4 /dev/mapper/cl-home /home/
mkfs.ext4 /dev/mapper/cl-mds /mds/

Daha sonra yeni oluşturduğum bu partitionları mount ediyorum.

mount /dev/cl/mds /mds
mount /dev/cl/home /home

Daha sonra bilgisayar her başladığında bu partitionlar mount edilsin diye /etc/fstab dosyasına aşağıdaki satırları ekliyorum. Bilgisayarı yeniden başlatıp df -h komutuyla yeni partitionların mount edilip edilmediğine bakıyorum. Sorun yok.

/dev/mapper/cl-home /home ext4 defaults 0 0
/dev/mapper/cl-mds /mds ext4 defaults 0 0

NOT:

Partition’ı dosya formatı vererek formatlamaz iseniz aşağıdaki hatayı alırsınız.

mount: /dev/mapper/cl-home is write-protected, mounting read-only
mount: unknown filesystem type '(null)'

Ben bunu yukarıda

mkfs.ext4 /dev/mapper/cl-home /home/

komutuyla hallettim.

 

linux add path

add new paths to .bash_profile file and logoff and login again.

export PATH=$PATH:$HOME/ncbi-blast-2.2.29+/bin
export BLASTDB=$HOME/blastdb

Başka bir yöntem de şudur; /etc/profile.d/dosya.sh şeklinde bir dosya açılır. İçerik aşağıdaki gibidir.

!/bin/bash
export PATH=$PATH:/lustre/nuh/ncbi-blast-2.5.0+/bin/

Dosya kaydedildikten sonra çalıştırılabilir olarak ayarlanır. İşlem tamamdır.

chmod +x /etc/profile.d/dosya.sh