Last edit: May 05, 2019 11:10:23 AM CDT
List of all cheatsheets
See also *nix and Bash
Config Files & System Config
Network configuration files
/etc/hosts
/etc/init.d (even with systemd)
/etc/resolv.conf (DNS servers and search domain)
/etc/network (Ubuntu routing and host information for all interfaces)
/etc/nsswitch.conf (Order of authentication and host lookup)
/etc/systemd/
/etc/sysconfig/network (RHEL 5/6 routing and host information for all interfaces)
/etc/sysconfig/network-scripts/ (RHEL 5/6system-wide interface configuration. User connection settings are saved in gconf configuration database and the Gnome keyring)
/etc/sysconfig/networking (RHEL 5/6Used by GUI; don't hand edit)
Name resolution
/etc/hosts is local, /etc/resolv.conf is remote.
Users & Groups
/etc/passwd
Boot control (RHEL)
/etc/grub.conf
Persistant kernel modules
/etc/modprob.conf (RHEL 5)
/etc/modprobe.d/local.conf (RHEL 6)
Directory authentication information (RHEL)
/etc/sssd/sssd.conf
What services are running at boot
systemctl list-units -t service
Get timezone information
timedatectl status
Set the timezone
timedatectl list-timezones
timedatectl set-timezone zone
Query a NTP server to figure out time offset
ntpdate -p 1 -q [time server]
See open file limit for a user
ulimit -a
See system-wide maximum number of file handles
cat /proc/sys/fs/file-max
sysctl fs.file-max
How many file are currently open?
lsof | wc -l
To modify file limits for the system
Edit /etc/sysctl.conf and add a value for “fs.file-max =”
sysctl -p
To modify file limits for users
Edit /etc/security/limits.conf and set values for “soft nofile” and “hardnofile”
Reboot
To modify a service's open file limits on OSes using systemd
Edit /etc/systemd/system/[Service].service file and set value for “LimitNOFILE” (“infinity” is an option)
systemctl restart [service]
Files
Change ACLs
setfacl -m [u/g:group:scheme] /path
List the owners and modes of a file's full path
namei -mo /pat/to/file
Break apart a .run installer file
/path/to/installer.run --noexec --target /tmp/installer_expanded/
Drives, Disk Images & File Systems
List all block devices
lsblk
Display information about device
blkid
List disk & partition information for all connected devices
fdisk -l
Specific information about a particular partition or drive
fdisk -ul /dev/[disk]
Get superblock information
dumpe2fs -ob | grep -i superblock
List connected disks
lsscsi
Basic clone with dd
dd if=/dev/input/device-here of=/dev/output/device-here bs=128k conv=noerror,sync
Clone to disk image
dd if=/dev/da0 conv=sync,noerror bs=128K | gzip -c > path/to/output.gz
Restore from disk image
gunzip -c image.here-gz | dd of=/dev/output/device-here
Mount a USB drive
1. fdisk -l
2. mkdir /mnt/newmnt
3. mount /dev/path /mnt/newmnt
Or. mount -t [type=msdos|ext*|nfs|usbfs/vfat]/dev/[path] /mnt/newmnt
Mount a CD
mount /dev/sr0 /mnt/cdrom
Procedure to create new partition
1. Use fdisk to create partition p: prints partition table n: create new w: write partition
2. mkfs -t [ext3|vfat|msdos| to put filesystem on partition
3. mkdir /new/mnt/dir to create mount point
4. Physical partition: mount -t [type] /path/to/mount or Logical partition: mount /dev/mapper/[path] /path/to/mount
5. Edit /etc/fstab
Procedure to create new disk using parted
1. List partitions: parted -l
2. Format the disk: parted /dev/path/to/new mklabel gpt
3. Partition the disk (ext4): parted -a opt /dev/path/to/new mkpart primary ext4 0% 100%
4. Create the filesystem on disk: mkfs.ext4 -L [name] /dev/path/to/new
5. Prep the mount: mkdir -p /mnt/data
6. Mount the disk: Edit /etc/fstab
Increase the disk space on a LVM volume on a VM
1. Increase the vmdk file size
2. fdisk -l to note where the added space is located (type is 8e)
3. Create a new parition that uses the added space fdisk /dev/sda, then:
n (new)
p (primary)
# (partition number to assign starting with first available cylinder)
t (type)
# (partion number)
8e (set to LVM)
p (view layout)
w (write new layout)
reboot
4. pvcreate /path/to/new/part
5. vgextend VolGroup### /path/to/new/part and confirm with vgdisplay
6. lvextend -l +100%FREE /dev/VolGrou##/LogVol00
7. resize2fs -p /dev/mapper/VolGroup[num]
Make new swap space
1. fdisk -l to find device if needed
2. mkswap /dev/[path]
3. swapon /dev/[path]
4. Edit fstab: [dev/path] {part name} swap defaults 0 0
Fun with e2fsk (aka File System Utility)
Check/clean filesystem - e2fsck
Clean all - e2fsck -a
Use an alternate superblock - e2fsck -b [block size number]
Find badblocks - e2fsck -c and add to existing list: -k
Force check - e2fsck -f
To edit files while in maintenance mode
mount -o remount, rw /
Formatting for /etc/fstab
device mount point type mount options dump & fsck
dev/path /path ext/vfat/etc rw, ro, defaults, auto 0 0
Hardware & Kernel
Get hardware, serial number and BIOS info
dmidecode -s system-serial-number
dmidecode -s system-manufacturer
dmidecode -s system-product-name
lshw
Get OS release information
lsb_release -a
Get OS release information
cat /proc/version
Get kernel & hardware info
uname -a
List all PCI devices
lspci -v
Display information about installed hardware (Ubuntu)
lsdevs
Create System Profiler-like package
sosreport
See kernel messages
dmesg
See current boot parameters
cat /proc/cmdline
Get CPU information
cat /proc/cpuinfo
Get memory stats brief
free -gh
Memory profile stats detailed
cat /proc/meminfo
Magic SysRq
Wiki Page
Installs & Updates (Ubuntu)
Most apt-get or apt-cache commands can also be ran with just apt in 16.04+
Check for available updates (Ubuntu 16+)
apt-get clean
apt-get update
apt list --upgradeable
Check for available updates (Older Ubuntu)
apt-get clean
apt-get update
apt-get -s upgrade
Install available updates (Ubuntu 16+)
apt clean
apt update
apt upgrade
Install available updates (Older Ubuntu)
apt-get clean
apt-get update
apt-get upgrade
To upgrade from major release to major release
1. apt-get install update-manager-core
2. sudo do-release-upgrade
Refresh available packages
apt update
apt-get update
Search for packages
apt search
apt-cache search [name]
Get package info
apt-cache show [name]
Get package info (get version before install)
apt show [name]
Install a package from repo
apt-get install [name]
Install from package
dpkg --install /path/to
Remove a package
apt-get remove [name]
Remove a package and configuration
apt-get purge [name]
Check for package upgrades
apt list --upgradeable
apt-get -s upgrade
Upgrade packages
apt-get upgrade
Detailed list of all installed packages
dpkg --list
Create a backup list of all installed software
dpkg --get-selections > /path/to/output.pkgs.txt
Info about installed package
dpkg --status [name]
List files in installed pkg
dpkg --listfiles [name]
List config files in install pkg
dpkg-query --show -f '${Conffile}\n' [name]
Get info about package file
dpkg --info [name]
List files in a package file
dpkg --contents [name]
Show package dependencies
apt-cache depends
Show reverse dependency
apt-cache rdepends
Find package that installed file
dpkg --search filename
Find package that provides file
apt-file search filename
Verify all installed packages
debsums
Clear local cache
apt clean
apt-get clean
Clear only obsolete from cache
apt-get autoclean
Upgrade system
apt-get dist-upgrade
Ubuntu-managed Repos
Main: Primary repo, maintained by Ubuntu. Supported until EOL for OS series.
Universe: Community packaged and managed.
Multiverse: Non-FOSS packages
Restricted: Repo for proprietary drivers
Partner: Proprietary software packaged by Ubuntu
Repo configuration
/etc/apt/sources.list
Additional repos /etc/apt/source.list.d
Local cache /var/lib/apt/lists
Get a priority of repos
apt-cache policy
Add Ubuntu-managed Repos
add-apt-repository universe | multiverse | restricted
Remove Ubuntu-managed Repos
add-apt-repository -r universe | multiverse | restricted
Edit sources list
apt edit-sources
Get detailed history about what files and packages have been installed
/var/log/apt/history.log
Installation & Updates (RHEL)
anaconda-kgs.conf should list all installation options
What kinds of updates are available
yum update
Install just security updates
yum update --[section]
Install local package without key
yum localinstall --nogpgcheck
Push along an install
yum --skip-broken
Install latest kernel
yum install kernel
Search for package that’s installed on system
yum search installed
Which packages provide a particular file
yum provides [file]
Add EPEL repo
yum install epel-release
yum repolist
Find which package installed a file
rpm -qf [file]
What scripts were run by an installer
rpm -q [file] --scripts or --triggerscripts
Find application config files
rpm -qc [exec]
Determine which package owns conf file
rpm -qcf [conf file]
Information about a particular package
rpm -qpi [package]
Information about a particular app/package
repoquery -il [name]
Determine what get’s installed & where
rpm -qlp [package]
View scripts included in package
rpm -qp --scripts [package]
Display list of all recently installed packages
rpm -qa --last
Extract files from package
rpm2cpio [package.rpm] | cpio -id
Create repo files
Must include ID & base (man yum.conf) & place in /etc/yum.repos.d
Upgrade from 6.x to 6x+1 version in RHEL 6:
yum clean all
yum --releasever=6.x update
Upgrade from 5.x to 5.x+1 in RHEL 5:
rpm -Uvh ftp:///path/to/repo.noarch.rpm
rpm -Uvh ftp:///path/to/repo.rpm or @x86_64.rpm
yum clean all
yum update yum
yum update
Configure the Applications menu
alacarte
Downgrade a package with yum
Config files changed during initial install are _not_ reverted back as part of downgrade
yum history list
yum history undo [number of item to remove]
Monitoring & Logging
See also Notable Utilities
See a list of files associated with a process
ls -al /proc/[PID]/fid
What was the command that started a process?
/proc/[PID]/cmdline
See logs from this boot session
journalctl -b
See logs since a particular date
journalctl --since="####-##-## ##:##:##" (year-month-day 24:00:00 time)
See logs since a relative time
journalctl --since="[relative time]", e.g. --since="20 min ago"
Export top values to output file
top -b -n 1 > /path/to/output
Get disk statistics over time
sar -b
Network
ip & ss are the modern equivalents of arp, ifconfig and netstat
arp -a == ip n
ifconfig == ip a
ifconfig [interface] == ip a show dev [interface]
ifconfig [interface] up == ip link set [interface] up
ifconfig [interface] down == ip link set dev [interface] down
netstat -r or route == ip r
netstat -a == ss -a
List network interfaces on Centos/RHEL 7
ip a
nmcli -p dev
Get UUID for network interface on Centos/RHEL 7
uuidgen [interface]
Configure static IP on Centos/RHEL 7
Edit or create /etc/sysconfig/network-scripts/ifcfg-[interface ID]
Include network configuration information, including UUID
systemctl restart network
Configure static IP on Ubuntu
Edit /etc/network/interfaces
Include the following:
auto [interface]
iface [interface] inet static
address x.x.x.x
netmask x.x.x.x
network x.x.x.x
broadcast x.x.x.x
gateway x.x.x.x
dns-nameservers x.x.x.x y.y.y.y.
14.04 and lower: sudo /etc/init.d/networking restart
16.04: sudo systemctl restart networking
Bring an interface up or down
ifup [int] or ifdown [int]
Get hostname on system using systemd
hostnamectl status
Set hostname on system using systemd
hostnamectl set-hostname
Authbind
Ubuntu 16+ by default do not allow non-root users to bind to sub-1000 ports (e.g. jamftomcat user and jamf.tomcat8). Install and configure authbind to allow.
Current firewall rules (iptables)
iptables -L
Current firewall status (ufw)
ufw status verbose
Wireless network configuration
iwconfig
Wireless networking status information
iwlist
Security
SELinux status
sestatus
See current SELinux value
getenforce
Change SELinux value
setenable
Listing of SELinux policy path-to-context mappings
semanage fcontext -l
Set SELinux to Permissive
seenforce Permissive
See security context of files
ls -Z
Map SELinuxsecurity context to current directory/place
restorecon -R
Temporary change SELinux security context
chcon
Boot into single user
Boot into grub, select kernel and then add “1” or “single” to kernel parameters
Services
For Ubuntu 16.04+ / RHEL 7+ with systemd
systemd service files to control applications are in /etc/systemd/system/. Unit files found in this directory location take precedence over any of the other locations on the filesystem
View how long each startup process took
systemd-analyze blame
List all active services (aka service units)
systemctl list-units
List all services (aka service units) even if not active
systemctl list-units --all
Get service or application state
systemctl status [application or service.service]
systemctl is-active [application or service.service]
systemctl is-enabled [application or service.service]
systemctl is-failed [application or service.service]
Manipulating services or applications
systemctl start/stop/restart/reload [application or service]
Start a service or application on boot
systemctl enable [application or service.service]
Remove a service or application from boot
systemctl disable [application or service.service]
Update systemd after changing service config or unit file
systemctl daemon-reload
Tree list of service dependencies
systemctl list-dependencies
Users & Groups
Create a new sudo user on Ubuntu 16+
adduser [username]
Add a user
useradd [username]
Create a new sudo user on Centos/RHEL
adduser [username]
passwd username
usermod -aG wheel [username] (wheel membership == sudo privileges)
Add a group (Ubuntu 16+)
usermod -aG [group] [username]
Add a group
groupadd [groupname]
Set user password
passwd [username]
User password settings
chage -l username
Get information about user
getent passwd user
Remove a user (Ubuntu 16+)r
deluse [user]
deluse --remove-home [user]
Notable Utilities
atop and htop: top improvements
bonnie++: disk testing and performance utility
dstat: combined vmstat and iostat
glances: curses/python-based monitoring tool
iftop: displays bandwidth usage information on an network interface
mrt: network diagnostic tool
nload: visualize network traffic
nmon: performance utility
swat: Samba Server config tool (yum install swat; chkconfig swat on; service xinetd restart; 127.0.0.1:901)
Non-systemd/Older OSes
Scripts in /etc/init.d and /etc/rc.*
sys init vs systemd commands
_Services_
service [application or service] start == systemctl start [application or service] or [application or service].service
service [application or service] stop == systemctl stop [application or service] or [application or service].service
service [application or service] restart == systemctl restart [application or service] or [application or service].service
service [application or service] reload == systemctl reload [application or service] or [application or service].service
service [application or service] status == systemctl status [application or service] or [application or service].service
chkconfig [application or service] on == systemctl enable [application or service] or [application or service].service
chkconfig [application or service] off == systemctl disable [application or service] or [application or service].service
_Runlevels_
0 == runlevel0.target, poweroff.target
1, s, single == runlevel1.target, rescue.target
2, 4 == runlevel2.target, runlevel4.target, multi-user.target
3 == runlevel3.target, multi-user.target Multi-user, non-graphical.
5 == runlevel5.target, graphical.target Multi-user, graphical.
6 == runlevel6.target, reboot.target
What starts at boot (RHEL 5/6)
chkconfig --list
Enable persistent service
service [name] start, chkconfig [name] on, chkconfig --list [name]
Current startup information for a service (sys init)
chkconfig --list [service]
List installed services (sys init)
cat /etc/init.d
Enable persistent service Alt
initctl restart|stop|start|reload|status [service]
Change runlevels
tellinit [runlevel]
What starts at boot (Ubuntu)
sysv-rc-conf
Add a new service (non-systemd)
update-rc.d [service name] defaults
Remove a service (non-systemd)
update-rc.d -f [service name] remove
Manually set RunLevel for a service (non-systemd)
update-rc.d [service] start [priority number] [RunLevel number. If listing multiple, use single space]
e.g. update-rc.d apache2 start 10 2 3 4 5