-----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