Как запустить программу в назначенное время, если я вошел в систему?

Мне нужно следующее поведение: , если я вошел в систему, и это определенное время, а программа еще не запущена, запустите программу. Как мне этого добиться?

0
задан 5 July 2012 в 09:17

4 ответа

Другим вариантом является использование запланированных заданий, с его помощью вы можете указать много вещей. / гнома-график

0
ответ дан 5 July 2012 в 09:17

Я бы написал скрипт для 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 и т. Д.

]
0
ответ дан 5 July 2012 в 09:17

Предполагая, что это приложение является графическим приложением, для подключения которого требуется 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 каждый день, когда вы вошли в систему.

0
ответ дан 5 July 2012 в 09:17

Посмотрите на эту команду, которая называется at http://manpages.ubuntu.com/manpages/gutsy/man1/at.1posix.html , вы можете выполнять команды в определенное время. Используйте ее для запуска Ваша заявка в определенное время

0
ответ дан 5 July 2012 в 09:17

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

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