Сценарий, использование уведомляет - отправляют, отказывается, когда выполнено из Приложений Запуска

Я хочу запустить скрипт Python, который производит настольное уведомление на запуске в Ubuntu 12.04. Как я могу сделать это?

Я попробовал некоторые распространенные способы. На запуске в "PS aux" управляют, чтобы моя программа была перечислена, но никакой графический интерфейс не замечен. Нормальные запущенные скрипты, но сценарии с графической позой / сетевым интерфейсом создают проблему.

  • Мой сценарий удара должен по существу запустить скрипт Python, который повторяет системную команду.
  • Если я вручную инициирую программу позже, она хорошо работает.

import codecs
import time
import urllib2
import os
st = "NULL"
date = time.strftime("%d-%m")
try:
    st = urllib2.urlopen("XYZ.html").read()
except:
    pass
if st != "NULL":
    st.split("XYZ")[0].split("</table>")[0]
    if date in st:
        new = st.split(date)[1:]
        events = ""
        for j in new:
            events += (j.split("</td><td>")[1].split("</td></tr>")[0] + "\n")
        events = events[:-1]
    else:
        events = "Nothing special"
    to_send = "notify-send -i A/B/C.ico " + "'Calender " + date + "-2015' '" + events +"'"
    os.system(to_send)
else:
    to_send = "notify-send -i A/B/C.ico " + "'Calender " + date + "-2015' 'Check Internet connection'"
    os.system(to_send)
exit(0)
1
задан 10 September 2015 в 11:01

1 ответ

Работа команд входит в систему

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

Добавляют к Вашим Приложениям Запуска повреждение, прежде чем сценарий запустится, и он будет хорошо работать:

enter image description here

/bin/bash -c "sleep 15 && python2 /path/to/script.py"

я протестировал Ваш сценарий и с и без повреждения и действительно перестал работать, если я выполнил его без, но успешно выполнился с повреждением.

Несколько комментариев

  • знать, что, если Вы не используете хижину (#!/usr/bin/env python), Вы должны , предшествуют пути к сценарию python для выполнения ее. Неважно, если это - исполняемый файл или нет.
  • В более медленных системах (или в VM), повреждение 15 секунд не могло бы быть достаточным. Раз так попытайтесь запуститься с относительно длинного повреждения, экспериментируя "вниз" к пределу.

  • О сценарии; действительно не изучал его, но я определенно не буду использовать os.system больше, использовать subprocess.Popen() вместо этого, и о, можно сохранить строку путем удаления первого os.system(to_send), и не-располагают с отступом второй, так как Вы выполните команду в обоих случаях после if / else маршрут. :)

1
ответ дан 10 September 2015 в 21:01
  • 1
    Я попробовал различными размерами блока. Производительность, кажется, выравнивается в bs=1024. Я получаю ту же производительность с CP. Я использовал dd в этом примере для подробного вывода. – blinux 27 November 2016 в 01:41

Другие вопросы по тегам:

Похожие вопросы: