2016-02-08 2 views
-1

Я написал сценарий питона, который напоминает мне открыть WhatsApp Web всякий раз, когда открывается браузер Chrome. Чтобы запускать этот скрипт каждый раз, я должен использовать терминал, чтобы запустить скрипт python. Я хочу, чтобы сценарий запускался автоматически через 15-20 минут после запуска системы.Как создать скрипт python за 15 минут после запуска системы?

Вот мой код:

import webbrowser 
import os 
import signal 
import tkMessageBox 
from subprocess import check_output 
from crontab import CronTab 


def get_pid(name): 
    return int(check_output(["pidof","-s",name])) 
'''Script to open whatsapp web whenever chrome is opened''' 

cron=CronTab() 
job=cron.new(command='/usr/bin/echo') 
job.minute.during(1,50).every(1) 
name="chrome" 
if (get_pid(name)): 
    webbrowser.open('http://web.whatsapp.com') 
    tkMessageBox.showinfo(title="Greetings", message="Connect your   phone to chrome to open whatsapp!") 

Я пытался редактировать кронтаб, но это оказалось не очень полезным. Есть ли способ сделать это?

Редактировать-1 Вот мой обновленный код, и он все еще не работает. Когда я запускаю скрипт вручную, он работает, но в противном случае (при перезагрузке).

#!/usr/bin/env python 
    import webbrowser 
import os 
import signal 
import tkMessageBox 
from subprocess import check_output 
import time 

def get_pid(name): 
    return int(check_output(["pidof","-s",name])) 


'''Script to open whatsapp web whenever chrome is opened''' 

name="chrome" 
while(1): 
    time.sleep(600) 
    while(get_pid(name)): 
     webbrowser.open('http://web.whatsapp.com') 
     tkMessageBox.showinfo(title="Greetings", message="Connect your phone to chrome to open whatsapp!") 
     print "Hey" 

Помимо этого, я добавил следующие строки в кронтаб:

@reboot /usr/bin/python /path/to/whatsapp.py & 

Кроме того, я сделал .conf файл, который выглядит следующим образом:

start on runlevel [2345] 
stop on runlevel [!2345] 

exec /path/to/whatsapp.py 

И самая последняя файл журнала для этого выглядит так:

SyntaxError: invalid syntax 
Traceback (most recent call last): 
    File "/path/to/whatsapp.py", line 17, in <module> 
    while(get_pid(name)): 
    File "/path/to/whatsapp.py", line 10, in get_pid 
    return int(check_output(["pidof","-s",name])) 
    File "/usr/lib/python2.7/subprocess.py", line 573, in check_output 
    raise CalledProcessError(retcode, cmd, output=output) 
subprocess.CalledProcessError: Command '['pidof', '-s', 'chrome']' returned non-zero exit status 1 
Traceback (most recent call last): 
    File "/path/to/whatsapp.py", line 20, in <module> 
    tkMessageBox.showinfo(title="Greetings", message="Connect your phone to chrome to open whatsapp!") 
    File "/usr/lib/python2.7/lib-tk/tkMessageBox.py", line 83, in showinfo 
    return _show(title, message, INFO, OK, **options) 
    File "/usr/lib/python2.7/lib-tk/tkMessageBox.py", line 72, in _show 
    res = Message(**options).show() 
    File "/usr/lib/python2.7/lib-tk/tkCommonDialog.py", line 44, in show 
    w = Frame(self.master) 
    File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 2537, in __init__ 
    Widget.__init__(self, master, 'frame', cnf, {}, extra) 
    File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 2049, in __init__ 
    BaseWidget._setup(self, master, cnf) 
    File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 2024, in _setup 
    _default_root = Tk() 
    File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1767, in __init__ 
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) 
_tkinter.TclError: no display name and no $DISPLAY environment variable 

где путь/to - это, очевидно, путь к скрипту.

+0

Ознакомьтесь с анахроническим демонами 'atd'. Запустите выполнение при загрузке с задержкой в ​​15 минут. –

ответ

0

Простые решения часто являются лучшими: сделайте скрипт запущенным при загрузке, а затем спать в течение 15 минут.

0

Я не уверен, что выполнение связанных с cron задач через python поможет вам решить вашу проблему. Crontab имеет специальный синтаксис для планирования команды после перезагрузки, так что вы, вероятно, сделать

@reboot python /my/python/path/message.py 

Если вы хотите, чтобы большая часть этого кода, чтобы запустить через 15 минут после перезагрузки, вероятно, сказать питон скрипт сам, чтобы спать на пятнадцать минут:

import time 
time.sleep(900) # 900 = 60 * 15 
+0

Где добавить заявление '@reboot ...'? И означает ли это, что мне не нужно вводить «./message.py» каждый раз, когда я хочу запустить этот скрипт? – frank

+0

Откройте crontab с помощью 'crontab -e' и добавьте строку @reboot. Добавьте python в начало вашего скрипта python (или внутри вашего 'if __name__ == '__main __' 'block) –

+0

Это вызовет запуск скрипта через 15 минут после перезагрузки. Открытие вашего crontab может сбить с толку, потому что я уверен, что редактор по умолчанию - VIM, с которым вы, возможно, не знакомы. Нажмите «i», введите команду, указанную выше, нажмите «Esc», а затем закройте редактор, набрав «: q» и нажав enter. –

Смежные вопросы