Как проверить в скрипте, запущен ли емерж? [SOLVED]
this 21 мая, 2010 - 13:47
Есть скрипт для показания прогресса сборки, но потребвалось вставить в него проверку -работает ли емерж.И какие-то грабли!
Pidof, ps aux, pgrep -ничего не работает как надо.То "ожидается использвание унарного оператора", то "слишком длинный список аргументов", то просто не работает.
Вот такой вариант рабочий
#!/bin/bash if [ `pgrep emerge` ] >/dev/null 2>&1; then exit else tail -n 50 /var/log/emerge.log|tac|grep -v "Starting retry"| grep -iE '([0-9]* of [0-9]*)' -o -m 1| sed 's/\(.*\) of \(.*\)/\1 \2/'| awk '{print 100.0*$1/$2}' fi
-но плохо,проверка нормально не работает а этим >/dev/null 2>&1 ругань посылается в дев-нуль.Подозреваю что может из-за того что он на питоне.
Вобщем, как это правильно проверить?
»
- Для комментирования войдите или зарегистрируйтесь
А если так?
Нет, не работает. Выводит
Нет, не работает.
Выводит 100, чего быть не должно.
Собственно ps aux | grep -c 'emerge' c незапушенным емержем выводит 1, -gt 0 вобще не работает.
Это я ошибся.
При работающем emerge у меня
ps aux | grep -c 'emerge'
выводит 2.(Проверял командой emerge --pretend --update --newuse --deep world)
У меня тоже.Но при -lt 2 всё
У меня тоже.Но при -lt 2 всё равно не работает, выводится 100, резуьтат команд после else которые не должны выполняться.
У меня отрабатывает успешно о_О
Может быть алиасы или другие настройки в .bashrc мешают?
Нет, у рута тоже не
Нет, у рута тоже не работает.
А у рута вобще bashrc не оказалось почему-то!(0_0) Значит он системный юзает, надо-таки сделать ему свой...
...
Конечно, будет выводить "2"
Попробуйте
ps aux | grep 'emerge'
и увидете, почему так.>_<
а эта строка - это просто подпись
genlop -c ?
genlop -c ?
У меня не установлен.Из-за
У меня не установлен.Из-за одного скрипта ставить его глупо.
Вот
а эта строка - это просто подпись
Тоже не работает.Выводит ноль
Тоже не работает.Выводит ноль и при запушенном и при не запушенном емерже.
Да и ещё и питон, фу.
.
Этого не может быть.
У вас либо кривой питон, либо кривой ps
у вас по ps aux | grep emerge видно "/usr/bin/python2.6 /usr/bin/emerge имя пакета"?
а эта строка - это просто подпись
Вот-вот!Это меня и пугает- то
Вот-вот!Это меня и пугает- то что где-то, что-то не так видимо.Но всё ведь работает.Что и как проверять даже не знаю.
P.S.Немного поспешил- через sudo работает.Но это не вариант, должно юзером проверятся.И юзер в группе portage вобще-то состоит.
P.P.S.
>у вас по ps aux | grep emerge видно "/usr/bin/python2.6 /usr/bin/emerge имя пакета"?
При запущенном видно.
Пальцем в небо :)
Может быть стоит "кореутиль" (sys-apps/coreutils) пересобрать?
Ой... Я по-моему "не в тот лес пошёл" %)
if pgrep -f
if pgrep -f "$(eselect python
так лучше
Да, вот это рабочий
Да, вот это рабочий вариант.
Тоже пришлось добавить >/dev/null 2>&1 , но не из-за ругани а стандартное подавление вывода.Вот так в итоге
Спасибо, решено.
вообще если вы используете
вообще если вы используете "тяжелую артилерию" (я имею ввиду awk), то наверное логичней всю цепочку tail|grep|sed|awk реализовать с помощью одного вызова awk.
Я его не знаю и не люблю.По
Я его не знаю и не люблю.По мне так выкинуть бы его вобще, всё сидом, например, сделать.Но думать надо (а думать сложно (^_^)), а может и невозможно.
Чем его меньше, тем лучше.
P.S.Вот, выкинул -теперь так
-вроде работает,7 пакетов genlop верно показал.Awk тут ненужен )