-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Thanks Bastian, for your input. Much cleaner approach.

What about the follwing (works fine on my router):

        grep -q -e "${PROG}" "/proc/${pid}/cmdline" && {
                append ignore "${pid}"
                break
        }

Or is there a special need for "grep -F" (=fgrep)?
Also I would not suppress error messages with "2>/dev/null".

Maddes

On 02.02.2010 09:07, Bastian Bittorf wrote:
> * Matthias Buecher / Germany <[email protected]> [01.02.2010 18:20]:
>>  
>>              # check if client connection
>> -            ps | grep -e "^[ ]*${pid} " | grep "${PROG}" >/dev/null
>> +            ps | grep -e "^[ ]*${pid} " | grep -q -e "${PROG}"
>>              if [ $? -eq 0 ]
>>               then
> 
> I propose a more clever variant, which does not fork but
> relies on procfs (but openWRT scripts rely on it anyway..)
> 
> 
> fgrep -q "${PROG}" "/proc/${pid}/cmdline" 2>/dev/null && {
>       some_action
> }
> 
> bye, Bastian

-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAktoWCsACgkQUXXT+9wZdbVGagCfShUUaLbRIc7MxQsxYlcQvgKF
Ae0AnjTsd9m39ZVlzGG6/7MlTICMJytT
=VCeH
-----END PGP SIGNATURE-----
Index: package/dropbear/files/dropbear.init
===================================================================
--- package/dropbear/files/dropbear.init	(revision 19500)
+++ package/dropbear/files/dropbear.init	(working copy)
@@ -1,5 +1,5 @@
 #!/bin/sh /etc/rc.common
-# Copyright (C) 2006-2009 OpenWrt.org
+# Copyright (C) 2006-2010 OpenWrt.org
 # Copyright (C) 2006 Carlos Sobrinho
 
 NAME=dropbear
@@ -91,7 +91,7 @@
 	local pidfile
 	for pidfile in `ls /var/run/${NAME}.*.pid`
 	 do
-		start-stop-daemon -K -s KILL -p "${pidfile}" -n "${NAME}" >/dev/null
+		start-stop-daemon -q -K -s KILL -p "${pidfile}" -n "${NAME}"
 		rm -f "${pidfile}"
 	done
 	[ -z "${pidfile}" ] && echo "${initscript}: no pid files, if you get problems with start then try killclients"
@@ -112,12 +112,10 @@
 		[ "${pid}" -eq 0 ] && break
 
 		# check if client connection
-		ps | grep -e "^[ ]*${pid} " | grep "${PROG}" >/dev/null
-		if [ $? -eq 0 ]
-		 then
+		grep -q -e "${PROG}" "/proc/${pid}/cmdline" && {
 			append ignore "${pid}"
 			break
-		fi
+		}
 	done
 
 	# get all server pids that should be ignored
@@ -130,9 +128,10 @@
 	local skip
 	for pid in `pidof "${NAME}"`
 	 do
-		# check if correct program
-		ps | grep -e "^[ ]*${pid} " | grep "${PROG}" >/dev/null
-		[ $? -ne 0 ] && continue
+		# check if correct program, otherwise process next pid
+		grep -q -e "${PROG}" "/proc/${pid}/cmdline" || {
+			continue
+		}
 
 		# check if pid should be ignored (servers, ourself)
 		skip=0
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEABECAAYFAktoWCsACgkQUXXT+9wZdbUsGQCdFGBYbyxtBgEkMJC3uJznKhOZ
/74AoOeLuj41Pr19D4P9AYYw7Ftj2ZDa
=uVb6
-----END PGP SIGNATURE-----
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to