I. Introduction to Linux a. Basic Concepts b. Creating Accounts c. Logging in d. Virtual Consoles e. Shells and commands f. Logging out g. Changing your password h. Files and directories i. The Directory Tree j. The Current Working Directory k. Case sensitivity II. Communicating with your Linux system a. The console b. Virtual consoles c. Secure Shell (ssh) i. PuTTY ii. WinSCP III. Navigating a. Home directory b. The tilde (~) c. Absolute vs. Relative paths d. The "cd" command e. Viewing the contents of a directory i. The "ls" command and its switches ii. Hidden files (the dot-file naming convention) iii. The "dot" (.) and "dot-dot" (..) directories iv. What is "dot-slash" (./) and why should I use it? f. Creating new directories (the "mkdir" and "mkdir -p" commands) g. Removing directories i. Empty directories --> rmdir ii. Directories with contents --> rm -Rf h. Creating files i. The "touch" command ii. Creating files with a text editor g. The Linux Filesystem Overview i. / ii. /etc iii. /var iv. /bin v. /sbin vi. /usr vii. /home viii. /dev i. The SME/E-smith Filesystem Overview i. Modifications to the standard Linux system ii. SME/E-smith's Templating Framework IV. Working with Files a. Copying files (the "cp" command) b. Copying directories (the "cp -R" command) c. Moving files (the "mv" command) d. Moving directories e. Removing files (the "rm" command) i. Interactive (default) ii. Non-interactive (the "rm -f" command) f. Viewing files i. The "cat" command ii. The "more" command iii. The "less" command g. Filename limitations h. Finding files and directories i. The "find" command ii. The "whereis" command iii. The "which" command iv. Scripts that help i. The "head" and "tail" commands V. Shortcuts a. Wildcards ("*" and "?") b. Command line completion (using the tab key) c. Standard Input and Output (STDIN & STDOUT) d. Redirection i. creating new files ii. appending to existing files VI. Editing Files a. The "vi" editor i. Command mode ii. Insert mode iii. Moving around in vi iv. Quitting vi * :q (quit without changes) * :w (save file without quitting) * :wq (save file and quit) v. Using "vi.tutor" b. The "pico" editor i. The pico menu ii. Quit without changes (^x --> n) iii. Save and quit (^x --> y) iv. Save without quitting (^o) v. Searching VII. Shells a. The Bourne Again Shell (bash) i. Scripting ii. Variables iii. Environment iv. Initialization Files b. Other shells i. Bourne shell (sh) ii. C shell (csh) iii. TC shell (tcsh) iv. Korn shell (ksh) VIII. Pipes a. The concept of pipelining b. "Piping" STDOUT to other commands c. Combining redirection and pipelining IX. File Permissions a. Owner-Group-Other b. Read-Write-Execute c. Reading File Permissions d. Setting File Permissions i. The "chmod" command ii. Different approaches to the "chmod" command X. File Ownership a. The User and Usergroup concept b. The "chown" command c. The "chgrp" command d. Combining the chown and chgrp commands XI. Creating and Using Links a. Hard links (the "ln" command) b. Symbolic links (the "ln -s" command) XII. Job control a. Foreground and background jobs b. Killing jobs c. Suspending and restarting jobs XIII. Basic System Administration a. The "root" account b. Getting root c. The superuser account (su) d. Startup, Shutdown, and Reboot e. Managing the Startup sequence i. The "rc" directories ii. The inittab file XIV. Working with Filesystems a. Filesystem types b. Mounting and Unmounting i. Mount points ii. CD-ROM and Floppy drives and media c. Devices and Device Naming conventions (the "/dev" directory) i. /dev/fd0 ii. /dev/hda[0-9] iii. /dev/sda[0-9] iv. /dev/ d. Checking filesystems (the "fsck" command) XV. User Management a. The /etc/passwd file (UID,GID,username,passwd,realname,homedirectory/shell) b. Adding users c. Removing users d. Changing passwords e. Changing shells f. The "shadow" system g. SME/E-smith User Management i. Server-manager method ii. Adding Multiple Users iii. Deleting Users iv. Giving users access to the system XVI. Archiving and compressing files a. The "tar" command i. Making a tape archive (tar -cvf) ii. Extracting a tape archive (tar -xvf) b. The "gzip" and "gunzip" commands c. Combining "tar" and "gunzip" (tar -xvzf) d. Backing up to a diskette i. Mounting the diskette (the "mount" command) ii. Formatting the diskette (the "fdformat" command) iii. Copying the files * tar -cvfz /dev/fd0 /directory * tar -cvfzM /dev/fd0 /directory (spans multiple diskettes) iv. Unmounting the diskette (the "unmount" command) e. Restoring the backup XVII. The RedHat Package Manager (RPM) a. Working with RPMs i. RPM vs. SRPM ii. Naming conventions (noarch, i386, i586, i686, alpha) b. RPM command structure i. rpm -ivh rpmname.rpm ii. rpm -Uvh rpmname.rpm iii. rpm -qpl rpmname.rpm iv. rpm -qa (can be redirected or piped for easier viewing) XVIII. Viewing and Managing Logs a. The /var/log directory b. Log file rotation c. Special log files (httpd) XIX. Viewing and Managing Processes a. Viewing processes (the "ps" and "pgrep" commands) b. Killing processes (the "kill" and "pkill" commands) i. Command switches ii. Process numbers XX. Getting help a. The "man" system i. Paging through "man" entries ii. Using "man 'command' | col -b" iii. Web-based man pages b. The "info" system XXI. Regular Expressions (regex) a. The "grep" command b. The "sed" command c. Using Perl to work with regex XXII. Building RPMS a. Creating the RPM sandbox b. Writing "spec" files c. Organizing and creating the tarball for SOURCES d. Building the RPM application e. RPMS vs. SRPMS f. Testing the RPM application g. Using *.src.rpm to improve packages XXIII. Writing shell scripts a. Similarities between shell scripts and batch files b. The "she-bang" header (#!/bin/sh, #!/bin/bash, #!/bin/tcsh, etc.) c. Executing shell scripts d. Using "history" and "script" to help with writing scripts e. Documenting shell scripts XXIV. Perl a. Using Perl b. Reading Perl scripts c. Writing Perl scripts d. Sample Perl scripts XXV. Scheduling with cron a. The cron utility b. The /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly directories c. The crontab command i. Options and switches ii. Default editor d. Manipulating cron with a text file XXVI. Monitoring the system a. Using "top" b. Examining disk usage with "du" c. Examining the overall filesystem with "df" d. Hard and soft disk quotas e. Using "netstat" f. Recovering from a brown-down with "fsck" g. The "arp" tables h. The "traceroute" command i. The "tcpdump" command j. The "ping" command k. Reading the /proc filesystem i. List the /proc filesystem ii. lspci iii. free iv. lsmod v. apm (laptop only) l. The "vmstat" command XXV. Using the "bash" shell a. Shell variables, Environmental variables b. Simplifying your command line experience c. Shell configuration files. d. The "if-then" and "if-then-else" statements e. Special escape characters XXVI. System Startup a. The /etc/rc.d scheme b. Killing (K) and Starting (S) daemons and processes c. Run levels d. Modifications on SME/E-smith XXVII. Compiling Software a. The Makefile b. Running "configure" c. make, make install, make clean d. Placement of the resulting programs e. Writing your own "program" f. Compiling your code XXVIII. Internet Utilities and Applications a. wget b. lynx c. ssh d. ftp e. scp f. telnet XXIX. MySQL - Relational Database Software a. Associated utilities i. mysqladmin ii. set_permission iii. mysqldump b. Basics c. Remote administration XXX Backups a. The "dump" command b. The "cpio" command c. The "tar" command revisited d. The SME/E-smith approach to backups XXXI. Miscellaneous a. The "cal" command b. The "compress" and "uncompress" commands c. Command line math with "bc" d. The "who" and "w" commands e. The "id" command f. The "su" command g. The "file" command h. The "sort" command i. The "uniq" command j. The "cat" command k. The "head" and "tail" commands