====== Three lines tip ======
Do you have a tip/hack that's max. three lines long??
=== How do I capture the output of “top” to a file? ===
The command top is a very useful tool to capture information about process running on Linux. Many times this information may need to be captured to a file. This can be done with the following command:
top -b -n1 > /tmp/top.txt
This will run top once write the output to a file and exit.
The command top can also be run so that it will give multiple reports. To run top 5 times and wait 5 seconds between each output the command would be:
top -b -n5 -d5 > /tmp/top.txt
=== Removing whitespaces from filename ===
# i in *.[jJ][pP][gG]; do mv "$i" $(echo "$i" | sed "s/ /_/g"); done
ali
# rename 's/ /_/' *.[jJ][pP][gG]
:)
=== How to get Webserver Version ===
# printf "HEAD / HTTP/1.0nn" | nc $server 80 | grep Server
=== Spliting .tgz file on the fly ===
tar -czf /dev/stdout $(DIRECTORY_OR_FILE_TO_COMPRESS) | split -d -b $(CHUNK_SIZE_IN_BYTES) - $(FILE_NAME_PREFIX)
putting them together agian
cat $(FILE_NAME_PREFIX)* >> /dev/stdout | tar -xzf /dev/stdin
=== Compile on SMP machines ===
export MAKEFLAGS="-j3"
=== Patch & Diff ===
$ diff -c prog.c.old prog.c > prog.patch
$ patch < prog.patch
===== Printing network traffic =====
% sudo tcpdump -Atq -s 0 -i en1
-i en1 will display traffic on your airport card. Use en0 (or nothing, for most systems) for built-in ethernettage. You can add a host line to limit output to a particular host
% sudo tcpdump -Atq -s 0 -i en1 host foobar.com
===== Couting openfiles per user =====
# lsof | grep ' root ' | awk '{print $NF}' | sort | wc -l
Of course, if you want to drop the count and show the actual processes, you can run:
# lsof | grep ' root '
===== How to check is service is tcpwrapper enable =====
# ldd `which sshd` | grep -i libwrap
or
# strings `which sshd` | grep -i libwrap
===== Comparing files & taking some action based on outcome =====
**Method 1**
cmp -s file1 file2 || {
# do something
}
**Method 2**
cmp -s file1 file2
if [ $? = 1 ]
then
# do something
fi
===== IPv4 parsing / sorting =====
egrep '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'
and
sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4
===== finding a string in a "live" stream =====
tail -f filename |grep --line-buffered STRING
===== Local/remote webserver =====
Serve files on port 8080 for anybody from the directory from where you start this command:
:;while [ $? -eq 0 ];do nc -vlp 8080 -c'(r=read;e=echo;$r a b c;z=$r;while [ ${#z} -gt 2 ];do $r z;done;f=`$e $b|sed 's/[^a-z0-9_.-]//gi'`;h="HTTP/1.0";o="$h 200 OK\r\n";c="Content";if [ -z $f ];then($e $o;ls|(while $r n;do if [ -f "$n" ]; then $e "`ls -gh $n`
";fi;done););elif [ -f $f ];then $e "$o$c-Type: `file -ib $f`\n$c-Length: `stat -c%s $f`";$e;cat $f;else $e -e "$h 404 Not Found\n\n404\n";fi)';done
===== Local/remote webserver #2 (python) =====
Serve files on port 8000 for anybody from the directory from where you start this command:
python 2.x
python -m SimpleHTTPServer
python 3.x
python -m http.server
If other port is desired (for example 9000) then add port number to the command:
python -m SimpleHTTPServer 9000
===== resolving IP Addresse (nmap) =====
nmap -sL $1 2>/dev/null |
perl -ne 'print unless /^Host [\d.]+ /' |
grep 'not scanned' |
cut -d ' ' -f 2,3 |
sed -e 's/\(.*\) (\(.*\))/\2 resolves to \1/'
output:
198.133.219.10 resolves to fed.cisco.com
198.133.219.11 resolves to asp-web-sj-1.cisco.com
198.133.219.12 resolves to asp-web-sj-2.cisco.com
198.133.219.13 resolves to fedtst.cisco.com
198.133.219.14 resolves to www.netimpactstudy.com
198.133.219.15 resolves to deployx-sj.cisco.com
198.133.219.16 resolves to contact-sj1.cisco.com
198.133.219.17 resolves to scc-sj-1.cisco.com
198.133.219.18 resolves to scc-sj-2.cisco.com
198.133.219.19 resolves to scc-sj-3.cisco.com
198.133.219.20 resolves to jmckerna-test.cisco.com
198.133.219.21 resolves to events.cisco.com
198.133.219.22 resolves to bam-prod-1.cisco.com
198.133.219.23 resolves to redirect.cisco.com
198.133.219.25 resolves to www.cisco.com
198.133.219.26 resolves to partners.cisco.com
===== Linux Get Hardware Serial Number From Command Line =====
dmidecode |grep -i serial
===== Convert pdf to jpg =====
for file in `ls *.pdf`; do convert -verbose -colorspace RGB -resize 800 -interlace none \
-density 300 -quality 80 $file `echo $file | sed 's/\.pdf$/\.jpg/'`; done
===== rename upper to lowercase in bash ====
for x in *.JPG; do y=$(echo $x | tr '[A-Z]' '[a-z]'); echo $y; mv $x $y; done
===== Find duplicate files in Linux =====
Let’s say you have a folder with 5000 MP3 files you want to check for duplicates. Or a directory containing thousands of EPUB files, all with different names but you have a hunch some of them might be duplicates. You can cd your way in the console up to that particular folder and then do a
find -not -empty -type f -printf “%s\n” | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate
This will output a list of files that are duplicates, according tot their HASH signature.
Another way is to install fdupes and do a
fdupes -r ./folder > duplicates_list.txt
The -r is for recursivity. Check the duplicates_list.txt afterwards in a text editor for a list of duplicate files.
===== Linux - Top 10 CPU-hungry apps =====
ps -eo pcpu,pid,args | sort -k 1 -r | head -10
===== Create static mirror of dynamic web site (ex. Wordpress) =====
wget --mirror -w 2 -p -r -np --html-extension --convert-links -R xmlrpc.php,trackback
===== Find processes utilizing high memory in human readable format ======
ps -eo size,pid,user,command | sort -rn | head -5 | awk '{ hr[1024^2]="GB"; hr[1024]="MB"; for (x=1024^3; x>=1024; x/=1024) { if ($1>=x) { printf ("%-6.2f %s ", $1/x, hr[x]); break } } } { printf ("%-6s %-10s ", $2, $3) } { for ( x=4 ; x<=NF ; x++ ) { printf ("%s ",$x) } print ("\n") }'