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

Cron не запускает комманду

 ,


0

1

Проблема такая. У меня есть скрипт:

#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
SILENT=true
	PROCESS="[p]lasmashell" #Название процесса 
	ret=$(ps aux | grep "$PROCESS" | wc -l)
	if [ "$ret" -eq 0 ]
then {
    sleep 1  #delay
	exit 1
}
else 
{
	#echo "Plasma running"
    PROCESS=${PROCESS//[/}
    PROCESS=${PROCESS//]/}
    PROSESSPID=$(pidof "$PROCESS")
    killall $PROCESS 
    sleep 2
    export QSG_RENDER_LOOP=basic
    /usr/bin/kstart5 $PROCESS 
    
    exit 0
}
fi;
Я повесил его на cron. Но дело в том, что какие то команды крон выполняет, а какие то нет. Так команда killall отрабатывет нормально и убивает плазму, но вот комманда kstart5 не выполняется, поэтому plasma не перезапускается. Я читал на форумах что надо указать cron полный путь, но это не помогает. В скрипте я и полные пути указал и export PATH сделал, все равно глухо. Скажите, что я делаю не так

Но зачем такие костыли? Вот мой скрипт перезапуска Плазмы:

#!/bin/bash

killall plasmashell

exec /usr/bin/plasmashell

exit 0
Deleted
()
Ответ на: комментарий от Deleted

Она за неделю аптайма может мегабайтов семьсот выжрать, и если надо запустить жирную игру - лучше перезапустить Плазму.

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

Наверное. У меня их штук 10 навешано)

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

У меня релогин или ребут подобен пожару)) Ибо куча всяких окон на рабочих столах, да плюс veracrypt монтируется - в общем, нафиг-нафиг.

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

Попробывал, не запускается. Это что то cron чудит с путями, хотя я их явно указал, как мне кажется. А зачем такие костыли - я часто работаю под xfce и по этому не хочу чтобы плазма запускалась когда я работаю в другом графическом окружении

konstantinz
() автор топика
Ответ на: комментарий от konstantinz

Не, я про это:

я часто работаю под xfce и по этому не хочу чтобы плазма запускалась когда я работаю в другом графическом окружении

С чего бы Плазма запускалась в это время? Когда ты логинишься в Xfce, то и запускается Xfce.

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

Почему запустит - крон же не смотрит что у меня за графический стол. Он просто по рассписанию выполняет команды. А если у него прописано перезапустить плазму, то он как и написанно в скрипте сначало попытается убит несуществующий процесс, а потом, следующей инструкцией запустит его. Вот я и включаю в скрипт проверку, какая графика работает

konstantinz
() автор топика
Ответ на: комментарий от Deleted

Кстати, я скормил крону открытым текстом

*/2 * * * * killall plasmashell; exec /usr/bin/plasmashell; exit 0
И все равно - убить убивает, а не запускает. Может это что то с разрешениями

konstantinz
() автор топика
Ответ на: комментарий от Bootmen

Можно увеличить

sleep 60

пока killall закончит свои дела.

Bootmen ☆☆☆
()
Ответ на: комментарий от Deleted

Она за неделю аптайма может мегабайтов семьсот выжрать

За неделю, счастливый человек. У меня на второй день после комбинаций запуска qemu/steam/100 вкладок фуррифокс, начинает жрать и побольше гораздо. Сбрасываю кеш через tail /dev/zero, мне кто-то приводил аргументы, что я делать этого не должен, но объективных я не увидел. До такой чистки, я вижу ругань qemu «Can't allocate pc.ram», а после - нет. Но даже с учётом, что я это делаю, комп ребутаю каждый второй день минимум.

fehhner ★★★★★
()
Ответ на: комментарий от konstantinz

если у тебя крыса запущена, плазмашелл не стартует процесс всего скорее.

fehhner ★★★★★
()
Ответ на: комментарий от Deleted

tail /dev/zero
Как это работает?

У меня запущено много приложений, потом я их завершил. Они кешированы в оперативке зачем-то и должна освободиться по требованию, в реальности этого никогда не происходит. Добавь виджет оперативки на рабочий стол, запусти всякого халама кучу, чтобы стала занята, потом закрой всё и посмотри, сколько свободно. Я пытаюсь запустить qemu, он гвоорит, что не может выделить оперативку 3 гига например - вся забита дерьмом.
Выполняю эту команду, секунды за 3 оперативка забивается нулями, вместо этого дерьма. В дело вступает оом киллер и прибивает процесс. Смотришь на виджет оперативки - максимально возможное количество осбодилось, qemu запускается и не ругается на недостаток.

fehhner ★★★★★
()
Ответ на: комментарий от Deleted

У меня нет такой проблемы сейчас в debian 10. Хотя месяца 2-3 назад была. С каким-то обновлением иксов починилось. Теперь за несколько недель без разлогина и ребута ничего не течет.

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

запусти всякого халама кучу, чтобы стала занята, потом закрой всё и посмотри, сколько свободно

Столько же, сколько было до этого, в принципе. А у тебя что-то странное творится.

Ты уверен, что команда именно та? обычно кэши сбрасывают так:

echo 3 > /proc/sys/vm/drop_caches

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

Выполняю эту команду, секунды за 3 оперативка забивается нулями, вместо этого дерьма. В дело вступает оом киллер и прибивает процесс

Не, у тебя явно что-то не так с системой)) Ты в sysctl ничего не трогал?

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

Я вообще ничего из железа не люблю, только кроме нвидии в Линуксе ничего не работает как надо. Даже интеловский драйвер какие-то фортели выкидывает.

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

Не, у тебя явно что-то не так с системой))

Как ты это понял, что что-то не так? Ну мб, это способ не самый элегантный, но он быстро забивает всю доступную оперативку нулями.
Может и правда что-то не так, тогда не только на этой связке арч+плазма и не 1 год. В сисконтроль ничего не менял. Попробую твой способ дропа кешей позже, при повторении ситуации.
Сейчас запустил фуррифокс, запустил стим - отожрало 2Гиг. Прибил то и то, всё освободилось, повторить проблему не удалось. Происходит через пол дня-день активного ресурсоемкого использования, отпишу по результатам к вечеру или завтра.

fehhner ★★★★★
()

Короче, я просто зациклил выполнение скрипта, а в конце цикла поставил инструкцию

sleep 30m
и прописал скрипт в автозапуск. Во всяком случае, так нормально работает
#!/bin/sh
x=10
PAUSE_TIME=30m
while [ $x -gt 0 ]
    do
	PROCESS="[p]lasmashell" #Название процесса 
	ret=$(ps aux | grep "$PROCESS" | wc -l)
	if [ "$ret" -eq 0 ]
            then {
            /usr/bin/notify-send --expire-time=10000 "Plasma not running"
            sleep 1m  #delay
            }
            else {
                /usr/bin/notify-send --expire-time=10000 "Reload plasma"
                export QSG_RENDER_LOOP=basic
                PROCESS=${PROCESS//[/}
                PROCESS=${PROCESS//]/}
                PROSESSPID=$(pidof "$PROCESS")
                killall $PROCESS 
                sleep 2
                /usr/bin/$PROCESS >/dev/null &
                sleep $PAUSE_TIME
            }
        fi;
    done

konstantinz
() автор топика
Ответ на: комментарий от konstantinz

sleep 30m

Эээм, что??? 30 минут??? Если нужно так часто, а не раз в сутки самое большое - у тебя с системой что-то не так. Да и какой прикол наблюдать эти моргания??
Зачем получать processpid, если делаешь killall по названию?

fehhner ★★★★★
()
Ответ на: комментарий от Deleted

Счас погонял qemu довольно долго, стало звнято 2450Мб по завершении. Запустил tail для проверки - стало 2100 в итоге по счётчику. В следующий раз проверю сбросом кеша.

fehhner ★★★★★
()

Думаю, стоит передавать команде правильный DISPLAY и другие переменные окружения. Хотя это само по себе дикий костыль, из-за чего не очень хочется помогать делать именно его.

f1u77y ★★★★
()
Ответ на: комментарий от Deleted

А что не так с вашей аватарой??

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

Ты уверен, что команда именно та? обычно кэши сбрасывают так: echo 3 > /proc/sys/vm/drop_caches

Простояла плазма работающей ночь, вечером поиграл в стим, открыт только бразуер. Смотрю - занято 3120 Мб.
Выполнил твой способ дропа кешей, стало 3110Мб, офигеть можно как много.
Забил оперативку нулями своим способом, как процесс кильнулся - 2010Мб. Система обычная, твиков в этом плане нет, арч+плазма. Проверял такое поведение и на старом ноуте, на вообще чистой плазме.
Сделал после этого killall plasmashell; sleep 3s; /usr/bin/plasmashell,
НЕ ПРИБАВИЛОСЬ НИ ОДНОГО МЕГАБАЙТА!
Фигнёй страдаете, давно говорю!
Как в голову вообще может прийти ДЕ прибивать и стартовать, да ещё скриптами, чтобы оперативку почистить???
Почему самому не проверить?
Дроп кешей не работает, килл плазмы не нужен, tail /dev/zero - работает, очищает опертивку и прибивается ООМ киллером.

fehhner ★★★★★
()
Последнее исправление: fehhner (всего исправлений: 3)
Ответ на: комментарий от f1u77y

Хотя это само по себе дикий костыль, из-за чего не очень хочется помогать делать именно его.

Да я вообще не понимаю, как так можно. Ещё и каждые 30 минут за мельканием наблюдать, это просто очуметь. Я главное написал, как у меня работает (не костыль, а тросточка джентльменская в сравнении), и ни один не удосужился проверить.

fehhner ★★★★★
()
Ответ на: комментарий от fehhner

Твоя проблема не имеет отношения к теме. У тебя почему-то плохо освобождается память после выключения qemu-виртуалки. У меня просто Плазма распухает раза в 3

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

Твоя проблема не имеет отношения к теме. У тебя почему-то плохо освобождается память после выключения qemu-виртуалки. У меня просто Плазма распухает раза в 3

При чём тут виртуалка? Её наоборот не запустить. Повторюсь, когда твоя плазма «распухнет» ради эксперимента сделай то, что я написал, а потом перезапусти её и проверь, освободился ли хоть мегабайт сверху.

fehhner ★★★★★
()
Ответ на: комментарий от fehhner

То, что ты делаешь, эквивалентно тому, как я запускаю игру, она выжирает всю оперативку, а все остальные процессы резко худеют, сбрасывая жир в своп. И Плазма с 600 Мб может похудеть до 150 Мб.

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

Что самое интересное, Плазма занимая 150 Мб работает так же быстро, как и при 600 Мб. Спрашивается, нахрена вообще нужно такое агрессивное кэширование, если разница за пределами человеческого восприятия?

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

Вангую, что из-за этого все твои проблемы с неосвобождающейся оперативкой.

Ну пофиг, включу сегодня для проверки. Мне одно непонятно: почему оперативка вообще должна быть чем-то занята, если открыт браузер с 15 вкладками, а остальные приложения прибиты.

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