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