Linux Admin Cheat Sheet

This isn’t intended to be comprehensive at all.  I’ll just be listing commands that I sometimes but not often use to do miscellaneous administrative tasks.

Finding CPU Temperature

$ acpi -t

Passwordless SSH

Between trusted hosts, I want to allow passwodless access via ssh. To do this, generate RSA key pair:

$ ssh-keygen

When prompted, accept the defaults unless things need to be changed.  Copy the public key just generated in ~/.ssh/id_rsa.pub on the local host.  Login to a remote host, and append the key to ~/.ssh/authorized_keys.  Next time I login to that host, I will not be prompted for password.

Linux Equivalent of open on Mac OS X

One command I like on Mac OS X is open, which open a file with an associated default application.  There is a command called xdg-open which does the same thing.  Make an alias to it so it acts like the one on Mac:

alias open='xdg-open'

Put this in ~/.bash_aliases.

Find the UUID of Devices

$ sudo blkid

Securely Erase Hard Drive

# fdisk -l                     # check hard drives file systems
# shred -vfz -n 20 /dev/sdb    # secure erase /dev/sdb

Redirect Output to Multiple Processes

Use “tee >(…)”:

$ <span class="Apple-style-span" style="font-family: monospace;">ls -A | tee &gt;(grep ^[.] &gt; hidden-files) &gt;(grep -v ^[.] &gt; normal-files)</span>

This example comes from this article.

Repeating Same Operation on Many Files

$ for i in *.txt ; do echo $i ; done

Recursively Do Something on Files/Directories

Find all files under a root path:

$ find /path/to/root -print

Change all directory permissions to 755:

$ find /path/to/root -type d -print -exec chmod 755 {} \;

Change all file permissions to 644:

$ find /path/to/root -type f -print -exec chmod 644 {} \;

Change all files and directories with 777 permissions to 755 permissions:

$ find /path/to/root -perm 777 -print -exec chmod 755 {} \;

Show the n-th (e.g., 9th) Line of a Text File

$ sed -n '9p' somefile

Send an Email Message

Provided the mail service is set up properly, a simple message can be sent quickly on command line.

$ echo "message body" | mail -s "subject line" your@mail.com

This is useful when I want to get an email notification when a very time-consuming job finishes.  For a time consuming job, sometimes it’s desirable to email the output from the job.  I can redirect both standard output and standard error to the email message body by:

$ someprogram 2&gt;&amp;1 | mail -s "job is done" your@mail.com

Keep a Process Running without Hangups

When starting a process on a remote host (e.g., over ssh), that process is killed when you logout of the session. To keep it running there, use nohup:

$ nohup somecommand &amp;

Kill All Processes with a Given Name

$ kill -9 `pgrep someprogramname`

This will kill all the processes with the name someprogramname; see the man page for pgrep for more info.

Change Run-Level Configuration for Init Scripts

$ sudo sysv-rc-conf

This will provide an easy-to-user user interface to configure init scripts.  Useful when I want to stop KDM from running at boot, for example.

Find Out How Long the System Has Been Running

$ uptime

Search for Filename in Debian Packages

The Debian packaging system is obviously useful, but I often struggle to find to which package a particular command belongs.  I can search for by filename:

$ sudo apt-file search somefilename

To do this, the command apt-file needs to be installed if not already:

$ sudo aptitude install apt-file
$ sudo apt-file update

Clear Apt Package Cache

The /var partition may quickly fill up with downloaded .deb packages and if the partition size is small, occasional cleanup will be necessary.  If I wish to just remove .deb files that are no longer relevant, do

$ sudo aptitude autoclean

If I need to remove all .deb files, then

$ sudo aptitude clean

The latter is okay as long as I don’t mind downloading many of them again when I need to update the system via the update-upgrade sequence, for example.

View the CPU Information

$ cat /proc/cpuinfo

Check the Disk Usage by Directories

$ du -h --max-depth=1

The resulting list may not to be sorted.  If I want to sort this by name, do:

$ du -h --max-depth=1 | sort --key=2 --ignore-case

Bash Scripting

Get the Absolute Path to the Script’s Current Directory

DIR="`dirname $BASH_SOURCE`"
ABSDIR="`cd $DIR; pwd`"

Get the Host Name

HOST="`hostname -f`"

Parse Space-Delimited String

SEED='a b c d'
set -- $SEED
echo $1
echo $2
echo $3
echo $4

More to come.

This entry was posted in Uncategorized and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>