shell

du --exclude=home --exclude=proc /var | sort -nr | head -n 100

ftp in 1 line

curl -u user:password -T file ftp://server/dir/file

How to check Linux / Unix distribution version

cat /proc/version Linux version 2.6.18-5-686-bigmem (Debian 2.6.18.dfsg.1-13etch3)

Killing processes

ps -ef | grep process_name

skill -9 -u 'username' -c process_name

killall spork

pgrep sendmail

Prints the process IDs of all sendmail processes.

pgrep -G daemon -v

Prints the process IDs of all processes whose group ID is not daemon.

pgrep -d, -u root sh

Prints the process IDs of all shells whose effective user ID is root, separated by commas.

New in 2003: pgrep -u root -r ssh

Prints the process IDs of all ssh processes whose effective user ID is not root.

New in 2003: pfind ssh -not -user root

Prints the process IDs of all ssh processes whose effective user ID is not root.

New in 2003: pfind -user root -any perl -details -ask -then QUIT

Deleting a directory (reccursively)

rm -Rf directory_path

Display the list of process running and their memory footprint

ps -eo pid,pmem,size,args --sort=-size

It shows every process ID with the percentage of memory used, the actual KB of memory used and the full command w/ command line options. And sorts everything by used memory.

Environements variables

Display all env variables:

env

Display one env variable

echo $LOGON

Assign a value to an env variable

export PATH=${PATH}:${ANT_HOME}/bin

Chmod reccursively

chmod -R ...

Check out the informations in http://www.ss64.com/bash/chmod.html

Copy files through ssh using scp

scp username@server.com:/path_to/files path_to_local_destination_file

Examples:-

scp myfile you@remote.machine.org:/userdisk/yourdir

Copy the file called ``myfile'' from the current directory to the directory called ``userdisk/yourdir'' belonging to the user ``you'' on the computer ``remote.machine.org''.

scp "you@remote.machine.org:/userdisk/yourdir/*" ./

Copy all files from the directory called ``userdisk/yourdir'' belonging to the user ``you'' on the computer ``remote.machine.org'' to the current directory. For further information see section 8.7.

Console commands

    • CTRL + R : will search in all the commands typed not only in the current session

    • cd - : to come back to previous folder

    • CTRL + K : delete all chars after cursor

Process commands

before the comand:

nice

A nice value of −20 is the highest priority and 19 is the lowest priority. The default nice value for processes is inherited by its parent process, usually 0

nohup sh -c 'command line' &

enabling the command to keep running after the user who issues the command has logged out

'a command '&& notify-send 'Done'

will pop up when the command has finnished

Call another shell script:

source ~/another_bash.sh

Swap

My system uses a lot of swap and I have no idea of how to tell it to use the RAM when it's available ...

I've found this:

cat /proc/sys/vm/swappiness

60

The value of 60 is often the default on SuSE Linux systems. This value ranges from 0 (less likely to swap) to 100 (very likely to swap). I notice that by setting it to 10, the system uses much less swap memory than before.

/proc/sys/vm/swappiness

The above code will set the value temporarily. To set it permanently so that it takes effect on each boot, edit the /etc/sysctl.conf file and add the line:

vm.swappiness=10

Changing the value contained into swappiness should help you tuning how your system swap.

Setting up public key authentication over SSH

Every time I want to setup public key authentication over SSH, I have to look it up, and I've never found a simple guide, so here's mine.

Generate key on local machine

ssh-keygen -t rsa

It will ask you for a password but you can leave it blank.

Note you could also pick -t dsa if you prefer.

Ensure that the remote server has a .ssh directory

Make sure the server your connecting to has a .ssh directory in your home directory. If it doesn't exist you can run the ssh-keygen command above, and it will create one with the correct permissions.

Copy your local public key to the remote server

If your remote server doesn't have a file called ~/.ssh/authorized_keys2 then we can create it. If that file already exists, you need to append to it instead of overwriting it, which the command below would do:

scp ~/.ssh/id_rsa.pub remote.server.com:.ssh/authorized_keys2

To copy to an existing .ssh/authorized_keys (99% of time):

cat ~/.ssh/id_rsa.pub | ssh user_name@remote.machine.com 'cat >> .ssh/authorized_keys'

You may also be able to remove the exact known host with the following command via ssh on your local machine. Remember to replace mt-example.com with your own domain.

ssh-keygen -R mt-example.com

Finding a file

Here's an example find command using a search criteria and the default action:

find / -name foo

will search the whole system for any files named foo and display them. More examples here.

Finding a file containing a string

For example search for a string called redeem reward in all text files located in /home/tom/*.txt directory, use

$ grep "redeem reward" /home/tom/*.txt

Task: Search all subdirectories recursively

You can search for a text string all files under each directory, recursively with -roption:

$ grep -r "redeem reward" /home/tom

Recursively remove .svn directories

find . -type d -name .svn | xargs rm -rf

How to exit a process

[18:29:18] … What about Ctrl + Z

[18:29:26] … ?

[18:29:39] Marco i: now write 'jobs

[18:29:40] … '

[18:29:41] … jobs

[18:29:52] : Stopped telnet localhost 11211

[18:30:01] : do: kill %1

[18:30:11] … It kills the first stopped job.

[18:30:18]: [1]+ Terminated telnet localhost 11211

[18:30:23] Marco Lazzeri: ok

[18:30:27] … now you're out

[18:30:33] Jean-Michel Garnier: OK, I will add this trick to my linux trick. Thanks again

[18:30:39] Marco i: but having ctrl + ] as font increaser is NOT good ; )

[18:31:00] … You know that with CTRL + Z you can stop jobs.

[18:31:21] … Then if you issue 'bg' you send it to background

[18:31:36] … While if you issue 'fg' you take it back to your screen: foreground.

[18:31:44] Jean-Michel Garnier: I have learned it today

[18:31:57] Marco i: It can be uself.

[18:31:59] … useful

[18:32:05] … especially when working on remote systems.

[18:32:16] … when you don't have graphical shell

[18:32:29] … or when opening more terminals is a waste of time

Remote control with vnc

vncviewer -fullscreen 192.168.2.23:0

If you want to quit vncviewer: Press 'F8' and select Quit viewer

RFormat an external USB hard drive to ext2

sudo umount /dev/sdb1

[sudo] password for jeanmichel:

jeanmichel@21x100:~$ mkfs.ext2 /dev/sdb1

mke2fs 1.40.2 (12-Jul-2007)

warning: 424 blocks unused.

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

61166016 inodes, 122093568 blocks

6104699 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=0

3726 block groups

32768 blocks per group, 32768 fragments per group

16416 inodes per group

Superblock backups stored on blocks:

Tar / Untar a file

Tar:

tar czf /path/to/output/folder/filename.tar.gz /path/to/folder

Untar:

tar xvf tsung-1.2.1.tar.gz && rm tsung-1.2.1.tar.gz

CPU Usage

top

type "1" to see mutliple cups

Hard drive Usage

du --exclude=home --exclude=proc * | sort -nr | head -n 100

Then for each directory:

How to check if an IP is denied from ssh acces

grep 88.6.173.50 /etc/hosts.deny

How to make multiple folders

You can make multiple folders in bash and other shells with {folder1,folder2} :

mkdir /usr/local/src/bash/{old,new,dist,bugs}

Which version of packages I have installed?

dpkg -l | grep openssl

Configure /etc/init.d

sudo sysv-rc-conf

provides a terminal GUI for managing "/etc/rc{runlevel}.d/"

Free space on hard drive

DF command reports how much free disk space is available for each mount you have. When executing DF, I like to use the -h option, which returns the output in a more readable format:

wtn@wtn2:~$ df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda1 7.5G 2.1G 5.1G 30% /

What time is it?

$ date

Thu Jul 17 08:30:46 GMT 2008

See What Version of a Package Is Installed on Ubuntu

dpkg -s

Is drive mounted?

if [ ! -d /backup/mydir ]; then

echo "drive not mounted"

fi

List processes with ports they use

netstat -nlp

Installing latest ruby 1.8.x with backport debian

aptitude -t lenny-backports install ruby-dev ruby ri rdoc irb libreadline-ruby libruby libopenssl-ruby

http://doc.ubuntu-fr.org/apt-get

/etc/apt/sources.list