1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#!/bin/sh
#
# Licensed under the GPLv2+
#
# Copyright 2008-2010, Red Hat, Inc.
# Harald Hoyer <harald@redhat.com>
PATH=/usr/sbin:/usr/bin:/sbin:/bin
command -v getarg > /dev/null || . /lib/dracut-lib.sh
while [ $# -gt 0 ]; do
case "$1" in
--onetime)
onetime="yes"
;;
--online)
qname="/online"
;;
--settled)
qname="/settled"
;;
--finished)
qname="/finished"
;;
--timeout)
qname="/timeout"
;;
--unique)
unique="yes"
;;
--name)
name="$2"
shift
;;
--env)
env="$2"
shift
;;
*)
break
;;
esac
shift
done
if [ -z "$unique" ]; then
job="${name}$$"
else
job="${name:-$1}"
job=${job##*/}
fi
exe=$1
shift
[ -x "$exe" ] || exe=$(command -v "$exe")
if [ -z "$exe" ]; then
echo "Invalid command"
exit 1
fi
{
# shellcheck disable=SC2016
[ -n "$onetime" ] && echo '[ -e "$job" ] && rm -f -- "$job"'
[ -n "$env" ] && echo "$env"
echo "$exe" "$@"
} > "/tmp/$$-${job}.sh"
mv -f "/tmp/$$-${job}.sh" "$hookdir/initqueue${qname}/${job}.sh"
[ -z "$qname" ] && : >> "$hookdir"/initqueue/work
exit 0
|