I like to jot down the things I learn as I go along; it helps me to remember. I’ve reproduced this list of useful shell commands which will hopefully grow over time, to represent those I have encountered. I figure if I write them here, they might be of use to others too.
acpi
acpi is a system power management tool
OPTIONS
-b #display battery info
-a #display ac adapter info
-t #thermal info
-c #display cooling device info
-s #show non-operational devices
-f show temp in fahrenheit not celsius
-l #additional details eg battery capacity and thermal trip point
alias
#enter in command line
alias
#prints a list of current command aliases
alias mycommand='command'
#creates an alias mycommand, which when entered will run command
alias grep='grep --color=auto'
#when running grep, command will automatically highlight output
#the unalias command unsets an alias
#running a command preceded by \ ignores aliasing
apt-cache
operates on the apt cache, updated with apt-get
apt-cache search noobot server
#searches packages in the cache for the noobot and server keywords
apt-cache depends noobot
#lists the dependencies for the noobot package
apt-cache show noobot
#displays detailed status information on package noobot
apt-get
Debian package manager which automatically resolves dependencies
apt-get update
#updates cache of available packages
apt-get install noobot
#installs the noobot package or upgrades it if already installed
apt-get --only-upgrade install noobot
#only upgrades noobot package if already installed
apt-get upgrade
#upgrades all packages on the system. run apt-get update first.
apt-get remove noobot
#removes noobot package but keeps configuration files
apt-get purge noobot
#removes noobot package completely from system
ascii
Displays ascii character set
at
Command to schedule one off jobs. Must be installed, and the atd service must be running.
at TIME
#opens an at> prompt for entry of command. Scheduling is confirmed with Ctrl-D
TIME is in the format:
midnight
noon
tomorrow #adds +24 hrs to current time
next week #adds 7 days to current time
1730 #specified time in 24hr clock format
5:30 PM June 27 #specified 12hr clock time and date
now + 2 hours
now + 5 days
at -f noobot.txt tomorrow
#reads command to be executed from a file and schedules for 24hrs from now
at -mf noobot.txt tomorrow
#mails user once job is complete
atd
configure at and batch commands
atd -l
#allows setting of load threshold for batch
atq
Displays list of jobs scheduled using the at command. If run as root, displays all user scheduled jobs.
Jobs are listed with fields containing:
Job Number
Date
Time
Queue
User
atrm
Removes jobs scheduled using at command
atrm 2
#removes job number 2
batch
Command for scheduling jobs according to system load. By default this is below 0.8 (80% of CPU usage)
batch
#opens at> prompt for the command input that will be executed
batch -f mrnoobot
#executes commands from file once threshold is passed
blkid
display UUID, TYPE and LABEL of a device, required for mounting in /etc/stab
blkid /dev/sdb1
cal
cal
#calendar command
cal 2020
#prints a calendar of the year 2020
chage
Modifying password aging settings for existing accounts. To amend defaults use the /etc/login.defs file
chage -M 30 mrnoobot
#force mrnoobot to change password every 30 days
chage -m 5 mrnoobot
#force mrnoobot to wait 5 days after password change before password can be changed again
chage -W 3 mrnoobot
#gives mrnoobot a warning message 3 days before password expiry
chage -I 5 mrnoobot
#gives mrnoobot a 5 day grace period after password expiry before account is rendered inactive (requiring admin intervention)
chage -E '2025-12-25' mrnoobot
#set mr noobot password to expire on a specific date
chage -l mrnoobot
#list password policy for mrnoobot
chfn
changes the comment field in the users /etc/passwd entry
chgrp – change group
the chgrp command changes the group owner of a file and requires either owner or admin privileges.
(sudo) chgrp noobgrp noobfile.txt
#changes the group owner of noobfile.txt to noobgrp
chkconfig
view service status by runlevel
chkconfig --list
#lists all services and their status at the 7 runlevels
chkconfig --list httpd
#list httpd service and its status at the 7 runlevels
chkconfig httpd on
#sets httpd to ON for runlevel 2-5 inclusive and OFF for 0,1,6
chkconfig --level 34 httpd on
#sets httpd to ON on runlevels 3 and 4
chkconfig --level 012 httpd off
#sets httpd to OFF on runlevels 0, 1 and 2
chkconfig --add httpd
#where httpd is a new service, must be run before using chkconfig options (normally done automatically on install)
chkconfig --delete httpd
#removes all links for httpd service (normally done automatically on uninstall)
chmod – change modes of access
chmod is used to amend file permissions
SYMBOLIC SYNTAX (single file)
chmod
u #user owner
g #group owner
o #others
a #all
+ #add permission
= #specify permission
- #remove permission
r #read permission
w #write permission
x #execute permission
s COMMAND #set executable to run as user/group owner instead of user running command - NOTE file must have execute permissions in advance
s DIRECTORY #set any new files/directories created inside the directory to be owned by the directory group owner
t DIRECTORY #set STICKY bit on directory - files inside can only be removed by user owner or root
chmod a+x noobfile
#ADDS execute permissions to all users for noobfile
chmod u=rw,g=rw,o=r noobfile
#SPECIFIES rw user, rw group and r others permissions to noobfile
chmod ug+x, o-r noobfile
#ADDS rw permissions for user & group, removes read permissions for others
OCTAL SYNTAX
chmod 777 noobfile
#specifies full permissions to user, group and others
7 - rwx
6 - rw-
5 - r-x
4 - r--
3 - -wx
2 - -w-
1 - --x
0 - ---
4000 - set USER special (s) on executable
2000 - set GROUP special on executable or directory
1000 - set sticky bit (t) on directory
chown – change owner
changes ownership of file. Typically requires admin privilege
(sudo) chown root noobfile
#changes user owner of noobfile to root
chronyc
tool to administer the chronyd time service (alternative to Network Time Protocol for use in high latency environment)
chronyc
#opens interactive chrony shell for commands
Commands:
tracking
Displays performance statistics about the system clock
sources
Displays the NTP sources being used for chronyd
activity
Displays the status of NTP sources
settime <TIME>
Manually set the time used for chronyd. The format for settime can be:
hh:mm
hh:mm:ss
Month Day, YYYY hh:mm:ss
Using a command above as an argument to chronyc runs it without interactive mode
crontab
Command that allows user to schedule jobs
crontab -e
#opens current user crontab file or generates template for editing
crontab -l
#displays current user crontab
crontab -r
#remove all current crontab entries
crontab -u mrnoobot -e
#root only - allows editing of another user crontab
date
date
displays the time and date
date -s "07/07/2020 9:20:00"
#set system date to a specific time/date
date "+%m/%d/%y"
#display month, day, year of system date
Format strings:
%d Day of month (e.g., 30)
%H Hour (0-23)
%I Hour (1-12)
%m Month (1-12)
%M Minute (0-59)
%S Seconds (0-60)
%T Time (%H:%M:%S)
%u Day of week (1-7, 1=Monday)
%Y Year
%F Full date; same as %Y-%m-%d
touch noobot_`date +%F`
#create file appended with current system date in filename
dd
can be used to create files of specific size - one use is creation of swapfiles (see mkswap)
dd if=/dev/zero of=/var/noobswap bs=1M count=500
#creates a file called noobswap, filled with zeros, comprising 500 blocks of 1MB in size (500MB total)
declare
declare -x
#displays values of all environment variables
declare -x VARIABLE=value
#declare and export VARIABLE containing value
declare -f
#displays all functions available in current shell
df
df displays information about drives on the Linux machine
df -h
#displays list of currently employed drives, size, free space and mount point
df -hT
#as above but include filesystem type
df -i
#display used and available inodes
dig
performs DNS lookups using /etc/resolv.conf file
dig noobot.com
#simple hostname lookup
dig +trace noobot.com
#show name servers along entire route
dig -x 192.168.1.1
#reverse lookup on IP address
-f noobfile #perform lookups from a file
-p PORT #query port other than default DNS
-4 #use IPv4
-6 #use IPv6
dmesg
displays the kernel ring buffer. Useful for fault finding, for example with disk mount problems
dnf
upgrade of the yum package manager with better dependency resolution
dnf list --available
#list available packages
dnf install PACKAGE
#install package
dnf list --installed
#show installed packages
dpkg
Debian package manager - does not handle dependency resolution
dpkg -i noobot.deb
#install the noobot package
dpkg -r noobot.deb
#remove noobot package but leave configuration files
dpkg -P noobot.deb
#completely purge noobot.deb from system
dpkg -l
#list currently installed packages
dpkg -l '*noobot*'
#list all packages with noobot in the name
dpkg -L noobot
#list files contained in the package noobot
dpkg -S /usr/bin/noobot
#display package that provided noobot file
dpkg -s noobot.deb
#displays status, size, maintaining authority, dependencies and description of noobot.deb package
dpkg-reconfigure
used to reconfigure packages following install
dpkg-reconfigure tzdata
#reconfigures timezone
du
directory usage (recursive by default)
du /home | sort -n | tail -10
#sorts the directory sizes ascending then displays the 10 largest
du -sh /bin /usr/bin
#summary human readable for specified directories
du --exclude=noobot --max-depth=1 Documents
#display directory usage up to one level below Documents but exclude directory noobot
echo
echo <something>
#display something eg
echo $PATH
#display the value of the PATH variable
env
env
#displays values of all environment variables
env TX=GMT date
#runs command date with temporary variable (timezone set to GMT)
ethtool
Tool to display network interface information; commonly used with grep/head/tail to focus output
ethtool -i eth0
#display driver information for eth0
ethtool eth0 | grep Speed
#display speed of eth0
export
export VARIABLE=value
#create an environment variable containing value
export -p
#display values of all environment variables
fdisk
fixed disk management tool - creates and lists partitions
fdisk -l /dev/sda
#list partitions on the sda disk
fdisk -cul
#list all partitions on all devices in sectors in DOS compatible mode
fdisk -cu /dev/sda
#enter interactive mode on the sda disk (engages prompt)
COMMANDS
m #lists available commands
p #display current partition info
n #create new partition
d #delete partition
t #change file system type
w #WRITE CHANGES (NOT REVERSIBLE)
q #quit without saving
finger
displays information about the user from the comment field of /etc/passwd along with home directory and shell paths
finger user
#displays info about user
fsck
file system integrity check
can be set to auto on boot by typing following as root user:
touch /forcefsck
Otherwise must be used on unmounted devices
fsck -f /dev/sdb1
#forces file system check on unmounted device
fsck -b 5575 /dev/sdb1
#file system check pointing to backup superblock if custom
ftp
Used for file transfer protocol operations
ftp 127.0.0.1
#connect to ftp service on 127.0.0.1 and launch ftp> prompt
ftp> lcd
#change local working directory while connected to ftp
ftp> !ifconfig
#run command on the local machine while connected to ftp
ftp> bin
#set file transfer mode to binary (use for non text files)
ftp> get noobfile
#download file from ftp server
ftp> put noobfile
#upload file to ftp server
ftp> mget *.txt
#get multiple files (in this case all txt files)
ftp> quit
#close the connection to the ftp server
fuser
can be used to display processes holding a location open
fuser -v /mnt
#displays users currently using /mnt, the process, PID and purpose
PURPOSES
c #using mount point or subdirectory as current working directory
e #executable that resides in the mount point
f #process has open file from mount point
F #process has open file from mount point and is writing to it
r #process is using mount point as root directory
m #process is mmaped file or shared library
fuser -k /mnt
#terminate all processes using /mnt
fuser -l
#list available signals
fuser -k -KILL /mnt
#kills processes using /mnt
gdisk
GPT disk manager
gdisk /dev/sda1
#list partition information and enter command mode
COMMANDS
? #list commands
n #create new partition
p #display partition table information
v #verify partition
o #create new empty partition
w #WRITE CHANGES (NOT REVERSIBLE)
q #quit without saving
getent (get entries)
Can be used to query admin 'database' files such as /etc/passwd, /etc/shadow, /etc/group
getent group noobgroup
#displays line from /etc/group regarding group noobgroup
getent passwd mrnoobot
#displays line from /etc/passwd regarding user mrnoobot
gpasswd
Administers groups
gpasswd -A mrnoobot mrnoobot
#makes mrnoobot user an admin of the mrnoobot user private group
gpasswd -a mrsnoobot mrnoobot
#makes mrsnoobot a member of the mrnoobot user private group
gpasswd noobgroup
#set password for noobgroup
gpasswd -r noobgroup
#remove noobgroup password
groupadd
Create new group
groupadd noobgroup
#creates the new group noobgroup using next GID
groupadd noobgroup -g 999
#creates new group noobgroup with GID 999
groupdel
deletes a group. Note: files/folders owned by this group should be located using the find command and deleted or modified before deleting the group. In addition, all users who treat this group as primary must be deleted or modified prior to running the command.
groupdel noobgroup
#deletes noobgroup from /etc/group and /etc/gshadow
groupmod
modify group information in the /etc/group file
groupmod noobgroup -g 999
#change GID to 999 for noobgroup
groupmod noobgroup -n noobs
#change group name to noobs
groups
groups displays groups that the current user belongs to, with the first group returned being the primary group
groups
#displays group info for current user
groups mrnoobot
#displays group info for mrnoobot
grub2-install
Can be used to reinstall GRUB2
/sbin/grub2-install /dev/sda
use update-grub on Ubuntu to push through the changes.
grub-install
install legacy GRUB bootloader
grub-install '(hd0)'
#install grub legacy bootloader on the first disk in the system
grub-md5-crypt
Generates md5 hash of a password to be used by the GRUB bootloader
grub-mkconfig/grub2-mkconfig
can be used to reconstruct a grub.conf file for a GRUB bootloader
grub-mkconfig -o /boot/grub/grub.conf
#reconstructs grub.conf file to /boot/grub
see also update-grub
halt
shut down the system - see also poweroff and shutdown
history
history
#provides list of previously typed commands
-c #clear the list
-r #read the list and replace the current history
-w #write the current history list to the history file
host
resolve IP address to hostname and vice versa
host noobot.com
#identify IP address for noobot.com
host 192.168.1.15
#identify hostname from IP address
host -t ns noobot.com
#identify DNS servers for noobot.com
hostname
Set and view system's host and domain name
hostname -s
#display shortname of host
hostname -f
#display fully qualified domain name
hostname noobot.com
#set hostname to noobot.com - NON-PERSISTENT
To achieve persistence, amend the /etc/hosts file
hostnamectl
Similar to hostname on systemd , updates /etc/hostname FILE
Hostname can be static, pretty or transient
STATIC - Set by user (see below)
PRETTY - Set by user, human readable
TRANSIENT - set by kernel, typically localhost by default
hostnamectl/hostnamectl status
#display status of the local host
hostnamectl set-hostname mrnoobot
#amend the static hostname of the local host
hwclock
Administers the hardware clock
hwclock
#display hardware clock UNIX time
hwclock --set --date "1/1/2020 08:30:45" (--utc/--localtime)
#set hardware clock to a specific time (optional: specify as UTC or local time - defaults to last setting in /etc/adjtime)
hwclock -r
#display human readable hardware clock time
hwclock -w OR hwclock --systohc
#sync hardware clock from system clock
hwclock -s OR hwclock --hctosys
#sync system clock from hardware clock (timezone retrieved from /etc/localtime)
iconv
Convert character encoding
iconv -f ISO8859-1 -t CP437 noobot.txt > noobotconv.txt
#converts noobot.txt FROM ISO8859 TO CP437 and stores in noobotconv.txt
id
id displays current user group membership by UID and GIDs
ifconfig
Interface configuration
ifconfig
#display status of active interfaces
ifconfig -a
#display status of all interfaces
ifconfig eth0
#display status of specific interface
ifconfig eth0 192.168.24.11
#set IP address of interface
ifconfig eth0 netmask 255.255.255.0
#set subnet of interface
ifconfig eth0 broadcast 192.168.1.14
#set broadcast address of interface
ifconfig eth0 up/down
#set interface active/inactive
init/telinit
change the current runlevel of the system
init 5
#switch to multi-user with graphical manager
telinit 6 -t 60
#reboot in 60 seconds
ip
Network configuration command, deprecating ifconfig
ip address show
#view current configuration of interfaces (replaces ifconfig)
ip route show
#display routing table (replaces route command)
ip route add 10.0.0.0/24 dev eth0
#route local traffic through the eth0 device
ip -s address
#display current interface configuration with network statistics
ip neighbor show dev eth0
#display ARP cache for device eth0
ip link show
#display interfaces and state
ip -br link show
#summary (brief) if interfaces and state
journalctl
command to read the binary logs on a systemd system
journalctl -b
#displays messages from most recent boot
journalctl -u <systemdunit>
#display logs from specific systemd unit
journalctl -n NUMBER
#display last number of lines specified
journalctl -r
#reverse chronology (display newest first)
ADDITIONAL ARGUMENTS
--rotate
#rotate journals immediately
--vacuum-time=TIME
#delete journal entries older than TIME
--vacuum-size=SIZE
#delete oldest journal entries until journal is SIZE
DISABLED JOURNALING IS POTENTIAL INDICATOR OF COMPROMISE
ldconfig
update library directory cache following addition or change to conf file in the /etc/ld.so.conf.d directory
ldconfig -p
#display name and path of all libraries in the cache
ldconfig -v
#display library directories and their contents
ldd
display library info for a command
ldd noobot
#displays the library files (and their paths) required by noobot
ln -link
ln create a link to a target file
ln -s TARGET LINK_NAME
#creates a SYMBOLIC link called LINK_NAME to the TARGET file
Soft links DO NOT increase link count
ln TARGET LINK_NAME
#creates a HARD link (shared inode) called LINK_NAME to TARGET file
locale
locale
#displays all information regarding current locale
locale -c LC_NAME
#displays information relating to a specific locale category
locale -k LC_NAME
#displays information relating to a specific locale keyword
locale -a
#displays available locales
Default locale can be changed by editing locale files:
/etc/default/locale (Debian-based systems)
/etc/sysconfig/i18n (Red Hat-based systems)
The LANG variable should be changed to desired available locale.
User locale can be amended by exporting the desired LANG variable in the ~/.bashrc or ~/.profile files.
Using LANG=C before a command will temporarily use only basic ASCII characters, thereby effectively disabling locale and defaulting to English error message generation. This can also be achieved by exporting LANG=C for an effect that will persist for current shell.
locale charmap
#displays current character mapping
locale -m
#displays available character maps
logger
Command used to test /etc/rsyslog.conf settings
Arguments:
-i #log the process ID
-s #log message to stderr and system log
-f noobfile #use the message from the specified file
-p SELECTOR #use a selector, eg mail.info
-t TAG #mark the message line in the log with a TAG
eg
logger -t TEST -p mail.err 'Testing mail.err entry'
#if mail.err logs are directed to a sepcific file, that file will now have entry:
DATE localhost TEST: Testing mail.err entry
ls
ls
#list command
ls /var/www
#list visible files and directories in the /var/www directory
ls -l
#long display format
ls -r
#reverse alphabetical order
ls -w
#specify width of output display
ls -a
#list all files/directories including hidden
ls --sort=time
#sort files by modified time
ls -i noobfile
#display the inode number of noobfile
lsblk
list block devices and mount points
lsblk -a
#list all
lsblk -f
#show available filesystems
lscpu
lscpu lists details about the Central Processing Unit (CPU)
lshal
maintains a list of devices connected in the hardware abstraction layer and their attributes
best deployed with grep. hal deprecated since 2011 replaced by udev/systemd
lshw
list hardware
lshw -c network | grep veth
#search for veth in network devices
lsmod
displays info about currently loaded kernel modules
Lists Module, Size, Number of Dependants, Dependants
lsmod | grep module
lsof
list open files command. This can run into large numbers and therefore best used with a grep pipe
lsof | grep /mnt
#lists files located in /mnt that are open
lspci
lspci lists devices connected to the PCI bus
-v verbose
-s specify vendor/device code (to limit output)
-nn list devices with device codes
lsusb
lsusb lists devices connected to the USB (Universal Serial Bus)
-v verbose
-d specify device code (to limit output)
see also usb-devices
lvcreate
stage 3 of logical volume management (LVM)
lvcreate -L 500M -n noobot1 vol1
#create a 500MB logical volume named noobot1 within volume group vol1
See also pvcreate (stage 1) and vgcreate (stage 2)
Administer mail - opens the mailbox and prompts for further action
list #lists mail commands
n #read next message (or Enter)
h #display header information for all messages
q #quit mail preserving unread messages
x #exit mail preserving all messages
r [message no.] #reply to current message or [message no.]
p #print message again
d [message no.] #delete current or specified message
mail -f noobfile
#processes noobfile as a mailbox
mail -n
#do not run /etc/mail.rc on startup
mail mrnoobot
#compose mail to mrnoobot (end with CTRL+D)
mailq
Display status of the mail queue
mailq -q
#resend messages in mail queue
Status:
QueueID #ID suffixed with * or !; * indicates queued, ! indicates failed
Size #Message size
Arrival Time #Time message was queued
Sender/Recipients #Users pending delivery of the message
mailq equates to sendmail -bp for users of sendmail
man
man <command>
#opens the manual for the command
return or Enter #go down one line
Space #go down one page
/<something> #search for something
1G #go to beginning of page
G #go to end of page
h #help
q #quit
man -f <string>
#displays manual titles that match or partially match string
man -k <keyword>
#displays titles matched by keyword
md5sum
generate an md5 hash of a specific file. The output can be saved and used to integrity test that file at a later date
md5sum noobot.txt > noobot.md5
#stores the computed md5 hash and filename in noobot.md5
md5sum -c noobot.md5
#reads the hash and filename from noobot.md5 and checks against the file itself
See also sha256sum, sha512sum
mkdosfs
command used to make a dos filesystem directly. Default options can be invoked by using the mkfs wrapper command.
mke2fs
command used to make ext filesystems directly
mke2fs OPTION DEVICE
OPTIONS
-b #define block size (larger for large databases)
-N #define number of inodes (low for small numbers of large files)
-m #define space reserved for system use
-I #define inode size
-i #define bytes/inode ratio (average file size)
-n #display backup superblocks
mkfs
make file system command. This is a wrapper - ie a command that runs other commands. In order to use full functionality of those commands they should be run directly
mkfs -t ext4 /dev/sdb1
#create an ext4 filesystem in the sdb1 partition
wrapped commands include mkdosfs and mke2fs
mkisofs
tool used to create an ISO 9660 filesystem (CDROM). This command is NOT wrapped in mkfs
mkswap
convert a suitable partition created in fdisk to a swap partition, or a suitable file to a swap file
mkswap /dev/sdb1
#define a swap partition
mkswap /var/noobswap
#define a swapfile
See also swapon, dd
mkudffs
tool used to create UDF filesystem (DVD). This command is NOT wrapped in mkfs
modinfo
display information about a kernel module
modinfo <MODULE>
modprobe
modprobe -l
# display list of all available kernel modules
modprobe <MODULE>
#load module and those it depends upon
modprobe -r <MODULE>
#remove a module and those it depends upon from memory
mount
command to mount devices into defined paths
mount
#display existing device/network loc/pseudo filesystem, mount points and filesystems
mount /dev/sdb1 /mnt
#mount partition sdb1 in /mnt - autodetect filesystem
mount -t iso9660 /dev/sdd0 /media
#mount sdd0 in /media, specify ISO9660 filesystem (DVD)
mount /dev/sdb2 /mnt -o ro
#mount sdb2 in /mnt as READ ONLY
mount /home
#mount to /home according to configuration in /etc/fstab
mount /home -o remount, ro
#remount to /home according to /etc/fstab with read only option (NON PERSISTENT)
mount -o remount /home
#push through changes made to /etc/fstab on a live mount
mount -o loop noobot.iso /noobot
#mount an iso or img file in noobot
See also: umount, /etc/fstab
netcat (nc)
Used to monitor and debug network connections, as well as many pen test uses
nc -z -v 192.168.1.15 20-35
#verbose connectionless scan of open ports 20-35 on 192.168.1.15
nc -l 1234
#listen on port 1234
nc 192.168.1.15 1234
#connect to host listening on port 1234
netstat
Being deprecated to ip and ss commands; network status tool
netstat
#display status of all ports
netstat -s
#provide summary of network activity by protocol
netstat -l
#display status of listening ports
netstat -r
#display routing table
netstat -i
#display interface status
netstat -ic
#display 1 sec interval updated interface information
netstat -tln
#display (l)istening (t)cp connections by (n)umber
#netstat -tl
#display listening tcp connections by name
newaliases
updates the binary /etc/mail/aliases.db from the /etc/mail/aliases file for sendmail systems - must be run after amending aliases file.
newaliases equates to sendmail -bi command
newgrp – new group
rather than creating a group as the name might imply, allows the user to switch PRIMARY group to another group that they belong to. Any files and directories subsequently created will have group ownership of that group.
newgrp noobgrp
#following this command, primary group for this user is noobgrp. ALl new files and directories created will be owned by noobgrp.
this will spawn as a new shell. Typing exit will return to the original PRIMARY group.
nmcli
Network manager client
nmcli d wifi list
#list available wifi networks
nmcli d wifi connect noobot_guest password 9999
#connect to SSID noobot_guest using password 9999
ntpd
network time protocol daemon
ntpd -q
#set system time/date using NTP
ntpdate
deprecated by ntpd - network time protocol tool for setting system time/date using ntp
ntpdate -q <server>
#query if time server is available
ntpdate <server>
#set system time date according to time server
ntpq
network time protocol query tool
ntpq -pn
#print server peer summary
Includes
remote #server being queried
refid #server IP address
s #stratum (ie network hops from most accurate clock)
t #type (unicast, broadcast)
when #seconds since last poll
ntptrace
network time protocol command to trace chain of NTP servers; useful for debugging time sync problems
parted
non-destructive partition management tool
parted --help
#list options
parted <DEVICE> <OPTION>
parted /dev/sda print
#display existing partition information on device
parted /dev/sda mklabel msdos
#create partition table
parted /dev/sda mkpart primary 0% 50%
#make a primary partition starting at 0 and ending at 50% of the disk space
parted /dev/sda
#enter interactive mode (prompted)
COMMANDS
h #list commands
passwd
step 2 in account creation after useradd; sets or changes an account password
passwd
#prompts to change currently logged in account password
passwd mrnoobot
#prompts to set a password on new account or change existing one
passwd -e mrnoobot
#causes password expiry
passwd -S mrnoobot
#displays password status of mrnoobot, with reference to /etc/paswd
username passwordstatus lastchg min max warn inactive
passwordstatus #P/L/NP = Usable, Locked, No Password
passwd -l mrnoobot
#lock user account mrnoobot
passwd -u mrnoobot
#unlock user account mrnoobot
#can also be locked/unlocked by prefixing/removing ! from the password in /etc/shadow
passwd -d mrnoobot
#removes all password requirements for mrnoobot (ie no password)
ping
Packet internet groper - network connectivity tool
ping -c 5 192.168.1.15
#ping host for a count of 5 times
-s #specify packet size
-t #specify Time To Live count
-w #specify timeout in seconds
ping6
As ping but uses IPv6
ping6 ipv6.mrnoobot.com
#ping mrnoobot.com using ipv6
poweroff
shutdown the system - see also halt and shutdown
pvcreate
first stage in logical volume management (LVM)
pvcreate /dev/sdb
#inserts a header onto the device creating a physical volume
See stage 2 of LVM, vgcreate and stage 3 lvcreate
pwd
pwd
#prints the current working directory
resolvectl
Resolves domain names
resolvectl query noobot.com
#display IP address for noobot.com
route
Display network routing table
rpm
redhat package manager (distribution specific)
rpm -qi bash
#query(q) basic information (i) about bash, an installed package
rpm -pqi noobot.123.456.src.rpm
#query info on file noobot.RELEASE.VERSION.SOURCE.rpm an uninstalled package
OPTIONS
-a #list all installed packages
-c #list config files associated with package
-d #list documentation files associated with package
-i #display package info
-K #check package integrity
-l #list all files in package
--provides #list capabilities of package
-R #list capabilities required by package (dependencies)
--scripts #show scripts used before and after install
-s #display status - normal, not installed or replaced
-U #install OR update an installed package
-F #freshen (update) package only if installed
--force #used with -i to force a reinstall
rpm --import /etc/pki/rpm-gpg/*
#import package public keys to rpm database from default location (used with -K option for integrity checking)
rpm -i PACKAGE1 PACKAGE2 PACKAGE3
#installs multiple packages simultaneously (provide for circular dependencies)
rpm -e PACKAGE1 PACKAGE2 PACKAGE3
#erase multiple packages simultaneously (provide for circular dependencies)
See also: yum which automatically resolves dependencies
rpm2cpio
converts rpm to a cpio that can be piped into the archiving tool cpio.
This allows for extraction of single files from the package.
See also: cpio in the Archiving section
runlevel
displays the current runlevel - the systemd target equivalents are also listed below
0 #shutdown the system - poweroff.target
1 #single user mode (admin) - rescue.target
2 #multi-user mode no network - multi-user.target
3 #normal startup - multi-user.target
4 #user definable - multi-user.target
5 #normal start with graphical display manager - graphical.target
6 #restart the system - reboot.target
runlevel
#displays previous and current runlevels in that order
N denotes no previous runlevel (ie machine has booted directly into current runlevel)
sendmail
command for delivery of preformatted messages
OPTIONS
-B type #set message body type eg 7BIT 8BITMIME
-bd #background process as daemon
-bD #foreground process
-bi #initialise alias database from /etc/mail/aliases.db
-bp #list mail queue
-bv #verify address without sending message
-C noobfile #use specified file as config file
-R return #full/hdrs return full message/headers only on bounce
-t #Scan for To: Bcc: and Cc: recipients
sendmail mrnoobot@localhost
#send mail to user on local machine; end of file indicated by . (PERIOD) on new line and Enter
sendmail -t -i < noobot.msg1
#scan noobot file for lines To:, Bcc:, Cc:, gather recipients and send
service
used for the management of system services
service httpd start
#starts web server
See also Useful Files & Folders: /etc/rc.d/init.d
start #start service if not running
stop #stop service if running
restart #stop and then start service again
condrestart/try-restart #restart service if it is running
reload #reloads configuration for service without restarting
status #shows status of service and PID if running
fullstatus #for Apache displays url /server-status
graceful #restarts Apache web server without aborting open connections
help #help page
configtest #checks syntax in modified config files
set
set | tail
#set displays values of all variables - used with tail here to shorten ouput
set -o nounset
#throws error if attempting to reference an unset variable
set +o nounset
#allows referencing of unset variables
sfdisk
scripting fixed disk management tool
sfdisk -s
#list disks and sizes
sfdisk -d /dev/sda > sda.disk
#backup current partition table to sda.disk
sfdisk -f /dev/sda < sda.disk
#restore partition table from sda.disk
sha256sum
generate a sha256 hash of a specific file. The output can be saved and used to integrity test that file at a later date
sha256sum noobot.txt > noobot.sha256
#stores the computed sha256 hash and filename in noobot.sha256
sha256sum -c noobot.sha256
#reads the hash and filename from noobot.sha256 and checks against the file itself
See also md5sum, sha512sum
sha512sum
generate a sha512 hash of a specific file. The output can be saved and used to integrity test that file at a later date
sha512sum noobot.txt > noobot.sha512
#stores the computed sha512 hash and filename in noobot.sha512
sha512sum -c noobot.sha512
#reads the hash and filename from noobot.sha512 and checks against the file itself
See also md5sum, sha256sum
shutdown
unlike halt and poweroff which shut the system down immediately, shutdown requires options
shutdown now OR HH:MM OR +M
#shuts down immediately OR after HHs MMs OR after M minutes
shutdown now 'Message'
#shuts down and broadcasts message to all logged in users
shutdown
#sets machine to runlevel 1 (rescue.target)
shutdown -r
#reboots machine (runlevel 6, reboot.target)
shutdown -h
#shuts machine down (runlevel 0, poweroff.target)
sleep
creates a pause for a given number of seconds
sleep 15
#pauses for 15 seconds
source
sources a file to execute and is often aliased by the . (FULL STOP) character. Typically found in initialisation files
. /etc/bashrc
#found in ~/.bashrc, this line executes the global /etc/bashrc file
Can be used to run intialisation files that typically run on login, for customisation and testing purposes, without having to relog.
ss
socket status tool, replacing netstat
ss
#display status of all ports
ss -s
#display socket statistics
ss -lt
#display listening tcp ports
ssh
ssh management
ssh -t bob@192.168.3.100 -p 22 "uname -a"
#Prompt password for user bob using ssh on port 22 and run command uname -a
startx
launch graphical user interface (X Windows)
stat
stat displays timestamps of a file, eg:
stat Documents/noobfile
will return all timestamps for the file noobfile in the Documents directory of the current working directory.
su – switch user
su can be used to switch user (often to root)
su - USER
#switch user to USER activating login and creating new shell configured for user
swapon/swapoff
enable partition as current swap space following a mkswap command (non persistent)
swapon /dev/sdb1
swapon -a
#push through swap mount changes in /etc/fstab
swapon -s
#display current swap status
swapoff /dev/sdb6
#removes device from swap space
systemctl
can be used to switch to a different systemd target (runlevel) or manage services
systemctl isolate rescue.target
#puts machine into single user (admin) mode
systemctl isolate graphical.target
#puts the machine into multi-user mode with graphical interface
systemctl start httpd.service
#starts the httpd service
ALTERNATIVE OPTIONS
stop #stop a service
status #show status of a service
-a/--all #show status of all services
enable #set a service/unit to start automatically
disable #stop a service/unit from starting automatically
hibernate/suspend/poweroff/reboot #set low/no power state
systemctl list-dependencies graphical.target
#displays services that a target wants, and depends upon
systemctl set-default rescue.target
#sets the default boot target to rescue mode
systemctl list-units --type=service
#lists running services
systemctl list-timers
#lists scheduled events
systemd-cat
Similar to logger for systemd systems, allows testing of journal
SYNTAX:
systemd-cat OPTIONS COMMAND ARGUMENTS
Can also pipe to systemd-cat eg
ps | tee /dev/tty1 | systemd-cat
#output of ps command will appear on console, and in the journal
systemd-nspawn
Create namespace container. Useful for mounting failed systems for fault finding. EG with non-booting system, create ISO image and mount:
mkdir /mnt/failedsys
mount /dev/vda1 /mnt/failedsys (use lsblk if device name unknown)
systemd-nspawn --directory /mnt/failedsys --boot -- --unit rescue.target
#spawns container to allow running of system commands on the failed system
systemd-run
Run a command or execute systemd service unit
systemd-run --on-active=”1h” /bin/touch /home/sysadmin/noobot
#creates a file noobot using touch 1hr from now
systemd-run --on-active=”1h” --unit=noobot.service
#runs the noobot systemd service 1hr from now
Schedules created this way will appear in the systemctl list-timers output
telnet
perform telnet networking operations
telnet noobserv1
#connect to telnet service on noobserv1
CTRL+] is the escape key sequence
logout/exit/quit
telnet localhost 25
#identify any service running on port 25 of localhost
test
checks whether an assertion is correct. Useful for command lists
test -e $HOME/bin || mkdir $HOME/bin
#tests if $HOME/bin exists, if that fails, the directory will be created
In a script:
test $# -eq 0 && search='pwd' || search = $1
#tests if an argument exists; if not sets a default value of current working directory for the local variable 'search'. Otherwise, sets it to the value of the argument.
timedatectl
system date and time control for systemd systems
timedatectl
#displays system time information
Arguments:
set-time #sets time
set-timezone #sets timezone
list-timezones #lists timezones
timesync-status #status of sync with NTP server (network time)
set-ntp #boolean used to set NTP active
tracepath
Similar to traceroute, uses ICMP and UDP (and can therefore be useful where former is filtered) obtaining maximum transmission units along the path
tracepath mrnoobot.com
#display path information to mrnoobot.com
tracepath6 mrnoobot.com
#diaply information using IPv6
traceroute
display route to a specified host - uses ICMP
traceroute mrnoobot.com
#display route to mrnoobot.com
-T #probe using TCP SYN
-f #specify first time to live value
-m #specify max ttl value
-w #specify timeout in seconds
-6 #use IPv6 (or use traceroute6 command)
tune2fs
file system integrity tool
tune2fs -o OPTION,OPTION /dev/sdb1
#specifies default mount options for device
-c #number of mounts before full filesystem check
-i #number of days before full filesystem check
-l #list superblock info
-j #create journal file for ext2 system
-m #specify reserved root/privilege space as percentage
-o #default mount options separated by comma
type
type
#display information about a command type
type -a ls
#displays information about the command ls but also returns all locations of files containing that command
typeset
typeset -x
#displays values of all environment variables
typeset -x VARIABLE=value
#set and export VARIABLE containing value
tzselect
Used to assist change of time zone.
tzselect will prompt user for location info and return a line which should be run on CLI, eg:
TZ=’America/Los_Angeles’; export TZ
This line can also be added to ~/.bashrc or ~/.profile to make the change persistent.
Package specific versions of tzselect may also apply eg:
dpkg-reconfigure tzdata
redhat-config-date
system-config-date
To make system wide changes to timezone, create symbolic link from the timezone file to the desired timezone, eg:
ln -sf /usr/share/zoneinfo/Australia/Melbourne /etc/localtime
udevadm
udevadm monitor
#observe what happens when a device is inserted or removed
udevadm info /dev/sda
#observe udev rules for a currently attached device
ufw
UFW is a Firewall
ufw allow from 10.10.10.27 proto tcp to any port 80, 443
#allows a TCP connection to ports 80 and 443 from 10.10.10.27
umount
command to unmount devices from mount points
umount /mnt
#unmount whatever device is mounted at /mnt
umount /dev/sdb1
#unmount sdb1 from whichever point it is mounted
See also: mount
uname
uname
#display system information
-a #all
-s #kernel name
-n #network node name
-r #kernel release
-v #kernel version
-m #machine hardware name
-p #processor
-i #hardware platform
-o #operating system
unset
unset VARIABLE
#unsets a variable
update-grub
updates the GRUB configuration file with changes on Ubuntu systems
usb-devices
usb-devices displays expanded information about connected USB devices. See also lsusb
useradd
first stage in user account creation. Account will be inactive until passwd is run to create a password for the account. The default or defined settings populate the /etc/passwd file
useradd mrnoobot
#adds the user mrnoobot with default settings
useradd -D
#view user account defaults from /etc/default/useradd file
useradd -D -s /bin/bash
#sets default user shell path to /bin/bash
useradd (option, argument) mrnoobot
#adds user mrnoobot with defined account settings
-s #absolute path to login shell
-d #absolute path to home directory
-m (no argument) #creates home directory if it does not exist
-k #copy init files from path other than default /etc/skel
-g #group name or number
-N (no arg) #prevents creation of a group with same name as user (default) requiring a -g option and argument
userdel
userdel mrnoobot
#deletes the mrnoobot user
userdel -r mrnoobot
#deletes the user plus home directory and mail spool
#find other files owned on the system elsewhere with find before deleting account
userdel -f mrnoobot
#forces account deletion even if user is logged in
usermod
modifies account settings for an existing user
usermod -d /home/sales mrnoobot
#change absolute path to home dir for mrnoobot (new dir must exist and manual copy of contents must be performed seperately, this only updates /etc/passwd
usermod -L mrnoobot
usermod -U mrnoobot
#Locks/Unlocks mrnoobot account
usermod -e 2021-12-25 mrnoobot
#set password expiry date for mrnoobot
usermod mrnoobot -g noobgroup
#change primary group of mrnoobot to noobgroup - must exist already
usermod -a -G sales mrnoobot
#APPEND the sales group to list of groups to which mrnoobot belongs (without -a will revoke group membership and join sales only)
usermod -G sales,marketing,noobgroup mrnoobot
#DEFINES groups to which mrnoobot should belong. Any existing which are not on this list will revoke membership.
usermod mrnoobot -c 'noob'
#adds a comment to the mrnoobot user account
usermod mrnoobot -s /noob/shell
#changes absolute path to login shell
vgcreate
stage two in the logical volume management process (LVM)
vgcreate vol1 /dev/sdb /dev/sdc dev/sdd
creates a volume group from physical volumes
See also pvcreate (stage 1) and lvcreate (stage 3)
vgextend
command to add a physical volume to an existing volume group in logical volume management (LVM)
wall
send broadcast message to all logged in users. Accepts standard input or file
echo 'Message' | wall -n
#broadcast message to all users and suppress banner
wall noobot.txt
#broadcast content of noobot.txt to all users
which
which <command>
#searches for location of a command by searching the PATH variable
who
can be used to display current runlevel
who -r
#displays current runlevel
whoami
displays current username
xfs_db
manual repair tool for XFS filesystems but also useful to determine fragmentation
xfs_db -x /dev/sdc1
#enter expert debug mode on sdc1
xfs_db -r /dev/sdc1
#enters prompt mode
COMMANDS
frag #displays assessed file fragmentation
quit #quit
See also xfs_fsr
xfs_fsr
filesystem reorganiser for XFS
xfs_fsr -v /dev/sdc1
#carry out verbose reorganise on sdc1
xfs_fsr -t 3600
#carry out reorganising for an hour and retain progress for next run
xfs_repair
repair utility for xfs filesystems. Can be run on unmounted filesystems only
xfs_repair /dev/sdc1
#repairs sdc1 from journal log file
xfs_repair -L /dev/sdc1
#LAST RESORT - zeros log file and attempts to repair sdc1
yum
package manager that can search internet/network based repositories, automatically resolving dependencies
configured in the /etc/yum.conf file and /etc/yum.repos.d directory
yum provides '*/noobot.file'
#searches packages and displays which provides noobot.file
yum search noobot
#search packages for those containing word noobot
yum install PACKAGE
#install package
yum -y install PACKAGE
#express install (auto answers yes to prompts)
yum -y install PACKAGE1 PACKAGE2 PACKAGE3
#express install multiple packages
yum grouplist
#list all grouped packages by group
yum groupinfo GROUP
#display info on defined GROUP
yum groupinstall GROUP
#install a defined GROUP of packages
yum groupremove GROUP
#uninstall a defined GROUP of packages
yum remove PACKAGE
yum erase PACKAGE
#removes a package and resolves dependency issues
yum list updates
#list available updates
yum update
#update all packages
yum update PACKAGE
#update defined package
zypper
advanced package manager for rpm systems with automatic dependency resolution
zypper ref
#refresh zypper available package cache
zypper se noobot
#search for the package noobot in the cache
zypper in noobot
#install package noobot
zypper lr
#list repositories
zypper ar -f URL LABEL
#add repository at URL and name it LABEL. Requires a cache refresh.
zypper list-updates -t package
#list available updates for package
zypper update
#update all packages