LINUX.ORG.RU
решено ФорумAdmin

renice

 


0

2

Помогите допилить до нормально состояния:)

PROGRAMS1='dd cp mv tar rar gzip gunzip unzip rar bzip2 updatedb ffmpeg oggenc mc deluged revdep-rebuild mkisofs emerge eix-update cc1plus m4 cc1 mount.ntfs-3g convert flac find grep dropbox renice.sh'
# PROGRAMS2='rtorrent'

(
   while true; do
	   for i in $PROGRAMS1; do
		   i=`pidof $i`
		   if [[ $i ]]; then
			   if [[ $(ps -p $i) && $(ps -o nice="" -p $i) != 19 ]]; then
				   sudo renice -n 19 -p $i > /dev/null
			   fi
			   if [[ $(ps -p $i) && $(ionice -p $i |awk '{print($3)}') != 7 ]]; then
				   sudo ionice -c 2 -n 7 -p $i > /dev/null
			   fi
		   fi
		   done
	   sleep 20
   done
) &

★★★★

Последнее исправление: beastie (всего исправлений: 1)

Ответ на: комментарий от Deleted

ну там же юзеру дается приоритет. А тут тулзам. Только может это не совсем правильно или может есть отдельная тулза, чтобы это делать

bryak ★★★★
() автор топика
Последнее исправление: bryak (всего исправлений: 1)

ionice --class 3 ...

chrt --idle ...

anonymous
()

pidof $i

$ pidof ssh
10441 9217 9183 7833 7831

Поломался твой скрипт если больше одного одноименного процесса запущено

anonymous
()

$(ps -p $i) &&

лишняя проверка

anonymous
()
PROGRAMS1='dd cp mv tar rar gzip gunzip unzip rar bzip2 updatedb ffmpeg oggenc mc deluged revdep-rebuild mkisofs emerge eix-update cc1plus m4 cc1 mount.ntfs-3g convert flac find grep dropbox renice.sh'
# PROGRAMS2='rtorrent'

exec  >/dev/null
exec 2>/dev/null

while true; do
    for p in $PROGRAMS1; do
        for i in $(pidof $p); do
            if [[ $(ps -o nice="" -p $i) != 19 ]]; then
                sudo renice -n 19 -p $i
            fi
            if [[ $(ionice -p $i | awk '{print($3)}') != 7 ]]; then
                sudo ionice -c 2 -n 7 -p $i
            fi
       done
    done
    sleep 20
done
anonymous
()

Эталонный говнокод. Легче с нуля переписать.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.