Linux: Postgresql
Check PostgreSQL version:
psql –version
Log into PostgreSQL. Login as default user i.e. postgres with password password_of_your_ubuntu_system:
sudo -u postgres psql
Create a new user for PostgreSQL and assign a password to it. Since it is not considered a good practice to persist your data in PostgreSQL through the default user i.e. postgres, we will create a new user and assign a password to it. It can be done by 2 possible ways:
First way:
sudo -u postgres createuser –interactive
Here, you would be asked name of the role/user, if you want to assign superuser privileges to the new user or not; and if not whether the user be allowed to create databases and new roles.
After creating the user, login to PostgreSQL console via the default user i.e. postgres and then alter the password for the user via following command (assuming the new user/role you created is lihas):
ALTER USER lihas WITH PASSWORD ‘lihas’;
Note: In case the name of your user contains capital letters, wrap the username into double quotes while performing all user related operations like:
ALTER USER “LiHaS” WITH PASSWORD ‘lihas’;
Second way:
Log into PostgreSQL console via the default user ie ‘postgres’ and then create the user:
CREATE USER lihas WITH PASSWORD ‘lihas’; –Assuming the new user/role we want to create is lihas
ALTER USER lihas WITH CREATEDB; –user lihas con create databases
ALTER USER lihas WITH CREATEUSER; –user lihas con create new users/roles
Note: According to the convention, whenever a new user is created; a database with the same name as the new username must be created and this database shall not be used to store data. You may create the database by following command 10 below.
List all users in PostgreSQL:
\du
Switch to a user:
SET ROLE user_name;
Check current user:
SELECT CURRENT_USER;
Delete a user/role:
DROP USER user_name;
List all databases:
\l
Create database:
CREATE DATABASE lihas_db;
By default, the owner of any database you create is postgres, if you want your database to belong to a specific user, switch to that user (see above) and then create the database.
Enter a database. Enter inside database via the default user:
\c database_name
…or…
\connect database_name
Enter inside the database with a specific user:
\c database_name user_name
If the above command does not work (Peer authentication failed), simply change the database first and then switch to the user (see command 6 above).
Note: You may also log in directly into a database with a certain user from the terminal by following command (with password as password_of_your_ubuntu_system).
sudo -u role_name psql db_name
But for this command to work, role_name must be a valid Linux user name. You may add a user to Linux by following :
sudo adduser role_name;
Drop database:
DROP DATABASE db_name;
List all tables:
\d
Describe schema of a table:
\d table_name
Exit out of PostgreSQL:
\q
Linux: Docker cheat sheet
Docker images
list:
docker images
run image:
docker run full/image/name:version
docker commit changes:
docker commit container-id full/image/name:version
removing images (linked containers need removed first)
docker rmi image-id
save container:
docker export container-id > imagename.tar
load an container:
cat imagename.tar | docker import – full/image/name:version
save image:
docker save full/image/name:version > imagename.tar
load an image:
sudo docker load < imagename.tar
━━━━━━━━━━━━━━━━━━
Docker containers
list:
docker ps -a
execute something within a container:
docker exec -it container-id /bin/bash
run detached:
docker run -d
docker run -it imagename /bin/bash (interacively start bash)
stop a container:
docker stop container-id
removing container
docker rm container-id
Detaching from a container and leave it running
Ctrl+p, Ctrl+q will now turn interactive mode into daemon mode.
Attach to a container
docker attach container-id
Connect inside a container
docker exec -it container-id /bin/bash
Automatically remove a container on exit
docker run –rm -it imagename /bin/bash
━━━━━━━━━━━━━━━━━━
Example Commands Explained
docker run -d -p 5901:5901 -v /etc/machine-id:/etc/machine-id fedora/firefox:version3
docker run -d(detaches the images bringing you back to the host machines command prompt after the container starts) -p(attaches the host ports to the image ports) -v(mounts the local machine ID to the container machine ID) runs a new container off of the image.
docker ps -a
docker ps(list containers and their information including the ID) -a(all)
docker exec -it a42c2a44b79f /bin/bash
docker exec(execute a command in a container) -i(interactive – Keep STDIN open even if not attached) -t(tty – Allocate a pseudo-TTY or a pty) container-id
docker stop a42c2a44b79f
docker stop(Stop the container. The container will be forced stoppeed within 10 seconds unless a delay is specified) container-id
docker rm a42c2a44b79f
docker rm(remove a container) container-id
Linux: Allow root to run graphical applications
Linux: tmux shortcuts & cheatsheet
start new:
tmux
start new with session name:
tmux new -s myname
attach:
tmux a # (or at, or attach)
attach to named:
tmux a -t myname
list sessions:
tmux ls
kill session:
tmux kill-session -t myname
Kill all the tmux sessions:
tmux ls | grep : | cut -d. -f1 | awk '{print substr($1, 0, length($1)-1)}' | xargs kill
In tmux, hit the prefix ctrl+b (my modified prefix is ctrl+a) and then:
Sessions
:new<CR> new session
s list sessions
$ name session
Windows (tabs)
c create window
w list windows
n next window
p previous window
f find window
, name window
& kill window
Panes (splits)
% vertical split
" horizontal split
o swap panes
q show pane numbers
x kill pane
+ break pane into window (e.g. to select text by mouse to copy)
- restore pane from window
⍽ space - toggle between layouts
<prefix> q (Show pane numbers, when the numbers show up type the key to goto that pane)
<prefix> { (Move the current pane left)
<prefix> } (Move the current pane right)
<prefix> z toggle pane zoom
Sync Panes
You can do this by switching to the appropriate window, typing your Tmux prefix (commonly Ctrl-B or Ctrl-A) and then a colon to bring up a Tmux command line, and typing:
:setw synchronize-panes
You can optionally add on or off to specify which state you want; otherwise the option is simply toggled. This option is specific to one window, so it won’t change the way your other sessions or windows operate. When you’re done, toggle it off again by repeating the command. tip source
Resizing Panes
You can also resize panes if you don’t like the layout defaults. I personally rarely need to do this, though it’s handy to know how. Here is the basic syntax to resize panes:
PREFIX : resize-pane -D (Resizes the current pane down)
PREFIX : resize-pane -U (Resizes the current pane upward)
PREFIX : resize-pane -L (Resizes the current pane left)
PREFIX : resize-pane -R (Resizes the current pane right)
PREFIX : resize-pane -D 20 (Resizes the current pane down by 20 cells)
PREFIX : resize-pane -U 20 (Resizes the current pane upward by 20 cells)
PREFIX : resize-pane -L 20 (Resizes the current pane left by 20 cells)
PREFIX : resize-pane -R 20 (Resizes the current pane right by 20 cells)
PREFIX : resize-pane -t 2 20 (Resizes the pane with the id of 2 down by 20 cells)
PREFIX : resize-pane -t -L 20 (Resizes the pane with the id of 2 left by 20 cells)
Copy mode:
Pressing PREFIX [ places us in Copy mode. We can then use our movement keys to move our cursor around the screen. By default, the arrow keys work. we set our configuration file to use Vim keys for moving between windows and resizing panes so we wouldn’t have to take our hands off the home row. tmux has a vi mode for working with the buffer as well. To enable it, add this line to .tmux.conf:
setw -g mode-keys vi
With this option set, we can use h, j, k, and l to move around our buffer.
To get out of Copy mode, we just press the ENTER key. Moving around one character at a time isn’t very efficient. Since we enabled vi mode, we can also use some other visible shortcuts to move around the buffer.
For example, we can use "w" to jump to the next word and "b" to jump back one word. And we can use "f", followed by any character, to jump to that character on the same line, and "F" to jump backwards on the line.
Function vi emacs
Back to indentation ^ M-m
Clear selection Escape C-g
Copy selection Enter M-w
Cursor down j Down
Cursor left h Left
Cursor right l Right
Cursor to bottom line L
Cursor to middle line M M-r
Cursor to top line H M-R
Cursor up k Up
Delete entire line d C-u
Delete to end of line D C-k
End of line $ C-e
Goto line : g
Half page down C-d M-Down
Half page up C-u M-Up
Next page C-f Page down
Next word w M-f
Paste buffer p C-y
Previous page C-b Page up
Previous word b M-b
Quit mode q Escape
Scroll down C-Down or J C-Down
Scroll up C-Up or K C-Up
Search again n n
Search backward ? C-r
Search forward / C-s
Start of line 0 C-a
Start selection Space C-Space
Transpose chars C-t
Misc
d detach
t big clock
? list shortcuts
: prompt
Configurations Options:
# Mouse support - set to on if you want to use the mouse
* setw -g mode-mouse off
* set -g mouse-select-pane off
* set -g mouse-resize-pane off
* set -g mouse-select-window off
# Set the default terminal mode to 256color mode
set -g default-terminal "screen-256color"
# enable activity alerts
setw -g monitor-activity on
set -g visual-activity on
# Center the window list
set -g status-justify centre
# Maximize and restore a pane
unbind Up bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp