User Tools

Site Tools


Sidebar

code:linux

Linux

SSH tunelování portů

ssh -A -fN -l username -L 2222:target_server:22 middle_server

RSYNC

Parametry: http://www.computerhope.com/unix/rsync.htm

Pro download ze serveru:

rsync -rzt --delete --chmod=a+rwx -e ssh username@target_server:relative_path_to_source/ ./ 

Přesun obsahu složky o úroveň výše

mv * .[^.]* ../

Kopie obsahu složky se zachováním práv a userů

cp -p -R ./* ./.[^.]* ../target/

Skript pro synchronizaci médií přes RSYNC

#!/bin/sh
usage() {
    echo "RSYNC for MEDIA in project <project_name>"
    echo ""
    echo "SSH-AGENT must be running"
    echo ""
    echo "usage: sync_media <user> <target_dir>"
    echo "example: sync_media tomas.marny ./media/"
}
 
ssh-add -l >/dev/null 2>&1
if [ $? = 2 ]; then
    # exit-status 2 = couldn't connect to ssh-agent
    echo -n "SSH-AGENT not active, please start SSH-AGENT before continue!"
    exit 1
fi
 
if [ $# -ne 2 ]; then
    usage
    exit 1
fi
 
rsync -rzvt --delete --perms --chmod=a+rwx -e ssh $1@<target_server>:<path_to_source_media> $2

Zjištění velikosti složky

-sh : s… size, h… human readable

du -sh ./slozka/

Výpis složky s řazením od největšího souboru/složky (limit na 10)

du --max-depth=1 -h . | sort -h -r | head -10

Zabalení dat pomocí TAR s udržením práv

ionice -c3 tar -pcf soubor.tar slozka/

Automatické spouštění SSH Agenta

V Systém > Upřesnit nastavení systému > Proměnné prostředí > Uživatelské proměnné… vytvořit nový záznam s názvem SSH_AUTH_SOCK a hodnotou /tmp/.ssh-socket

Přidat do .bashrc/.zshrc

# RUN SSH AGENT AT START ######################################################
ssh-add -l >/dev/null 2>&1
if [ $? = 2 ]; then
    # exit-status 2 = couldn't connect to ssh-agent
    rm -f $SSH_AUTH_SOCK
 
    echo -n "Starting SSH agent ... "
    eval `ssh-agent -a $SSH_AUTH_SOCK`
    eval `ssh-add`
else
    echo -n "SSH agent active"
    echo -e "\n"
fi
###

Změna hesla u SSH klíče

ssh-keygen -p -f ~/.ssh/id_dsa

Vyhledávání textu v souborech

GREP manuál

Výpis obsahu u souborů, které obsahují hledaný řetězec:

grep -rnw . -e "test.tezner.cz"

Vypsání souborů, které obsahují hledaný řetězec:

grep -rnw . -l -e "error_reporting(0);eval(base64_decode("

MySQL dump z command line

mysqldump -u <username> -p <db-name> | gzip > ../private/<db-name>.$(date +"%Y-%m-%d-%H%M").gz

MySQL import GZ dumpu z command line

zcat <filename>.sql.gz | mysql -u <username> -p <db-name>

Výpis 20 naposledy změněných souborů na FS v rámci adresáře

find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort -r | cut -f 2- -d ' ' | head -20

S možností vypustit z výsledku některé typy souborů (zde *.jpg):

find . ! -name '*.jpg' -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" | sort -r | cut -f 2- -d ' ' | head -20

Pro více typů zopakovat celou konstrukci ! -name '*.html'

Na ČH, kde je pouze `find`:

# on remote server
 
find . -type f -printf "%-.22T+ %M %n %-8u %-8g %8s %Tx %.8TX %p\n" > last_changes.txt
 
# on localhost
 
scp remote:last_changes.txt .
 
cat last_changes.txt  | sort -r | cut -f 2- -d ' ' | head -20
 
# or with striping some lines
 
sed '/webcam/d' last_changed.txt | sort -r | cut -f 2- -d ' ' | head -20

Výpis 20 největších souborů na FS v rámci adresáře

Vynechání některých souborů viz předchozí.

find . -type f -size +1M -printf "%s : %p\n" | sort -nr | head -20

Dávková změna práv na složkách a souborech

Viz http://superuser.com/a/91938

find ./ -type d -print0 | xargs -0 chmod 755  # folders
find ./ -type f -print0 | xargs -0 chmod 644  # files

Na Český hosting nutno použít toto:

find . -type d -exec chmod 750 {} +  # folders
find . -type f -exec chmod 640 {} +  # files

Kopie obsahu se zachováním práv

Viz http://unix.stackexchange.com/a/43608

cp -rp /source/dir /target/dir

Extract lines with patern from file

sed -nr '/213.55.184.184/p' apache-access.clean.log > apache-access.184.log

Find folders with 777 permissions

find . -type d -perm 0777

Grep DataDog logs from syslog

tailf /var/log/syslog | grep -v "dd."

Clean up old kernels

Source: https://askubuntu.com/a/473639

Check current version and DO NOT REMOVE THIS KERNEL!

uname -r

List all kernels

dpkg --list | grep linux-image

Delete/purge all kernels except current one:

sudo apt-get purge linux-image-x.x.x.x-generic
  • rc = Remove - only Configs
  • ii = Install - Installed

Vysvětlivky falgů na začátku výpisu dpkg --list

Disable / enable services from autostart

Source: https://askubuntu.com/a/27137

sudo update-rc.d mongodb disable

Postgres restore

  • -F = –format=c|d|t
  • -c = –clean
  • -O = –no-owner
  • -x = –no-privileges
  • -j5 = use 5 parallel jobs
  • -d = database name
pg_restore -Fc -Oxv -j5 -d <database-name> <dump-file>

Journal logy

Pročištění logů, odmaže starší záznamy.

sudo journalctl --vacuum-size=500M

Nastavení limitu pro journal v sudo vim /etc/systemd/journald.conf:

SystemMaxUse=500M

Jaký proces využívá port

lsof -i :80

Certbot / Certifikáty

List of existing certificates on host

certbot certificates

Certificate detailed info

openssl x509 -text -noout -in <cert-path>

nebo online

nmap -p 443 --script ssl-cert coex.cz

CPU iowait debug

Source: https://haydenjames.io/what-is-iowait-and-linux-performance/

atop  # run it with -d option or press d to toggle the disk stats view.
iostat -xm 2  # try it with the -xm 2 options for extended statistics, in megabytes and in two-second intervals.
iotop -oPa  # – top-like I/O monitor. Try it with the -oPa options to show the accumulated I/O of active processes only.
ps auxf  # – use auxf, then under the “STAT” column “D” usually indicates disk iowait.
strace  # – view the actual operations issued by a process. Read the strace man page.
lsof  # – after you’ve identified the process responsible, use -p [PID] to find the specific files.

jq

Inplace transform Unix timestamp to Datetime inside json log

docker events | TZ=Europe/Prague jq '.time |= (strflocaltime("%Y-%m-%d %H:%M:%s %Z"))' -C | less

Inplace decode all k8s secrets values

kubectl get secrets postgres-secrets -o json | jq '.data | map_values(@base64d)'
code/linux.txt · Last modified: 2023/11/11 00:39 by hansek