Чтобы запустить команду при загрузке системы, запланируйте ее для @reboot
в cron. Смотрите man 5 crontab
для подробностей. Это означает, что ваша строка crontab должна выглядеть
@reboot screen -m ...
Не используйте su
для этого, поместите команду в crontab пользователя, который должен запустить команду. Таким образом, пользователь может управлять командами без вмешательства пользователя root. (Но если вы хотите запустить команду от имени системного пользователя, не позволяя этому системному пользователю изменить команду из соображений безопасности, лучше использовать что-то вроде su -c /path/to/command www-data
в /etc/rc.local
.)
Экран закрывает окно, когда его команда завершается, и завершает сеанс, когда закрывается его последнее окно. Если вы хотите увидеть выходные данные скрипта после его завершения, выполните другую команду после него, чтобы дождаться ввода. Например, чтобы оставить окно открытым, пока вы не нажмете в нем Enter :
screen sh -c './script.sh; read'
Помните, что на экране хранится только ограниченное количество строк истории. Если для script.sh
иногда не требуется взаимодействие, вам лучше перенаправить его вывод в файл. Если это требует взаимодействия, вы можете использовать экранную команду log
для отправки вывода в файл (и тогда не проблема, если сеанс экрана завершается, когда он не требует ввода).