Pages

Wednesday, October 31, 2012

My Daily Used Commands

Count the Number of Files
find . -type f | wc -l

Empty a File
echo > filename
>FileName

Tail Last Tailed File
!tail

Find and Remove Files Matching a pattern
find $PWD -type f -name "*Jul-*.ESS-A1.log" -exec rm -f {} \;

Find and Zip files matching a Pattern
find $PWD –type f –name “ess_admin.controllermessages.log.” | xargs tar zcvf one.tar

Differences between 2 files in remote hosts
diff <(ssh alice cat /etc/apt/sources.list) <(ssh bob cat /etc/apt/sources.list)

Find the Symbolic Link
readlink -f LinkFIle

Monitor the active thread count of a process (jvm) on linux
Dev:vx1423:djbs002-bin $ ps uH -p 10343 | wc -l
40

Show Process belong to all Users
ps -ef | grep java

Password Generator
echo "my Password" | md5sum

Find the Command Line Of the Process
ps ux : find the Process ID
cd /proc/<pId of Process>
cat cmdline

List all the Jars loaded by a Process
lsof -p <PID> | grep jar

All process Running as a Specific User
pgrep -l -f -x -u root

Search The File From Multiple Jar Files
find . -name "*.jar" | xargs -tn1 jar tvf | grep --color "log4j.xml"

Show Ports that belong to this PID
netstat --all --program | grep <PID>

Find Time Zone Of the System
date +%Z

Drop all the Connections available now for a Port
iptables -I INPUT -p tcp -dport 80 -j DROP

Find from which package the tool is provided
yum provides /bin/ls

Find all the Specific Process
ps -fp $(pgrep -d, -x java)

List all files starting with dots
ls -ld .[1-9A-Z]*

Reverse A String
rev<<<"This is a test"

Find and Grep a File
find $PWD -type f -exec egrep PAVAN {} \;

Find the Time took Process To Complete
/usr/bin/time -v <command>

Memory Information ( Much Better than Free Command)
vmstat -s -S M | grep mem

Find the Process Based On Command
ps -f -C java

See the Memory Usage of Process
ps aux --sort pmem ( See the MEM column)

find out which cpu processor a process is running on
ps -eo pid,args,psr

Return Number of kernel Threads Owned by a process
ps -o thcount –p

Display Date of the Process Started
ps -o lstart

List Threads By PID along with Thread Start Time
ps -o lwp,lstart --pid <PID>

Find Information of the Parent Process
ps -o ppid= | xargs ps -p <PID>

Count Threads OF a JVM Process
ps uH p | wc –l

Print a stack trace of a running process
Pstack <PID>

Find how many files and application is using
lsof +c 0 | cut -d' ' -f1 | sort | uniq –c

Find and Kill a Process
Ps ux | grep | grep –v grep | awk ‘{print $2}’ | xargs –r kill -9

Print Lines Between 404 and 487
sed -n '404,480p' <File Name>

List all files opened by a particular command
lsof -c java

Determine if port is open or not
lsof -i :22

Kill a Process on the Port
kill -9 `lsof -t -i :port_number`

List all files opened by a particular command
lsof -c java

Check open ports
lsof -Pni4 | grep LISTEN

View details of network activity
lsof -i :7000-8000

show the working directories of running processes
lsof -bw -d cwd -a -c java

find the deleted file ,which is in use
lsof -n |grep delete

Grep from Open Files
lsof | grep "stuff"

View Open File Descriptors for a Process
lsof -p | wc -l

Find The Command Line Of the Process Using Specific Port
cat /proc/$(lsof -ti:631)/cmdline

Find out what is listening on a series of ports
/sbin/fuser -n tcp {7000..8000}

Get the 10 Biggest Files
du -sh * | sort -n | tail

Convert Of Bytes to Mbs
units --terse "3415014314 bytes" "MB"

SSh and Execute a Command
ssh root@<Remote Machine> -q 'echo $MYDIR’

Find out which process is using up your memory using ps, awk, sort.
ps aux | awk '{if ($5 != 0 ) print $2,$5,$6,$11}' | sort -k2n

Create Multiple Files at a Time
touch $(seq -f "file%02g" 10)

Find Whether The Process is 32Bit or 64Bit
file -L /proc/<PID>/exe

The Output would be some thing like this
/proc/6462/exe: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped

Find Whether a port is open on a Remote Host
nc -z <Ip Address> <port>; echo $?
1

1:Running and Open
0:No

Last Boot Time
who -b
system boot May 31 23:59

Find the Operating System Type
cat /etc/issue

tmpwatch
Remote Files which havenot been accessed for a period of Time
tmpwatch -umc -v 24 /test : Delete Files that are not accessed under 24 hours

Show Ports that Belong to a Process
netstat --all --program | grep <PID>

HostIP
/usr/bin/gethostip www.google.com
www.google.com 74.125.227.50 4A7DE332

Find the File Permission of a file
stat –printf="%a\n" <File Name>

Execute a Script on the Remote Host
ssh <User ID>@<Host Name> 'sh' < $PWD/<Script Name>

M4 : Replace
This command takes an input file and substitutes strings inside it with the parameters passed, similar to substituting for variables. For example, here is an input file:
$ cat temp

The COLOR fox jumped over the TYPE fence.
Were you to substitute the strings "COLOR" by "brown" and "TYPE" by "broken", you could use:

$ m4 -DCOLOR=brown -DTYPE=broken temp
The brown fox jumped over the broken fence.
Else, if you want to substitute "white" and "high" for the same:

$ m4 -DCOLOR=white -DTYPE=high temp
The white fox jumped over the high fence.

Status Of the HTTP
curl -o /dev/null --silent --head --write-out '%{http_code}\n' <url>
200
-o /dev/null throws away the usual output
-silent throws away the progress meter
-head makes a HEAD HTTP request, instead of GET
-write-out '%{http_code}\n' prints the required status code

Number Of Active Physical Processors
Dev:vx1423:djbs002-~ $ cat /proc/cpuinfo | grep physical.id | sort -u | wc -l
2

Number of CPU cores per Processor
If this number is 1 and physical CPUs is 2, then each of the 2 physical processors has 1 CPU cores, leading to a total of 2 cores.

Dev:vx1423:djbs002-~ $ grep cpu.cores /proc/cpuinfo | sort -u
cpu cores : 1

Number of Logical Processors
For each processor core that is physically present, the operating system addresses two virtual or logical cores, and shares the workload between them when possible. The main function of hyper-threading is to decrease the number of dependent instructions on the pipeline

Dev:vx1423:djbs002-~ $ grep processor /proc/cpuinfo | wc -l
2

Find Whether a Port is Open On a Remote Machine
nmap -p 16162 vx1528

Interesting ports on eth0.vx1528.uprr.com (67.206.10.243):
PORT STATE SERVICE
16162/tcp open unknown

Find OS and Other Information about a Remote Host
[root@vx111a ~]# nmap -O 172.16.11.178

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2013-03-19 18:52 IST
Interesting ports on 172.16.11.178:
Not shown: 1672 closed ports
PORT STATE SERVICE
25/tcp open smtp
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
1026/tcp open LSA-or-nterm
3389/tcp open ms-term-serv
MAC Address: 00:25:64:BB:D8:66 (Unknown)
Device type: general purpose
Running: Microsoft Windows 2003/.NET|NT/2K/XP
OS details: Microsoft Windows 2003 Server or XP SP2

Finding Allocations of Memory For a Proces
pmap -x <PID>| grep rwx | sort -n -k3 | less

List Process By memory usage
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS

List all the Installed Perl packages
perl -MFile::Find=find -MFile::Spec::Functions -Tlwe 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC'

Total Number of Process that Can Be Created
                                        RHEL 2.1 RHEL-3 RHEL-4 RHEL-5 RHEL-6
Max number of processes 11000     32000  32000  32000 32768[1]

RHEL6: [1] default and limit on 32 bit kernels. On 64 bit kernels, limit is 4194304, configurable via /proc/sys/kernel/pid_max

All Open Tomcat Threads
Dev:vx11111:jbs002-~ $ ps -ALcf | grep org.apache.catalina.startup.Bootstrap | wc -l
87

ac - print statistics about users connect time
Dev:vx1111:jbs002-jas $ ac -p
jbs002 37.60
pma002 0.02
root 170.69
jbs001 841.64
total 1049.95

Convert horizontal lines to vertical lines
Dev:vx1379:djbs002-jas $ echo "123456"| fold -w 11
123456

Shows the Java Process along with Command Line
pgrep -fl java

Find The MAC Address
[root@vx111a test]# cat /sys/class/net/eth0/address
00:25:64:b3:19:fd

Find The Command Line Of the Process Using Specific Port
cat /proc/$(lsof -ti:631)/cmdline

Ping a Host Using Specific Interface ( Or can check Internet Connection for an Interface)
ping -I eth0 www.yahoo.com

Scp To transfer a File
Scp /root/file1 root@10.5.11.193:.
.’ Says to the root folder. You can use /tmp or any thing to copy to a specific location

scp -r /dir root@10.5.11.193:. ( Copies a Entire Directory Structure)

Delete a File
Unlink fileName

Describe a Command
[root@vx111a ~]$ type ls
ls is aliased to `ls --color=tty'

DMI table Decoder
[root@vx111a ~]# dmidecode -type bios
Invalid type keyword: ype
Valid type keywords are:
bios
system
baseboard
chassis
processor
memory
cache
connector
slot

ex: dmidecode –type memory : Prints memory relegated things

Last Reboot Information
[root@vx111a ~]# last reboot
reboot system boot 2.6.18-238.el5 Mon Jul 30 12:44 (06:45)
reboot system boot 2.6.18-238.el5 Fri Jul 27 12:39 (06:36)
reboot system boot 2.6.18-238.el5 Thu Jul 26 13:38 (06:59)
reboot system boot 2.6.18-238.el5 Fri Jul 20 13:03 (06:29)

wtmp begins Tue Jul 3 15:22:01 2012

Files Opened By Application
In Order to find the files that are opened by an application we can use the lsof command like,

[root@vx111a bin]# lsof +f | head
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root cwd DIR 8,8 4096 2 /

How do I find how many files an application is using
In order to find how many files and application is using , we can use
lsof +c 0 | cut -d' ' -f1 | sort | uniq –c

Find Out What Partition a File Belongs To
We can use the df command to find out what partition a file belongs,

[root@vx111a perl]# df -T file1
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda7 ext3 49594196 5499736 41534504 12% /

Check the Multi Cast Address Subscribed
There are times where we need to test various address including the multi cast address.To find the multi cast address that was subscribed for the system we can use

[root@vx111a local]# ip maddr
1: lo
inet 224.0.0.1
2: eth0
link 01:00:5e:00:00:fb
link 01:00:5e:00:00:01
inet 224.0.0.251
inet 224.0.0.1

Total Number Of Threads In a Linux Process
For a single-threaded process, you will find all the information about the state of the process under /proc/pid itself. For a multi-threaded process, the /proc/pid will have a sub directory called task. This directory contains contains one sub directory per thread, including the main thread: /proc/pid/task/tid1, /proc/pid/task/tid2, etc. The main thread has the thread ID same as the process ID.

The easiest way to find out if a given process is multi threaded or not is to examine the /proc/pid/task directory. If it contains many sub directories, its a multi-threaded process. Otherwise, it could be a single threaded one.

The Number of Threads that processes have can be given using
cat /proc/<PID>/status

Working Directory of a Current Process
There are many times for a sys admin or even a developer to get the current working directory of a process. We can get this information by visiting /proc/pid/cwd or even by using pwdx command.

According to the man pages, a pwdx command provides the information of the working directory of a process.

If we need to find the current working directory of a process 3349, we can use

[root@vx111a local]# pwdx 3349
3349: /root

Or We can also use

[root@vx111a local]# cat /proc/$(lsof -ti:3349)/cmdline
ro root=LABEL=/ rhgb quiet

Find and Kill a Process
There are some times where we need to find a process and kill it in a single line , here is how it can be done
Ps ux | grep | grep –v grep | awk ‘{print $2}’ | xargs –r kill -9

Find the Command Line Of a Process
Dev:vx1379:djbs002-7996 $ /usr/bin/strings /proc/7728/cmdline
/software/java32/jdk1.6.0_16/bin/java
-Djbs.name=JAS-A2
-server
-Xms512m
-Xmx512m
-XX:MaxPermSize=256m
-Dcom.sun.management.jmxremote.port=10009
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.security.auth.login.config=/config/jboss/ews/1.0/domains/jas/JAS-A2/conf/login.config
-Djbs.logdir=/logs/jboss/ews/1.0/domains/jas
-javaagent:/software/jboss/ews32/1.0/lib/spring-agent.jar
.
.
start

Scheduler class for a process in linux
ps ax --format uname,pid,ppid,tty,cmd,cls,pri,rtprio

Details about Process
ps -fp $(pgrep -d, -x java)

ps -ef : This output shows that the first process that is executed when the system boots

Highest CPU
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 | awk "{ print $2 }"

Tar file correctly Copied or Not
tar -ztf /path/to/archive.tar.gz > /dev/null && echo $? If echo $? = 0

Memory Usage
sar -q 1 | tail -1 | awk '{ print "" $3}' | sed 's/%//g'

Finding the CPU Threshold
top -b -n 1 | awk -F'[:,]' '/^Cpu/{sub("\\..*","",$2); print $2}'

Current User With Session Count
who |
awk '
{ User [$1]++; }
END { for (i in User) printf "%-9s %s\n", i, User [i] }

Top 10 Process
ps -efF "%x %p %P %U %u %y %a" | sort -r | head

Memory Space Details
free -t -m | grep "Total" | awk '{ print "Total Memory space : "$2 " MB";
print "Used Memory Space : "$3" MB";
print "Free Memory : "$4" MB";
}'

Swap memory Details
free -t -m | grep "Swap" | awk '{ print "Total Swap space : "$2 " MB";
print "Used Swap Space : "$3" MB";
print "Free Swap : "$4" MB";
}'

Remove Files Using Find
Dev:vx1111:bs002-jas $ find . -type f -atime +60 -print > ./deadFiles
Dev:vx1111:bs002-jas $ cat ./deadFiles
./JAS-B2/conf/logs/juli.2010-02-11.log
./JAS-B2/bin/logs/juli.2010-01-06.log
./JAS-B2/bin/logs/juli.2009-11-05.log
./JAS-B2/bin/logs/juli.2010-02-11.log
./JAS-C2/catalina.out
./JAS-C2/conf/catalina.out

Dev:vx1111:bs002-jas $ rm `cat ./deadFiles`

How to Find Files That Exceed a Specified Size Limit
find . -size +400 -print

How to List the Newest Files
ls -t

Most recently Created or Changed
ls -tl

List Process By memory usage
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS

Find how many Files are opened for a process
lsof -p <PID> | wc -l
741

Detailed Information
Dev:vx1379:djbs002-~ $ ps -fp $(pgrep -d, -x java)
UID PID PPID C STIME TTY TIME CMD
djbs002 20366 1 0 May13 ? 00:01:03 /software/java32/jdk1.6.0_16/bin/java -Djbs.name=JAS-B2 -server -Xms512m -Xmx512m -XX:MaxPermSize=256m -Dcom.sun.management.jmxre

View What PID is Touching
lsof -p PID Or lsof -p 2424

Also, /proc/PID/ provides lots of info:
Code:
cd /proc/2324
ls –l

Finally, you can attach PID to a file and record all calls:
strace -s 2000 -p PID -o /tmp/pid.log
If you just need to trace a lib calls, try ltrace.

Total number of unique users logged in currently
cat /tmp/a| sed '1,2d' | awk '{print $1}' | uniq | wc -l

List of unique users logged in currently
cat /tmp/a | sed '1,2d'| awk '{print $1}' | uniq

User who is using high %cpu
cat /tmp/a | sed '1,2d' | awk '$7 > maxuid { maxuid=$7; maxline=$0 }; END { print maxuid, maxline }'

Smallest to Largest
Dev:vx1379:djbs002-~ $ ls -s | sort -nr | more

View Command Line
Dev:vx1379:djbs002-7996 $ /usr/bin/strings /proc/7728/cmdline
/software/java32/jdk1.6.0_16/bin/java
-Djbs.name=JAS-A2
-server
-Xms512m
-Xmx512m
-XX:MaxPermSize=256m
-Dcom.sun.management.jmxremote.port=10009

Show Number of Java Process
top -b -n 1|grep java|wc -l
processes per user counter
Dev:vx1379:djbs002-jas $ ps hax -o user | sort | uniq -c
2 avahi
1 dbus
.
.

Cpu & Memory Usage
ps aux --sort=%mem,%cpu

Who Started this process
Dev:vx1379:djbs002-jas $ ps -o comm= -p $(ps -o ppid= -p 28453)
init

How Much Ram Is Being Used
Dev:vx1379:djbs002-jas $ ps -o rss -C java | tail -n +2 | (sed 's/^/x+=/'; echo x) | bc
2245952

Find When a Process Was Started
Dev:vx1379:djbs002-jas $ ps -o lstart 28453
STARTED
Fri May 3 16:41:01 2013

Print ENVIRONMENT Variables associated with a Process
ps ewwo command <PID> | tr ' ' '\n' | grep \=

List Threads by Pid along with Thread Start Time
Dev:vx1379:djbs002-jas $ ps -o pid,lwp,lstart --pid 28453 -L

PID LWP STARTED
28453 28453 Fri May 3 16:41:01 2013
28453 28455 Fri May 3 16:41:01 2013
28453 28456 Fri May 3 16:41:01 2013
..

Show CPU usage for EACH cores
djbs002-jas $ ps ax -L -o pid,tid,psr,pcpu,args | sort -nr -k4| head -15 | cut -c 1-90

26903 5658 0 0.1 /software/java64/jdk1.6.0_24/bin/java -Dprogram.name=run.sh -Dapp.nam
..

Memory Usage
Dev:vx1379:djbs002-jas $ ps -o comm,%mem,args 28453
COMMAND %MEM COMMAND
java 1.8 /software/java64/jdk1.6.0_24/bin/java

Total CPU Usage Percentage
omhq126a:dwls999-~ $ ps aux | awk {'sum+=$3;print sum'} | tail -n 1
261.4

DF in Cloumn Format
df -hP|column -t

Show the working directories of running processes
Dev:vx1379:djbs002-~ $ lsof -bw -d cwd -a -c java
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 9582 djbs002 cwd DIR 253,2 1024 6149 /config/jboss/ews/1.0/domains/jas
java 26417 djbs002 cwd DIR 253,9 4096 131093 /privdir/djbs002

Find the Class File in jars
Dev:vx1379:djbs002-lib $ find . -name "*.jar" | while read line; do unzip -l $line; done | grep AlgDH.class
486 03-26-10 14:20 com/tera/tdgss/jalgapi/AlgDH.class

Java Path
Dev:vx1379:djbs002-lib $ ls -l $(type -path -all java)
-rwxr-xr-x 1 djvm999 jvmgrp 47308 Jul 31 2009 /software/java32/jdk1.6.0_16/bin/java

Discard Ping Output
ping -c 1 $host >/dev/null || { echo " The remote Host is unavailable" ; exit; }

Extract the tar and bz2 file at same time
tar jxf firefox-bin.tar.bz2

Get response from a URL
wget --spider -nv -T 5 -t 1 http://localhost:10011/instance-monitor

Get the Socket Status
Dev:vx1379:djbs002-~ $ netstat -t -n | cut -c 68- | sort | uniq -c | sort -n
      1
      1          State
      4          ESTABLISHED

Test the RPM
rpm -i --test eject-1.2-2.i386.rpm

List File descriptors used by process
lsof -Fpcn -u djhe002 | awk '
 /^p/ { pid=substr($0,2) }
 /^c/ { cmd=substr($0,2) }
 /^n/ { fd[cmd"["pid"]"]++ }
 END  { for (cc in fd) printf("%-20s %i\n",cc,fd[cc]) } ' | sort -n -k 2

File currently Open For writing
lsof | grep -e "[[:digit:]]\+w"

Get the Socket Status
netstat -anl | awk '/^tcp/ {t[$NF]++}END{for(state in t){print state, t[state]} }'
CLOSE_WAIT 429

Happy learning  

Read More