Как запустить программу в назначенное время, если я вошел в систему?
Мне нужно следующее поведение: если я вошел в систему, и это определенное время, а программа еще не запущена, запустите программу. Как мне этого добиться?
4 ответа
Посмотрите на эту команду под названием at
http://manpages.ubuntu.com/manpages/gutsy/man1/at.1posix.html вы можете выполнять команды в определенное время Используйте это для запуска вашего приложения в определенное время
Я бы написал скрипт для CRON.
Чтобы проверить, вошел ли пользователь в систему:
who -a | grep fred
куда fred
имя пользователя, которое вы хотите проверить.
ps -ef | grep appname
Вернет что-то, если найдет appname
работает, так что вы можете проверить это.
Убедитесь, что вы запускаете скрипт с соответствующими учетными данными пользователя (root?)
Так, например, вот фрагмент сценария bash, который показывает тестирование вывода из cmd | grep ....
:
#!/bin/bash
if who -a | grep fred > /dev/null; then
echo "Fred is logged in"
if ps -ef | grep appname > /dev/null; then
echo "User is logged in and app is running"
else
echo "User is logged in BUT appname is not running"
# ---- Do stuff here ----
fi
else
echo "Fred is NOT logged in"
fi
Стоит отметить, что то, как я кодировал grep
означает, что он выполняет поиск по шаблону по умолчанию, так grep jul
найдет julian
а также july
, так далее.
Предполагая, что это приложение является графическим приложением, для подключения которого требуется X-дисплей, я написал бы сценарий, который спит в течение X секунд, а затем запускает приложение, где X - количество секунд до желаемого времени. Затем запустите это через Startup Applications.
Что-то вроде этого:
#!/usr/bin/env bash
# run at 16:30
h=16 m=30
while true; do
# grab current hour and minute
read now_h now_m < <(date "+%H %M")
# calculate approximate number of seconds until 16:30 using modular
# arithmetics
(( s = (1440 + (10#$h*60 + 10#$m) - (10#$now_h*60 + 10#$now_m)) % 1440 * 60 ))
printf "Sleeping %d seconds\n" "$s"
sleep "$s" && theapp
done
Это должно запускать приложение где-то между 16:30 и 16:31 каждый день, когда вы вошли в систему.
Другим вариантом является использование запланированных задач, с его помощью вы можете указать множество вещей https://apps.ubuntu.com/cat/applications/gnome-schedule/ скачать его по адресу: apt://gnome-schedule