List of essential Linux commands for server management

post, Aug 1, 2021, on Mitja Felicijan's blog

Generate SSH key

ssh-keygen -t ed25519 -C "[email protected]"

# when no support for Ed25519 present
ssh-keygen -t rsa -b 4096 -C "[email protected]"

Note: By default SSH keys get stored to /home/<username>/.ssh/ folder.

Login to host via SSH

# connect to host as your local username
ssh host

# connect to host as user
ssh <user>@<host>

# connect to host using port
ssh -p <port> <user>@<host>

Execute command on a server through SSH

# execute one command
ssh [email protected] "ls /root"

# execute many commands
ssh [email protected] "cd /root;touch file.txt"

Displays currently logged in users in the system

w

Displays Linux system information

uname

Displays kernel release information

uname -r

Shows the system hostname

hostname

Shows system reboot history

last reboot

Displays information about the user

sudo apt install finger
finger <username>

Displays IP addresses and all the network interfaces

ip addr show

Downloads a file from an online source

wget https://example.com/example.tgz

Note: If URL contains ?, & enclose the URL in double quotes.

Compress a file with gzip

# will not keep the original file
gzip file.txt

# will keep the original file
gzip --keep file.txt

Interactive disk usage analyzer

sudo apt install ncdu

ncdu
ncdu <path/to/directory>

Install Node.js using the Node Version Manager

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
source ~/.bashrc

nvm install v13

Too long; didn't read

npm install -g tldr

tldr tar

Combine all Nginx access logs to one big log file

zcat -f /var/log/nginx/access.log* > /var/log/nginx/access-all.log

Set up Redis server

sudo apt install redis-server redis-tools

# check if server is running
sudo service redis status

# set and get a key value
redis-cli set mykey myvalue
redis-cli get mykey

# interactive shell
redis-cli

Generate statistics of your webserver

sudo apt install goaccess

# check if installed
goaccess -v

# combine logs
zcat -f /var/log/nginx/access.log* > /var/log/nginx/access-all.log

# export to single html
goaccess \
  --log-file=/var/log/nginx/access-all.log \
  --log-format=COMBINED \
  --exclude-ip=0.0.0.0 \
  --ignore-crawlers \
  --real-os \
  --output=/var/www/html/stats.html

# cleanup afterwards
rm /var/log/nginx/access-all.log

Search for a given pattern in files

grep -r ‘pattern’ files

Find proccess ID for a specific program

pgrep nginx

Print name of current/working directory

pwd

Creates a blank new file

touch newfile.txt

Displays first lines in a file

# -n <x> presents the number of lines (10 by default)
head -n 20 somefile.txt

Displays last lines in a file

# -n <x> presents the number of lines (10 by default)
tail -n 20 somefile.txt

# -f follows the changes in file (doesn't closes)
tail -f somefile.txt

Count lines in a file

wc -l somefile.txt

Find all instances of the file

sudo apt install mlocate

locate somefile.txt

Find file names that begin with ‘index’ in /home folder

find /home/ -name "index"

Find files larger than 100MB in the home folder

find /home -size +100M

Displays block devices related information

lsblk

Displays free space on mounted systems

df -h

Displays free and used memory in the system

free -h

Displays all active listening ports

sudo apt install net-tools

netstat -pnltu

Kill a process violently

kill -9 <pid>

List files opened by user

lsof -u <user>

Execute "df -h", showing periodic updates

# -n 1 means every second
watch -n 1 df -h

Other posts

DateTitle
Fix bind warning in .profile on login in Ubuntu
Create placeholder images with sharp Node.js image processing library
LED technology might not be as eco-friendly as you think
Profiling Python web applications with visual tools
Simple IOT application supported by real-time monitoring and data history
Using DigitalOcean Spaces Object Storage with FUSE
List of essential Linux commands for server management
Golang profiling simplified
Getting started with MicroPython and ESP8266
Using GoAccess with Nginx to replace Google Analytics