Это похоже на намеренную конфигурацию в Дуге Linux. Посмотрите это для обсуждения со ссылками на решения.
Лучшая подсказка там, кажется, добавляет "ДИСПЛЕЙ XAUTHORITY" к к "env_keep" значениям по умолчанию в /etc/sudoers
.
Fedora имеет в /etc/sudoers
следующее и это позволяют sudo somexapp успешно выполняться.
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Вы ищете сигналы SIGTSTP и SIGCONT. Попробуйте это:
trap onsuspend TSTP
trap onresume CONT
Так как программа просто приостановлена и не надежно сказана, я вместо этого настроил бы именованный канал и породил бы сценарий сигнальной метки.
Это просто циклично выполнило бы каждые 5 или 15 минут, пишущий штамп текущего времени в именованный канал и затем спало бы.
Вы могли затем читать из того канала и сделать математику между чтениями - если время переходит больше чем один или два ping, то Вы спали.
В зависимости от того, как точный Вам требуются времена, Вы могли затем выследить файл /private/var/log/system.log (и потенциально/private/var/log/system.0.log.gz) для последнего сна / Стандартное время острова Уэйк, зарегистрированное ядром.
Это будет большим количеством работы, чем доверие сигналам. Вам можно было также выполнить помощника самостоятельно и отправить любой сигнал, который Вы хотите к своему сценарию.
Шесть из один, полдюжины из другого.
SIGSTOP
, который являетсяSIGKILL
кому:SIGTSTP
SIGTERM
. (Другими словами,SIGTERM
“умрите”,SIGKILL
“Вы мертвы”,SIGTSTP
“приостановите” иSIGSTOP
“Вы временно отстранены”.) – Gilles 'SO- stop being evil' 17.04.2011, 15:26