В Linux: как выйти из программы, но не уничтожить ее?

Я использую Ubuntu 10.10, и у меня есть программа Python (Mnemosyne), что я синхронизирую файлы данных с помощью Dropbox. Вот мой проблемный сценарий. Я оставляю программу, работающую дома, и перехожу к работе, но если я открываю программу на работе и работе над нею, файл данных изменяется, и я освобождаю свой успех дома, когда я выхожу (она автоматически сохраняет) при выходе.

Я думал, что мог создать задание крона для автоматического закрытия Mnemosyne каждое утро независимо от меня не забывающий делать это или нет, но если я использую, закрывают программу, из которой это выходит, не сохраняя файл данных, и я заканчиваю с tmp файлом и сообщением об ошибке, когда я перезапускаю его. Есть ли лучший способ отправить, сигнал выхода к этой программе, эмулирующей меня нажимающий файл>, выходят из пункта меню.

5
задан 22.01.2011, 13:24

7 ответов

Попытайтесь использовать более низкий сигнал уничтожения для программы такой как 3 (SIGQUIT).

4
ответ дан 07.12.2019, 16:51

Вашим описанием я предполагаю, что это - программа GUI, работающая на X-сервере. Попробуйте wmctrl:

wmctrl -c "RegEx for Window Name"

Из страницы справочника: -c <WIN> Close the window <WIN> gracefully.

4
ответ дан 07.12.2019, 16:51

Как насчет того, чтобы запустить программу на экранной сессии дома, таким образом, можно снова соединиться с ним на работе и иметь полный контроль над тем, что происходит?

http://www.howtoforge.com/linux_screen

3
ответ дан 07.12.2019, 16:51

Есть ли на mnemosyne страницы справочника? Возможно, существует близкая команда в документах, которые Вы могли использовать в своем задании крона.

2
ответ дан 07.12.2019, 16:51

Корректный ответ на это зависит от того, что поддерживает Ваша программа. Программа хорошего поведения должна сохранить всю работу и оконечный корректно при получении ТЕРМИНА сигнал, который является значением по умолчанию в уничтожении, таким образом, я предполагаю, что это - то, которое Вы пробовали. Если программа не терпит это и не предлагает никакой другой путь, например, по сокету управления, можно не повезти. В этом случае попытайтесь использовать экранную сессию или исправьте программу или используйте другую.

1
ответ дан 07.12.2019, 16:51

Это является очень зависящим от приложения. Если авторы mnemosyne не предвидели этот вид ситуации и конкретно создали, "сохраняют и выходят при получении сигнала X" из поведения, то Вы в значительной степени застреваете с необходимостью управлять ее пользовательским интерфейсом для выполнения этого.

Однако, как уже предложено, лучшее решение состояло бы в том, чтобы, вероятно, выполнить mnemosyne под некоторой формой совместно использующей дисплей утилиты так, чтобы можно было получить доступ к той же сессии от обоих мест вместо того, чтобы завершить работу его и перезапустить каждый раз, когда Вы перемещаете. VNC является настольным параметром совместного доступа GUI, с которым я являюсь самым знакомым, но существует, вероятно, способ заставить X позволять Вам сделать это на прикладном уровне (в противоположность, чем целый рабочий стол) и существует много других опций там в эти дни, которые могут работать лучше на Вас.

Если это было приложение командной строки, screen работы замечательно (я ежедневно использую его для просто этой цели, предоставляя мне доступ к единственному экземпляру mutt от нескольких местоположений), но я не думаю, что это обрабатывает приложения для GUI (страница справочника, кажется, не ссылается на "GUI" или "X").

1
ответ дан 07.12.2019, 16:51

Как правило единственным способом закрыть программу является сигнал. Как другие сказали, если это не хорошо ответит на уничтожение по умолчанию (который отправляет SIGTERM), то это вряд ли будет иметь надлежащий обработчик для других сигналов также. Нет никакого 'более доброго более нежного' сигнала. Все сигналы кроме SIGKILL рассматривают процесс то же, выполняя обработчик, если это имеет один, или уничтожение приложения.

Тем не менее как gui приложение, существует очень маленький шанс, который оно связывает с библиотекой, что можно управлять приложением. Можно попытаться видеть, можно ли отправить, это обменивается сообщениями с dcop или d-шиной. См. http://dbus.freedesktop.org/doc/dbus-tutorial.html

1
ответ дан 07.12.2019, 16:51

Теги

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