Linux

Logcheck rule additions to Debian Jessie 8.
Logcheck rule additions to Debian Stretch 9.

Handige Linux commando's:

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: $`"
!commando               voert laatste  uit.
$?                      geeft exit code van laatste commando.
alias			alias naar een commando configureren, ook bv met een default optie

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
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.

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.

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

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) 

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

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