Stupid Shell Tricks: Difference between revisions
From Federal Burro of Information
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 66: | Line 66: | ||
trap Int14Vector 14 | trap Int14Vector 14 | ||
</pre> | </pre> | ||
=While loops for Fun and Profit= | |||
this script runs until you stop it. It collects file handle usage on a server putting the results in a file in the form: | |||
<timestamp> <total allocated> <free> <maxpossible> | |||
the last three field are from the /proc fs: | |||
3391 969 52427 | |||
| | | | |||
| | | | |||
| | maximum open file descriptors | |||
| total free allocated file descriptors | |||
total allocated file descriptors | |||
(the number of file descriptors allocated since boot) | |||
scripts: | |||
while true; | |||
do | |||
echo `date +%s` | awk 'BEGIN{ORS=""}{print $0 " "}' >> /home/dathornton/s4.t55.file-nr.2008040300; | |||
cat /proc/sys/fs/file-nr >> /home/dathornton/s4.t55.file-nr.2008040300; | |||
sleep 5; | |||
done | |||
You MUST MUST MUST put the sleep in there or "Bad Things Will Happen"(tm). | |||
or in one line: | |||
while true; do echo `date +%s` | awk 'BEGIN{ORS=""}{print $0 " "}' >> /home/dathornton/s4.t55.file-nr.2008040300; cat /proc/sys/fs/file-nr >> /home/dathornton/s4.t55.file-nr.2008040300; sleep 5; done |
Revision as of 13:19, 16 January 2009
du -x --max-depth=1 / | sort -rn
NOW=`date +%a.%d.%b.%Y`
ARGV="$@" if [ "x$ARGV" = "x" ] ; then echo usage: all start, stop, reload, abort, flush, or check exit fi case $# in 0) echo 'Usage: ./snapshot <CPE name> (ie, ./snapshot YCDECUBC)' 1>&2; exit 2 esac trap 'echo "";exit 3' 2 15 trap 'echo fake_tomcat.sh caught 1 HUP \-\> ok bye\! ; exit 3' 1 trap 'echo fake_tomcat.sh caught 3 QUIT \-\> ok bye\! ; exit 3' 3 trap 'echo fake_tomcat.sh caught 9 KILL \-\> ok bye\! ; exit 3' 9 trap 'echo fake_tomcat.sh caught 15 TERM \-\> ok bye\! ; exit 3' 15 TMPFILE=`mktemp /tmp/$0.XXXXXX` || exit 1 To move/duplicate filesystems I have a favorite way to do it locally: # cd $filesystem_to_duplicate # find . -print | cpio -pvdm /mnt ...where /mnt is the new filesystem/slice. To duplicate/move across the network do it like this: # cd $filesystem_to_duplicate # tar cf - . | ssh otherhost "cd /$new_filesystem ; tar xf -" function waitfor { if [ $# -lt 1 ] ; then echo "nothing to wait for" else echo "ok I'll wait" echo Still running = 1 STILL_RUNNING=1 while [ $STILL_RUNNING -gt 0 ] do STILL_RUNNING=`ps -auwwwx | grep $1 | grep -v grep | wc -l` echo STILL_RUNNING = $STILL_RUNNING sleep 1 echo waiting... done fi echo $1 } | tr '\n' ',' TimerOn() { sleep $TIMELIMIT && kill -s 14 $$ & # Waits 3 seconds, then sends sigalarm to script. } Int14Vector() { answer="TIMEOUT" PrintAnswer exit 14 } trap Int14Vector 14
While loops for Fun and Profit
this script runs until you stop it. It collects file handle usage on a server putting the results in a file in the form:
<timestamp> <total allocated> <free> <maxpossible>
the last three field are from the /proc fs:
3391 969 52427 | | | | | | | | maximum open file descriptors | total free allocated file descriptors total allocated file descriptors (the number of file descriptors allocated since boot)
scripts:
while true; do echo `date +%s` | awk 'BEGIN{ORS=""}{print $0 " "}' >> /home/dathornton/s4.t55.file-nr.2008040300; cat /proc/sys/fs/file-nr >> /home/dathornton/s4.t55.file-nr.2008040300; sleep 5; done
You MUST MUST MUST put the sleep in there or "Bad Things Will Happen"(tm).
or in one line:
while true; do echo `date +%s` | awk 'BEGIN{ORS=""}{print $0 " "}' >> /home/dathornton/s4.t55.file-nr.2008040300; cat /proc/sys/fs/file-nr >> /home/dathornton/s4.t55.file-nr.2008040300; sleep 5; done