From 95c1eb85ca3d0f57970a4c13609a54cae526c6f3 Mon Sep 17 00:00:00 2001 From: Tomas M Date: Sun, 23 Sep 2012 01:36:43 -0500 Subject: [PATCH] cleanup script killall5 support --- initramfs/cleanup | 22 ++++++++++++++++++++-- initramfs/initramfs_create | 3 +++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/initramfs/cleanup b/initramfs/cleanup index 140903a..6002a74 100644 --- a/initramfs/cleanup +++ b/initramfs/cleanup @@ -13,13 +13,31 @@ # on Slackware, add this to rc.0: # /mnt/live/lib/cleanup --start /sbin/$command # +# It may be needed to call this script with --kill from your shutdown scripts +# instead of calling regular killall5, to prevent fuse filesystems from being killed +# +# Author: Tomas M +# + +if [ "$1" = "--killall5" ]; then + # kill all unneeded processes, which have smaller ID then the ID of + # current shell's parent process. We can't use killall5, as it would kill some + # processes which may be currently needed, for example fuse filesystems (ntfs-3g). + for pid in $(/mnt/live/bin/ps | grep -v "PID" | grep -E -v "\[.*\]" | grep -E -v "mount|posixovl|fuse" | sed -r "s/^ +//" | cut -d " " -f 1); do + if [ $pid -lt $PPID ]; then + LIST="$LIST $pid" + fi + done + + kill -SIGTERM $LIST 2>/dev/null # SIGTERM + sleep 2 # give processes some time to end + kill -SIGKILL $LIST 2>/dev/null # SIGKILL +fi if [ "$1" = "--start" ]; then # this is our first call. We will setup everything so the actual init actually # reloads, but calls this script again instead of itself - cd /mnt/live - rm sbin/init cp "$0" sbin/init pivot_root . memory/union echo "$2" > /lib/command diff --git a/initramfs/initramfs_create b/initramfs/initramfs_create index 153af77..74575bf 100755 --- a/initramfs/initramfs_create +++ b/initramfs/initramfs_create @@ -1,4 +1,7 @@ #!/bin/bash +# Create initramfs image +# Author: Tomas M +# . ../.config