Как упоминает @DavidDai в своем комментарии, было бы лучше запускать их как системные службы (, например. создав для них служебные файлы systemd или сценарии запуска sysvinit ). Хотя это легче сказать, чем сделать.
Можно продолжать делать это с помощью экрана. Вам просто нужно создать файл конфигурации для экрана и использовать screen -c /path/to/screen/config
(, чтобы переопределить файл конфигурации по умолчанию ~/.screenrc
).
screen -t monitor1 0 sudo /path/to/monitor1.sh args
screen -t monitor1 1 sudo /path/to/monitor2.sh args
screen -t server 2 /path/to/service/script.sh
Если вы хотите, чтобы он запускался с активным определенным окном, вы можете добавить строку, подобную следующей:
select 1
Подробнее см. man screen
.
Вам также потребуется настроить sudo
, чтобы ваш пользователь мог запускать как script1.sh
, так и script2.sh
от имени root.
Это не будет запускаться автоматически при перезагрузке rpi. Вам придется войти в систему и запустить screen
вручную. Для автоматического запуска под вашим uid вы можете запустить его из @reboot
записи crontab (подробности см. в man 5 crontab
).
Вы можете подключиться к этому экранному сеансу как пользователь.
Кроме того, вы можете запустить отдельный экран (, например.screen -d -m -c /path/to/config
)как корень (например. из /etc/rc.local
или cron
как указано выше )и удаление sudo
из первых двух окон и добавление его к последнему:
screen -t monitor1 0 /path/to/monitor1.sh args
screen -t monitor2 1 /path/to/monitor2.sh args
screen -t server 2 sudo -u username /path/to/service/script.sh
Это будет запускаться автоматически при каждой перезагрузке rpi. Вы должны быть пользователем root, чтобы подключиться к этому экранному сеансу.
Наконец, если ваши сценарии мониторинга не нужно запускать от имени пользователя root, вам следует запускать их от имени менее привилегированного пользователя.Возможно, создайте нового пользователя и добавьте его в группу с доступом для чтения ко всему, что им нужно отслеживать.