2014-07-04
These notes were written with some prior knowledge of Linux and therefore may just represent some horrendous knowledge gaps of mine. Thanks to Dave from the tutoriaLinux yt-channel; check out his videos. See Github for nicer formatting.
pwd - print working directory
rmdir - remove dir (empty)
man program - manual
ls -s - symbolic link
head - first 10 lines of file (default)
tail - last 10 lines of file (default)
tail -f /var/log/dmesg - follow the ende of the file (useful for logs)
poweroff – init 0 / init 6 - shutdown / restart
cp - copy
cd ../../.. - go up 3 directories
ls -lh - long list human readable
sudo -i - interactive root session
wc -l - count stuff
df -h - list mounted devices (human readable)
cut -d: -f2 - take some (piped) input, look for delimiter “:”, take stuff from second field; so Key1: Value1 will return Value1 sort -bf - sort by first letter
uniq - print only unique
wc - word count
grep - searching, finding, filtering (powerful, learn more) which - shows the full path of (shell) commands whereis - where is a command (binary, source, manual) locate - find files by name
cat /etc/network/interfaces - list network devices/interfaces
| - pipe character
echo "hello world" > hello.txt - write things to file; truncates before writing
echo "hello world" >> hello.txt - appends output
there are three channels: 0 - Standard Input (STDIN), 1 - Standard Output (STDOUT) and 2 - Standard Error (STDERR)
to catch STDERR –> 2> (channel two), e.g. ls -lh someNoneExistingFile.txt 2> action.log
input redirection: mail -s "this is a test" thomas < message.txt
ps | less - show all processes and pipe it into the program less which shows big texts in way which is easy to navigate
&& - check if left command is successful, then execute the right command
ls file.txt && echo "Success." > Success
ls wrongfile.tct && echo “Success.” > Error
:wq! - write, quit, don’t prompt me
apt-cache search ... - search for package (Ubuntu/Debian)
apt-get remove ... - remove package
apt-get autoremove - clean up unneeded packages
ps aux | grep "process name" - get info about process
kill PID - kill process (SIGTERM = 15) with specified PID
pkill -u USERNAME - kill process of user
nice -n 15 program - start a program with low priority (19 = lowest; -20 highest)
renice -5 PID - change niceness (aka priority) of process
/proc - directory of all processes which is managed by the kernel and holds all the information about processes (in sort of files)
man hier - man page on filesystem hierarchy (overview on filesystem)
udevd - device daemon
Places
/bin - binaries for applications/boot - boot images/dev - devices/etc - configuration data for applications/home/lib / /lib64 - shared libraries* /mnt - mount/proc - process directory (informations about running processes)/opt - optional software, no clear convention using this/sbin - system binaries/tmp - temporary files, cleaned on restart/usr - non-essential binaries/var/log - system logsabsolute and relative paths: /home/user/downloads and downloads/
Filetypes (with flag/first bit on ls -l)
Regular file (-) Directory (d)
Character Device (c)
Block Device (b)
Local Domain Socket (s)
Named Pipe (p)
Symbolic Link (l)
File permissions
rwx rw- r-- - owner read/write/execute group read/write anyone read
chmod 777 - rwx for owner, group, anyone
chmod 666 - rw- for owner, group, anyone
chmod 444 - r-- for owner, group, anyone
chmod 000 - --- for owner, group, anyone
when operating with LXC one should be root; even basic stuff like lxc-ls will need root privileges
/var/cache/lxc/distro - contains the cached images needed for creation of a LXC
/var/lib/lxc/ - contains files for every created container (including rootfs)
/var/lib/lxc/myfirstcontainer/config - config file (see man 5 lxc.container.conf
lxc-create -t ubuntu -n myfirstcontainer - type = ubuntu, name = myfirstcontainer; note: type takes host system defaults if not otherwise specified regarding architecture and what not; note further: will do a net install which is stored
lxc-ls --fancy - list running machines
lxc-start -n myfirstcontainer -d - start LXC in daemon mode; doesn’t hog up the current shell session, starts in background; connect via SSH to IPV4
lxc-stop -n myfirstcontainer -k - stop plus kill
lxc-freeze -n myfirstcontainer - freezes the proccess
lxc-attach -n myfirstcontainer - attaches current shell to container (avoiding to SSH in)