Вы упомянули о необходимости запуска после входа пользователя в систему, но о том, что он будет работать до тех пор, пока система не будет закрыта. Это немного противоречиво, потому что обычно все, что запускается в сеансе X, останавливается, когда сеанс закрывается. Кроме того, если вы хотите, чтобы он запускался в сеансе, отличном от X-windows, вам нужно быть очень осторожным в отношении того, как он реагирует на запуск несколько раз, или стараться запускать его только один раз.
Тем не менее, вот несколько способов запуска скриптов:
- В пользовательском crontab используйте «@reboot» для указания времени, например:
@reboot /path/to/script
Это заставит его работать от имени указанного пользователя и будет запускаться во время загрузки системы и работать до тех пор, пока он не умрет или пока Система выключена.
- Зайдите в приложение "Настройки" (XFCE: Приложения -> Настройки -> Настройки Xfce 4, GNOME: Система -> Настройки и т.д.) И измените приложения, запущенные для вашего сеанса. Вы можете добавить скрипт для запуска как часть сеанса. Это запустится и запустится во время вашего сеанса, но не будет перезапущено, если сценарий умрет.
- Сценарий сеанса может быть обернут сценарием, который запускает программу Python в фоновом режиме, чтобы он продолжал работать после выхода из сеанса, но затем вы должны убедиться, что, если пользователь выходит из системы и возвращается, что он не запускается несколько копий.
- Если вы хотите, чтобы он запускался из сеансов оболочки через SSH и т. П., А не из сеанса X Windows, вы можете поместить его в .profile (.bash_profile, .zprofile и т.д.). Но вам нужно создать фон, как указано выше, и убедиться, что несколько копий не запущены.
- Вы можете просто поместить его в /etc/rc.local и запустить его как пользователь (через "su"), но это начнется во время загрузки, а не во время входа в систему. Лично я бы порекомендовал cront+@ перезагрузиться по этому поводу.
- Вы можете создать сценарий upstart в "/etc /init", это приведет к его запуску во время загрузки, как указано выше, но вы можете перезапустить сценарий, если он по какой-либо причине умрет. Это лучший вариант, если вам нужно убедиться, что он продолжает работать.