Een overzicht van mijn websites, fotografie en andere leuke dingen

maan

Linux

Handige Linux commando's:

Bash

help        info bash commando's
exit        exit code doorgeven van laatste commando
printf      is beter dan echo in scripts
stat        file info
$(command) syntax to `command`: de laatste methode is oud
readelf     lees ELF exec file info (32/64 bit kun je ook zien)
echo $0         laat huidig proces zien (welke shell)
type 'command'  info over commando (exec of shell)
!commando       voert laatste commando uit.
$?              geeft exit code van laatste commando.
alias		alias naar een commando configureren, ook bv met een default optie
help 		display information about builtin commands.
CtrL + R	search in bash history (CtrL + Shift + R reverse)

Bash parsing

cat -                   cat standaard input (het gaat hier om het streepje)
''                      alle karakters tussen '' worden letterlijk genomen.
""                      alle karakters tussen "" worden letterlijk genomen, behalve: $`"

Algemeen

hostname new_hostname   wijzigen hostname (zonder reboot)
ldd                     laat libraries zien die een app gebruikt

File system

ls -lh                  ls: human readable size
lsof			open files van een proces (-p) of welke PID's hebben een file of dir. geopend.
fuser                   welke gebruiker gebruikt een bepaalde file of dir.
umount -f               force unmount
mkisofs                 is om cd ISO images te maken.
dd if=/dev/hdc of=image.iso     
                        maak van een CD of DVD een ISO image.
mount -o loop image.iso /mnt
                        mount een ISO image.
tar clpf - . | (cd /mnt/floppy; tar xpvf -)
                        kopieert huidige direktorie naar nieuwe direktorie op andere HD.
whereis			locate the binary, source, and manual page files for a command
which 'command'     show location
whatis/apropos		zoek commando's
which			locate a command, vooral handig met scripting
tune2fs -l device	geeft partitie informatie
tune2fs			wijzig filesysteem (bv max mount count en root reserved blocks)
resize2fs
/sbin/blkid		info van alle filesystemen met UUID
ddrescue		disk recovery (zie package: gddrescue), eerst met optie -n voor snelle
			gemakkelijke data, daarna zonder -n voor de moeilijke rest.
tree			geeft files weer in tree mode
findmnt			geeft duidelijk overzicht mounted file systemen, beter dan mount
stat 'file'     fileinfo, meer dan ls

Systemd

locate --regex ctl$|grep bin	welke systemd commando's zijn op het systeem aanwezig?
systemctl		main command: systemctl status/start/stop/restart/disable/list-dependencies 
			(--reverse) apache2.service
journalctl		logfiles: journalctl -u ssh.service / journalctl --dmesg (-k) / journalctl --PID=
hostnamectl		host informatie/beheer: hostname, kernel, Linux version, architecture.
localectl		taal configuratie/beheer.
loginctl		ingelogde gebruikers en beheer
networkctl		
apache2ctl
systemd-analyze		systeem boot performance. systemd-analyze blame/crtitical-chain.
timedatectl             nieuw, ipv ntp
timedatectl timesync-status
resolvectl

Processes

kill -SIGHUP 'proc_id'  herstart proces of reload configuratie files, proc_id blijft hetzelfde.
lsof			open files van een proces (-p) of welke PID's hebben een file of dir. geopend.

Network

iptraf			grafisch netwerk gebruik
ethtool                 netwerk tool, ethtool -i geeft ook driver / firmware info
netstat -tulp           poorten met processen weergave
netstat-nat             op de firewall: alle NAT connecties weergeven.
conntrack		connection tracking lijst beheren
mtr			continue traceroute
ntpq -p localhost	geeft gebruikte NTP servers weer met stats.
netstat -tulp   	poorten met processen weergave
ssh -D8080 hostname	SOCKS5 proxy server via server hostname, zet webbrowser op SOCKS5 http://localhost:8080
curl --head url		HTTP header info van een website
sslscan --no-failed	SSL Scanner, determine the ciphers that are supported
ssh-audit           SSH server info
openssl -s_client -connect server:port     SSL client connectie maken met server

Packages (Debian)

aptitude show package           package info
aptitude search packagename	zoek op packagename
aptitude search ~description	zoek op package description
aptitude why                    waarom is package geinstalleerd (ivm dependencies en automatische installatie)
apt-cache showpkg 'packname'	package info
apt-file search 'filename'	zoek package met een bepaalde file, of 'dpkg -S'
dpkg -l			alle geinstalleerde packages + info (-p 'packagename' meer info en -L voor bestanden)
ar                     .deb file archiver
apt list --installed    geinstalleerde packages
dpkg -L packagename     list package files 

Performance

iostat / iotop
htop			interactive process viewer
ionice                  IO scheduler
vmstat -n 5		geeft elke 5 sec virt. mem. statistieken (disk io, swap, mem)
dstat			stats overzicht (CPU / disk / net / paging / system)

Users

id			huidige user informatie: ID's en groepen

Tools

grep -v                 inversie, dus alles wat niet matched.
grep -c                 telt aantal matched regels.
egrep "x|y"             geeft regels weer die zowel x als y bevatten.
head / tail
sed                     handig in scripts om tekst te wijzigen.
xargs                   zorgt voor niet teveel argumenten op commandline,
                        bv verwijderen van 100000 files kan met: 'ls|xargs rm' ipv 'rm *'
wkhtmltopdf url pdf     converteer website via een url naar een pdf file.

Scheduling

at                      eenmalig gescheduleerd commando (sluit met CTRL-d).

System info

uname                   systeem informatie
dmesg                   geeft boot messages
lsb_release -a		geeft informatie over Linux systeem (versie, dist)
/etc/issue		geeft vaak Linux versie
who -r			huidig runlevel
lshw			hardware informatie
lscpu			geeft CPU info

Kopieer OS disk naar een nieuwe disk

  • Voeg nieuwe disk toe
  • Nieuwe partitie indeling + formateren
  • Mount partities op /mnt. Maak ook de subdir's aan en mount deze ook
  • Kopieer data: tar clpf - -X /root/excl / | (cd /mnt/; tar xpvf -)
  • /selinux kan weg, aanmaken op nieuwe disk: /mnt /proc /sys /dev /run
  • mkswap /dev/sdb7
  • Wijzig nieuwe fstab naar nieuwe UUID’s: blkid
  • Boot manager naar nieuwe disk. Voer kopje hieronder uit.
  • Umount alles onder /mnt
  • Shutdown en oude disk verwijderen.

excl file:

/proc
/sys
/dev
/mnt
/run

Nieuwe boot disk

mount /dev/sdb1 /mnt (sdb1 is de nieuwe root disk met de /boot dir.)
grub-install --boot-directory=/mnt/boot /dev/sdb
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /dev /mnt/dev
chroot /mnt update-grub

Standaard diskruimte

Vergroot waar nodig:
#1 prim			1 GB		/
#5 log			6.1 GB		/usr
#6 log			2.9 GB		/var
#7 log			1 GB		swap
#8 log			512 MB		/tmp
#9 log			rest		/home

Video streaming

streamer
ffmpeg

Overig

> /dev/pts/1            output naar ander console
last                    laatst ingelogde gebruikers
sysctl                  kernel parameters lezen/wijzigen (ook sysctl.conf)
linphonec               commandline SIP
regular expression:     ^ (begin regel), $ (eind regel)

DNS

dig @A.ROOT-SERVERS.NET . ns > /etc/bind/db.root                updaten BIND root DNS servers

Postgres

backup database:
pg_dump -f support.db -Fc support

restore database:
pg_restore -d support support.db

MySQL

Create a new database:
mysqladmin -u root -p create databasename

Log in and set the access database rights:
mysql -u root -p

At the MySQL prompt, set the permissions using the following command: 
GRANT ALL ON `user`.* TO 'user'@'localhost' IDENTIFIED BY 'passwd';

Change passwd:
mysqladmin -u user_name -h host_name password "newpwd"

Backup database:
mysqldump -u user -p --databases databasename > sql-script

Restore database:
mysql -u user -p databasename < sql-script