Advanced Linux For Tech Support: Course Duration: Course Overview

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

ADVANCED LINUX FOR TECH SUPPORT

Course Duration: 5 Days Course overview: This course teaches the Linux development philosophy, the debugging tools, and the kernel programming interface. The emphasis and lab components of the course focus on the debugging of programs that use the Linux API. Intended audience/prerequisites: This course is for people who already know C programming to the level where they are comfortable writing and debugging C programs. The students also need to know the basics of Unix/Linux as a user, especially using an editor, doing file manipulation and making use of other basic Unix/Linux tools. This class stresses debugging of Linux programs. Course objectives: learn the Linux development philosophy learn the GNU debugger learn how to produce good error messages learn how programs work with files and directories learn how programs work with users and groups learn how programs work with processes learn about shared memory learn about POSIX threads learn about reliable signal handling learn how to write a daemon learn how to do interprocess communication learn how to use the socket model for writing UDP and TCP network programs.

COURSE OUTLINE
Introduction Student and Instructor introductions Assumptions about your background Class logistics, schedule Optional companion texts What the class covers Typographic conventions System Calls and Library Functions Error handling Lab GNU make Introduction The Makefile Variables Implicit Rules Adding to make's Implicit Rules Special variables Special target conventions The commands to build the target Including other Makefiles GNU make versus other makes Lab

Debugging with gdb Introduction Compiling programs to be debugged Starting and exiting gdb Working in gdb Breakpoints and watchpoints Continuing and single stepping Viewing data and the stack Demonstration GUI front ends for gdb Demonstration Lab More debugging with gdb Dealing with core dumps Debugging when the program was not compiled for debugging Attaching to already-running programs (attach, detach) Debugging threads and fork() Signals Lab Performance monitoring Solaris-like programs free vmstat iostat netstat top Troubleshooting Summary Web resources Lab Kernel performance issues Overview General guidelines Recompiling Benchmarks ext2 filesystem tuning ext3 filesystem tuning hdparm System limits Summary Lab

Miscellaneous Functions, part 1 Time functions and values Determining system limits at runtime Password and group file functions Lab Files and Directories, part 1 The stat functions File type and permission bits chmod and fchmod check file accessibility File ownership of new files Changing ownership File size File times Lab Files and Directories, part 2 Inode number rename Link count Linking files Unlinking files Symbolic links Filesystem Lab Other I/O Topics Atomic appending File Sharing Synchronous I/O Memory mapped I/O Lab Working with Processes fork Waiting for children Zombies The exec family of functions Lab The Environment of a Process Command line arguments Command-line argument processing Environment variables Process termination Dynamic memory allocation Set user-ID and group-ID files Lab

Simplified signal handling Signal concepts Some important signals Generating signals kill alarm Handling signals Example Lab Reliable signal handling Unreliable signals Reliable signal terminology Signal sets and the functions that work with them Handling signals Interrupted system calls Reentrant functions fork, exec, and signals Lab Miscellaneous Functions, part 2 Resource usage Setting resource limits Non-local gotos Lab Daemon Processes What is a daemon? Becoming a daemon Daemon error logging Lab Advanced I/O, part 1 I/O Redirection fcntl File locking Lab POSIX Threads The POSIX thread model Example Synchronization Thread attributes Linux thread model differences from the POSIX model Converting from Solaris threads Newer thread systems Lab

Network Communication, part 1 IPv4 address structure Byte ordering Name and address mapping Utility functions Example Ports Example Lab Network Communication, part 2 (UDP) An introduction to UDP Function calls used with UDP A sample server A sample client Lab Network Communication, part 3 (TCP) An introduction to TCP Function calls used with TCP A sample server A sample client Lab Network Communication, part 4 UDP programming considerations TCP programming considerations Server architecture choices Getting a signal when I/O is available Socket options Lab Unbuffered I/O Introduction File descriptors open umask close read and write lseek Lab

The Standard I/O Library Introduction Opening and closing FILEs Buffering Other non-I/O stdio functions I/O functions Lab Appendices Solutions and comments about labs

Files and Directories, part 3 Creating directories Deleting directories Changing the current directory The current directory's path Reading from directories Lab

You might also like