Ага, логично, но до опции top
-b я уже докопался, надо было прочитать всего лишь man top. А с этой опцией и awk работает прекрасно. Хотя cut конечно в этом случае красивее, спасибо, попробуем и его.
Пользователь решил продолжить мысль 08 Ноября 2011, 11:16:42:
В и тоге получился такой скрипт.
#!/bin/bash
#limit load CPU to restart deluge
limitCPU=20
#log file
logfile="/var/log/delugetest.log"
delugeCPU=`top -b -n 1 | grep /usr/bin/deluge | awk '{print $9}'`
delugePID=`ps -A | grep /usr/bin/deluge | cut -b-5`
echo limitCPU=$limitCPU delugeCPU=$delugeCPU
echo limitCPU=$limitCPU delugeCPU=$delugeCPU >> $logfile
if (( $delugeCPU > $limitCPU ))
then
echo "---kill deluge---" >> $logfile
kill $delugePID
sleep 3
echo "---start deluge---" >> $logfile
deluge-gtk &
else
echo "---Not restart deluge---" >> $logfile
fi
Осталось грамотно запихать в его в crontab. Я запихнул пока вот так, на каждую минуту для теста.
a3d:~/bin$ tail -3 /etc/crontab
#chek deluge load cpu,kill him and restart
* * * * * root /home/a3d/bin/delugetest.sh
Посмотрите на всё это безобразие, и скажите как более
правильнокрасиво сделать.
Пользователь решил продолжить мысль 08 Ноября 2011, 14:12:56:
Эх нет, не работает

При обычном запуске скрипта из консоли все прекрасно убивается и запускается.
Когда вызов идет через крон, то команда kill срабатывает как надо, а вот новый запуск не работает по команде не по команде `deluge-gtk &` не просто `deluge-gtk` при этом в лог пишется всё правильно.
----
Всё эта проблема решена, просто надо делюгу запускать из скрипта вот так:
DISPLAY=:0 deluge-gtk &
Всё работает теперь и из крона.