Мне нужно следующее поведение: , если я вошел в систему, и это определенное время, а программа еще не запущена, запустите программу. Как мне этого добиться?
Другим вариантом является использование запланированных заданий, с его помощью вы можете указать много вещей. / гнома-график
Я бы написал скрипт для 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 каждый день, когда вы вошли в систему.
Посмотрите на эту команду, которая называется at
http://manpages.ubuntu.com/manpages/gutsy/man1/at.1posix.html , вы можете выполнять команды в определенное время. Используйте ее для запуска Ваша заявка в определенное время