echo "$PROCUPTIME"
[/code]
- log69 blogja
- A hozzászóláshoz be kell jelentkezni
- 991 megtekintés
Hozzászólások
tnx, elmentettem :)
- A hozzászóláshoz be kell jelentkezni
-PROCPID=`pgrep -o "$PROCNAME"`
+PROCPID=`pidof "${PROCNAME}"`
# Ha kell, itt lehet expr parancsot is hasznalni, `expr ${EXPRESSION}`
-PROCSTARTTIME=`echo "$PROCSTARTTIMEJ / $J" | bc -l`
+PROCSTARTTIME="$((echo ${PROCSTARTTIMEJ} / $J))"
-SYSTEMUPTIME=`cat /proc/uptime | cut -d " " -f 1`
+SYSTEMUPTIME=`cut -d " " -f 1 /proc/uptime`
Nem adok mindenre fixet, mert akkor nem tanulsz. A valtozokat igyekezz _mindig_ ${VARIABLE} formaban hasznalni, kulonben egyes specko esetekben megjarhatod. Inkabb erdemes raszokni.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
FAIL
- A hozzászóláshoz be kell jelentkezni
pidof helyett azért kell pgrep, hogy csak a legrégebbi process id-t adja vissza, habár cut-tal ki lehetne kapni az utolsót, de ahogy nézem az alaptelepített freebsd-men pidof nincs csak ports-ban, viszont pgrep-et tartalmazza a core rész, ennyi elég nekem :)
köszi a bc helyettesítést, tényleg jobb
cat-ről már kezdtem leszokni, grep-nél már nem használom, de úgy látszik más esetekben még erős a megszokás :D
- A hozzászóláshoz be kell jelentkezni
- ott megy, ahol van pgrep
- PROCNAME felesleges, ott a $1 ;-)
- a `cmd` helyett javaslom a $(cmd) format
- 'cat foo | cut $args' helyett a 'cut $args foo' szebb
- a PROCUPTIME sorban 1-gyel osztasz? ;-)
A vegso tordofes:
ps -eo etime,pid,comm | grep -v PID | sort -n
Tudom, nem masodpercben van, de innen mar az csak egy lepes.
- A hozzászóláshoz be kell jelentkezni
1) "'cat foo | cut $args' helyett a 'cut $args foo' szebb" - ezt javítottam a "sajátomban"... kössz :D .....
2) "ps -eo etime,pid,comm | grep -v PID | sort -n"
ha nincs másodpercben, és uptime>24h, akkor baj:
$ ps -eo etime,pid,comm | grep -v PID | sort -n | awk '/epiphany/ || /dhclient/'
2-02:59:20 30415 dhclient
06:28:13 7064 epiphany-browse
dhclient két napja megy, és mégis előrébb van felsorolva, a "növekvő sorrendben", mint a 6 órája futó epiphany
3) http://brokestream.com/procstat.html, módosítva itt :D [na most jönnek a cések megölni engem, van még benne felesleges kód bőven :D nem vagyok én c-s [még, vagy nem még :D ]. És amúgy is még mindig pid alapján dolgozik a módosított program. - továbbfejleszteni, hogy "pgrep - szerű legyen", és már nem baj, hogy nincs pgrep :D - boccs, este van nah.. :D ]
- A hozzászóláshoz be kell jelentkezni
$ ps -eo etime,pid,comm | grep -v PID | sort -k 1.1b
Ez valoszinuleg kicsit jobb lesz, csak elsore lusta voltam ;-)
- A hozzászóláshoz be kell jelentkezni
ja, az 1-gyel való osztás azért van, mert hamarjában nem találtam jobb megoldást arra, hogy levágjam a tört részt az eredményből és csak integer maradjon :)
de már javítottam hrgy84 ajánlása alapján.
- A hozzászóláshoz be kell jelentkezni
köszi a javításokat, összegzem az alábbiban (az első integer konverzió tudom hogy felesleges, viszont nem okoz problémát ha mégis lebegőpontost kapnánk a stat-ból más rendszeren):
#!/bin/sh
# GET UPTIME OF THE OLDEST PROCESS IN SECONDS
# jiffy time constant
J="100"
# store process name
PROCNAME="$1"
if [ "$PROCNAME" == "" ]; then exit; fi
# get the pid of the oldest process of that name
PROCPID=`pgrep -o "$PROCNAME"`
if [ "$PROCPID" == "" ]; then exit; fi
# get the start time of the process in jiffy
PROCSTARTTIMEJ=`cut -d " " -f 22 /proc/"$PROCPID"/stat`
# convert to integer
PROCSTARTTIMEJ=${PROCSTARTTIMEJ/.*}
# convert the starttime of the process to seconds
PROCSTARTTIME=$(($PROCSTARTTIMEJ / $J))
# get the uptime of the system in seconds
SYSTEMUPTIME=`cut -d " " -f 1 /proc/uptime`
# convert to integer
SYSTEMUPTIME=${SYSTEMUPTIME/.*}
# get the uptime of the process in seconds (integer)
PROCUPTIME=$(($SYSTEMUPTIME - $PROCSTARTTIME))
echo "$PROCUPTIME"
- A hozzászóláshoz be kell jelentkezni
A:
PROCNAME="$1"
if [ "$PROCNAME" == "" ]; then exit; fi
helyett:
echo ${1:?} >/dev/null
- A hozzászóláshoz be kell jelentkezni
ok köszi
- A hozzászóláshoz be kell jelentkezni
A PROCNAME ertekadast en nem optimalizalnam ki, mert igy a kodbol latszik, mire hasznalja a parameteret.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Azt én sem, az "if test..."-et viszont igen, az "echo... > /dev/null" után jöhet a PROCNAME=$1
- A hozzászóláshoz be kell jelentkezni