Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # ddv - `dd' with periodic status check
- #
- # ver 1.00 (09/01/2013) : Initial Release
- # Copyright (c) 2013, Tomoaki Shimoyama
- # All rights reserved.
- #
- # [The BSD 2-Clause License]
- # Redistribution and use in source and binary forms, with or without
- # modification, are permitted provided that the following conditions are
- # met:
- #
- # * Redistributions of source code must retain the above copyright notice,
- # this list of conditions and the following disclaimer.
- #
- # * Redistributions in binary form must reproduce the above copyright notice,
- # this list of conditions and the following disclaimer in the
- # documentation and/or other materials provided with the distribution.
- #
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
- # IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- DEFAULT_INTERVAL=180
- if [ -z "$DDV" ] ; then
- INTERVAL=$DEFAULT_INTERVAL
- else
- INTERVAL=$( expr $( expr $DDV + 0 2> /dev/null ) + 0 )
- if [ $INTERVAL -le 0 ] ; then INTERVAL=$DEFAULT_INTERVAL ; fi
- fi
- sendsig() {
- DD_PID=
- CONTINUE=true
- while [ $CONTINUE = true ] ; do
- sleep $INTERVAL
- if [ -z "$DD_PID" ] ; then
- DD_PID=$( ps al \
- | grep -w dd \
- | grep -v grep \
- | grep -w $1 \
- | sed -e "s/ */ /g" \
- | cut -d " " -f 3 \
- )
- fi
- if [ ! -z "$DD_PID" ] ; then
- kill -USR1 $DD_PID > /dev/null 2>&1
- if [ $? -eq 0 ] ; then
- echo ; date
- else
- DD_PID=
- CONTINUE=false
- fi
- else
- CONTINUE=false
- fi
- done
- }
- sendsig $$ &
- SENDSIG_PID=$!
- fin() {
- kill $SENDSIG_PID
- }
- trap fin EXIT
- dd $@
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement