Useful Linux Command Line Stuff: Difference between revisions

From Ideasplace
Jump to navigation Jump to search
Created page with "==Networking== *Get the IP address of all interfaces **networkctl status *Display all IP addresses of the host - hostname -I *Enable/disable interface - ip link set <interface> up *ip link set <interface> down *Manage firewall rules **enable firewall: sudo ufw enable **list rules: sudo ufw status **allow port: sudo ufw allow <port> **deny port: sudo ufw deny <port> *Connect remotely through SSH **ssh <user>@<host IP> Packages Search for packages apt search <string> sna..."
 
 
(53 intermediate revisions by the same user not shown)
Line 1: Line 1:
__NOTOC__
Most of the Information below is from the 2020 Canonical Ubuntu Server Pro Tips guide (no longer available)
{| class="wikitable"
|'''In development:''' This page is very much in development and needa much work - send any suggestions to us via the normal channels!
Note that some shells and distributions may vary in their syntax and so some commands may not work or be available (by default). Always read the relevant documentation for your distro before working on a live machine.
|}
==Commands to Manipulate Files==
====List files====
:<code>ls</code>
====List files with permissions and dates====
:<code>ls -al</code>
====create empty====
:<code>touch <filename></code>
====create with content====
:<code>echo "<content>" > <filename></code>
====append content====
:<code>echo "<content>" >> <filename></code>
====display a text file====
:<code>cat <file></code>
====copy====
:<code>cp <file> <target filename></code>
====move/rename====
:<code>mv <file> <target directory/filename></code>
====delete====
:<code>rm <file></code>
====Create a directory====
:<code>mkdir <directory></code>
====Create directories recursively====
:<code>mkdir -p <directory1>/<directory2></code>
====Delete a directory recursively====
:<code>rm -r <directory></code>
====Quick file search====
:<code>locate <q></code>
====Search string in file====
:<code>grep <string> <filename></code>
====Search string recursively in directory====
:<code>grep -Iris <string> <directory></code>
====Find files modified in the last n minutes====
:<code>find <directory> -mmin -<n> -type f</code>
::eg. <code>find . -mmin -5 -type f</code>
====Show only the nth column====
:<code>col<n> “<separator>” <filename></code>
:eg. <code>col2 “,” foo.csv</code>
====Display file paginated====
:<code>less <filename></code>
====Display first n lines====
:<code>head -n <n> <filename></code>
====Display last n lines====
:<code>tail -n <n> <filename></code>
====Follow file content as it increases====
:<code>tail -f <filename></code>
====Pack a directory into an archive====
:zip - <code>zip -r <target> <source dir></code>
:tar.gz - <code>tar cvzf <target>.tar.gz <source dir></code>
====Unpack an archive====
:zip - <code>unzip <zip file></code>
:tar.gz - <code>tar xf <tar.gz file></code>
====Copy file to remote server====
:<code>scp <filename> <user@server>====<destination></code>
::eg. <code>scp config.yaml admin@192.0.0.0====/config</code>
====Copy directory recursively from remote server====
:<code>scp -r <user@server>====<source> <destination></code>
::eg. <code>scp -r admin@192.0.0.0====/config /tmp</code>
==Networking==
==Networking==
*Get the IP address of all interfaces
====Get the IP address of all interfaces====
**networkctl status
:<code>networkctl status</code>
*Display all IP addresses of the host - hostname -I
 
*Enable/disable interface - ip link set <interface> up
====Display all IP addresses of the host====
*ip link set <interface> down
:<code>hostname -I</code>
*Manage firewall rules
 
**enable firewall: sudo ufw enable
====Enable/disable interface====
**list rules: sudo ufw status
:<code>ip link set <interface> up</code>
**allow port: sudo ufw allow <port>
:<code>ip link set <interface> down</code>
**deny port: sudo ufw deny <port>
 
*Connect remotely through SSH
====Manage firewall rules====
**ssh <user>@<host IP>
:enable firewall: <code>sudo ufw enable</code>
:list rules: <code>sudo ufw status</code>
:allow port: <code>sudo ufw allow <port></code>
:deny port: <code>sudo ufw deny <port></code>
 
====Connect remotely through SSH====
:<code>ssh <user>@<host IP></code>
 
==Packages==
====Search for packages====
:<code>apt search <string></code>
:<code>snap find <string></code>
 
====List available updates====
:<code>apt list --upgradable</code>
 
====Apply all available updates====
:<code>sudo apt update && sudo apt upgrade</code>
 
====Install from the Ubuntu archive:====
:<code>sudo apt install <package></code>
 
====Install from the snap store:====
:<code>sudo snap install <package></code>
 
====Which package provides this file?====
:<code>sudo apt install apt-file</code>
:<code>sudo apt-file update</code>
:<code>apt-file <filename or command></code>
 
==Security==
====Show which users are logged in====
:<code>w</code>
====Get password expiration date for <user>====
: <code>chage -l <user></code>
====Set password expiration date for <user>====
: <code>sudo chage <user></code>
====Lock a user account====
: <code>sudo passwd -l <user></code>
====Unlock a user account====
: <code>sudo passwd -u <user></code>
====List open ports and associated processes====
: <code>sudo netstat -tulpn</code>
 
====Automatically detect and ban abusive IP addresses====
:<code>sudo apt install fail2ban</code>
====Show banned IP addresses====
:<code>sudo fail2ban-client status</code>
:<code>sudo fail2ban-client status <jail></code>
 
====Get the support status for installed packages====
: <code>ubuntu-support-status</code>
 
====Enable kernel live patching: ====
:<code>sudo snap install canonical-livepatch</code>
:<code>sudo canonical-livepatch enable <token></code>
 
Visit ubuntu.com/livepatch to get a free token for up to 3 machines.


==System==
====Display kernel version====
:<code>uname -r</code>
====Get disk usage====
:<code>df -h</code>
====Get memory usage====
:<code>cat /proc/meminfo</code>
====Get system time====
:<code>timedatectl status</code>
====Set system timezone====
:<code>timedatectl list-timezones</code>
:<code>sudo timedatectl set-timezone <zone></code>
====Get all running services====
:<code>systemctl --state running</code>
====Start or stop a service====
:<code>service <service> start/stop</code>
====Monitor new logs for a service====
:<code>journalctl -u <service> --since now -f</code>


Packages
==Kubernetes and containers==
Search for packages
====Install MicroK8s and list available add-ons====
apt search <string>
:<code>sudo snap install microk8s --classic</code>
snap find <string>
:<code>microk8s.status --wait-ready</code>
List available updates
====Enable a MicroK8s add-on====
apt list --upgradable
:<code>microk8s.enable <service></code>
Apply all available updates
====View MicroK8s nodes and running services====
sudo apt update && sudo apt upgrade
:<code>microk8s.kubectl get nodes</code>
Install from the Ubuntu archive:
:<code>microk8s.kubectl get services</code>
sudo apt install <package>
====Launch a LXD container====
Install from the snap store:
:<code>lxd init</code>
sudo snap install <package>
:<code>lxc launch ubuntu:18.04 <container name></code>
Which package provides this file?
====Or another distro====
sudo apt install apt-file
:<code>lxc launch images:centos/8/amd64 <container name></code>
sudo apt-file update
====Get a shell inside a LXD container====
apt-file <filename or command>
:<code>lxc exec <name> -- /bin/bash</code>
====Push a file to a LXD container====
:<code>lxc file push <filename> <container name>/<path></code>
====Pull a file from a LXD container====
:<code>lxc file pull <destination> <container name>/<file path></code>


Files
==Virtualisation==
List files
====Install Multipass and launch an Ubuntu VM====
ls
:<code>sudo snap install multipass --classic</code>
List files with permissions and dates
:<code>multipass launch <image> --name <VM name></code>
ls -al
::Omitting <image> will launch a VM withthe latest Ubuntu LTS
Common file operations
====Find available images====
create empty: touch <filename>
:<code>multipass find</code>
create with content: echo "<content>" > <filename>
append content: echo "<content>" >> <filename>
display a text file: cat <file>
copy: cp <file> <target filename>
move/rename: mv <file> <target directory/filename>
delete: rm <file>
Create a directory
mkdir <directory>
Create directories recursively
mkdir -p <directory1>/<directory2>
Delete a directory recursively
rm -r <directory>
Quick file search
locate <q>
Search string in file
grep <string> <filename>
Search string recursively in
directory
grep -Iris <string> <directory>
Find files modified in the last n minutes
find <directory> -mmin -<n> -type f
eg. find . -mmin -5 -type f
Show only the nth column
col<n> “<separator>” <filename>
eg. col2 “,” foo.csv
Display file paginated
less <filename>
Display first n lines
head -n <n> <filename>
Display last n lines
tail -n <n> <filename>
Follow file content as it increases
tail -f <filename>
Pack a directory into an archive
zip: zip -r <target> <source dir>
tar.gz: tar cvzf <target>.tar.gz <source dir>
Unpack an archive
zip: unzip <zip file>
tar.gz: tar xf <tar.gz file>
Copy file to remote server
scp <filename> <user@server>:<destination>
eg. scp config.yaml admin@192.0.0.0:/config
Copy directory recursively
from remote server
scp -r <user@server>:<source> <destination>
eg. scp -r admin@192.0.0.0:/config /tmp


Security
====List existing VMs====
Show which users are logged in
:<code>multipass list</code>
w
====Get a shell inside a VM====
Get password expiration date for
:<code>multipass shell <VM name></code>
<user>
chage -l <user>
Set password expiration
date for <user>
sudo chage <user>
Lock a user account
sudo passwd -l <user>
Unlock a user account
sudo passwd -u <user>
List open ports and associated
processes
sudo netstat -tulpn


Automatically detect and ban
==OpenStack==
abusive IP addresses
====Install OpenStack and launch an instance====
sudo apt install fail2ban
:<code>sudo snap install microstack --classic</code>
Show banned IP addresses
:<code>sudo microstack.init</code>
sudo fail2ban-client status
:<code>microstack.launch</code>
sudo fail2ban-client status <jail>
::The Horizon dashboard is available at <code>10.20.20.1</code>
Get the support status for installed
::Default credentials: <code>admin / keystone</code>
packages
ubuntu-support-status
Enable kernel live patching
sudo snap install canonical-livepatch
sudo canonical-livepatch enable <token>
Visit ubuntu.com/livepatch to get a
free token for up to 3 machines.

Latest revision as of 12:57, 10 July 2024

Most of the Information below is from the 2020 Canonical Ubuntu Server Pro Tips guide (no longer available)

In development: This page is very much in development and needa much work - send any suggestions to us via the normal channels!

Note that some shells and distributions may vary in their syntax and so some commands may not work or be available (by default). Always read the relevant documentation for your distro before working on a live machine.

Commands to Manipulate Files

List files

ls

List files with permissions and dates

ls -al

create empty

touch <filename>

create with content

echo "<content>" > <filename>

append content

echo "<content>" >> <filename>

display a text file

cat <file>

copy

cp <file> <target filename>

move/rename

mv <file> <target directory/filename>

delete

rm <file>

Create a directory

mkdir <directory>

Create directories recursively

mkdir -p <directory1>/<directory2>

Delete a directory recursively

rm -r <directory>

Quick file search

locate

Search string in file

grep <string> <filename>

Search string recursively in directory

grep -Iris <string> <directory>

Find files modified in the last n minutes

find <directory> -mmin -<n> -type f
eg. find . -mmin -5 -type f

Show only the nth column

col<n> “<separator>” <filename>
eg. col2 “,” foo.csv

Display file paginated

less <filename>

Display first n lines

head -n <n> <filename>

Display last n lines

tail -n <n> <filename>

Follow file content as it increases

tail -f <filename>

Pack a directory into an archive

zip - zip -r <target> <source dir>
tar.gz - tar cvzf <target>.tar.gz <source dir>

Unpack an archive

zip - unzip <zip file>
tar.gz - tar xf <tar.gz file>

Copy file to remote server

scp <filename> <user@server>====<destination>
eg. scp config.yaml admin@192.0.0.0====/config

Copy directory recursively from remote server

scp -r <user@server>====<source> <destination>
eg. scp -r admin@192.0.0.0====/config /tmp

Networking

Get the IP address of all interfaces

networkctl status

Display all IP addresses of the host

hostname -I

Enable/disable interface

ip link set <interface> up
ip link set <interface> down

Manage firewall rules

enable firewall: sudo ufw enable
list rules: sudo ufw status
allow port: sudo ufw allow <port>
deny port: sudo ufw deny <port>

Connect remotely through SSH

ssh <user>@<host IP>

Packages

Search for packages

apt search <string>
snap find <string>

List available updates

apt list --upgradable

Apply all available updates

sudo apt update && sudo apt upgrade

Install from the Ubuntu archive:

sudo apt install <package>

Install from the snap store:

sudo snap install <package>

Which package provides this file?

sudo apt install apt-file
sudo apt-file update
apt-file <filename or command>

Security

Show which users are logged in

w

Get password expiration date for <user>

chage -l <user>

Set password expiration date for <user>

sudo chage <user>

Lock a user account

sudo passwd -l <user>

Unlock a user account

sudo passwd -u <user>

List open ports and associated processes

sudo netstat -tulpn

Automatically detect and ban abusive IP addresses

sudo apt install fail2ban

Show banned IP addresses

sudo fail2ban-client status
sudo fail2ban-client status <jail>

Get the support status for installed packages

ubuntu-support-status

Enable kernel live patching:

sudo snap install canonical-livepatch
sudo canonical-livepatch enable <token>

Visit ubuntu.com/livepatch to get a free token for up to 3 machines.

System

Display kernel version

uname -r

Get disk usage

df -h

Get memory usage

cat /proc/meminfo

Get system time

timedatectl status

Set system timezone

timedatectl list-timezones
sudo timedatectl set-timezone <zone>

Get all running services

systemctl --state running

Start or stop a service

service <service> start/stop

Monitor new logs for a service

journalctl -u <service> --since now -f

Kubernetes and containers

Install MicroK8s and list available add-ons

sudo snap install microk8s --classic
microk8s.status --wait-ready

Enable a MicroK8s add-on

microk8s.enable <service>

View MicroK8s nodes and running services

microk8s.kubectl get nodes
microk8s.kubectl get services

Launch a LXD container

lxd init
lxc launch ubuntu:18.04 <container name>

Or another distro

lxc launch images:centos/8/amd64 <container name>

Get a shell inside a LXD container

lxc exec <name> -- /bin/bash

Push a file to a LXD container

lxc file push <filename> <container name>/<path>

Pull a file from a LXD container

lxc file pull <destination> <container name>/<file path>

Virtualisation

Install Multipass and launch an Ubuntu VM

sudo snap install multipass --classic
multipass launch <image> --name <VM name>
Omitting <image> will launch a VM withthe latest Ubuntu LTS

Find available images

multipass find

List existing VMs

multipass list

Get a shell inside a VM

multipass shell <VM name>

OpenStack

Install OpenStack and launch an instance

sudo snap install microstack --classic
sudo microstack.init
microstack.launch
The Horizon dashboard is available at 10.20.20.1
Default credentials: admin / keystone