Как я могу периодически запускать сервис systemd?

[Unit]
Description=captive portal automation

[Service]
Type=simple

ExecStart=/usr/bin/python /home/pi/do.py
Restart=on-failure
RestartSec=5

Выше приведено содержимое службы systemd под названием caportal.service, работающей на машине с Ubuntu 14.04. Мне нужно повторять услугу каждые 30 минут. Как я могу это сделать?

/home/pi/do.py

import requests,json
import netifaces as ni
import commands as cm


gateway=ni.gateways()['default'][ni.AF_INET][0]

IPaddr=ni.ifaddresses('wlan0')[ni.AF_INET][0]['addr']
mac=ni.ifaddresses('wlan0')[ni.AF_LINK][0]['addr'].upper().replace(':','-')
ssid=cm.getoutput('iwgetid -r')
Home="http://"+gateway+":8010/"

URL=Home+"login.html"
print URL
d={}
d['IdSession']=mac
d['Language']='English'
d['refrescar']='0'
d['ip']=IPaddr
d['mac']=mac
d['DSP']=Home
d['AC']='1'
d['userlog']='vishnu'
d['userpass']='12345'
d['read']='checkbox'
d['Login']='+++Go+++'

try:
    if ssid=='machCochin':
        r=requests.post(URL,data=d)
        print r.status_code
        #raise ValueError("ERROR simulated")
    else:
        print "network is not machCochin"
except Exception as e:
    pass
0
задан 3 May 2019 в 12:46

1 ответ

systemd предоставляет аналог заданий cron. Они называются таймером .

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

Что-то вроде:

[Unit]
Description=run my script

[Timer]
OnCalendar=*-*-* *:00/5:05
Persistent=true

[Install]
WantedBy=timers.target

Для запуска каждые 5 минут, например. Я позволю вам копать справочную страницу или поисковую систему, чтобы посмотреть директиву OnCalendar или другие.

Вы даже можете запускать как пользователь, поместив оба файла в ~/.config/systemd/user/ или как root в /etc/systemd/system

Вам нужно активировать таймер, чтобы запустить его после перезагрузки

sudo systemctl enable myservice.timer
[ 1119] Добавьте --user к вышеприведенной команде (и без sudo), если вы запускаете как пользователь из ./config

Затем запустите его с

sudo systemctl start myservice.timer

или

[ 113]
0
ответ дан 3 May 2019 в 12:46

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

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