Ubuntu 14.04.5 LTS
Желаемая функциональность: Удаленные начальные загрузки сервера Ubuntu и автоматически запускают продолжающийся процесс как указанного пользователя. Я могу затем войти в систему удаленно в более позднее время и просмотреть прошлый и текущий экранный вывод продолжающегося процесса.
Текущий план:
Автоматизированные шаги:
Пользователь "человечность" зарегистрирован автоматически к терминалу (TTY) на начальной загрузке:
"sudo nano /etc/init/tty1.conf"
Change: exec /sbin/getty -8 38400 tty1
To: exec /sbin/getty --autologin ubuntu -8 38400 tty1
Пользователь "человечность" выполняет экран GNU:
screen -d -m -S screenname
Пользователь "человечность" выполняет продолжающийся процесс в экране GNU:
screen -S screenname -p 0 -X stuff "command^M"
Ручные шаги в более позднее время:
Я повторно прикрепляю к сессии экрана GNU, запущенной на шаге 2:
screen -r
Вопросы:
Ответы (к моим собственным вопросам)
, Как может команды на шаге 2 & 3 не активируются, когда я вхожу в систему вручную на шаге 4?
Шаг один
я поместил следующее у основания .profile файла в пользовательском каталоге пользователя, автоматически зарегистрированного во время шага 1 выше (/home/ubuntu/.profile):
pgrep processname || /home/ubuntu/processscript.sh
, Когда пользователь автоматически зарегистрирован, эта команда выполнится автоматически, потому что это находится в .profile. Первая часть команды (прежде чем "||" проверит, работает ли 'processname' уже. В противном случае это выполнит вторую часть команды (после "||") т.е. "processscript.sh"... Если 'processname' будет уже работать, то он не будет.
Эта проверка была необходима как процесс, который я хотел выполнить, не мог иметь нескольких экземпляров, работающих одновременно. Кроме того, это решает проблему процесса, выполняющего во второй раз, когда я вхожу в систему вручную позже.
Шаг два
Создают файл сценария оболочки, названный "processscript.sh" со следующим содержанием:
#!/bin/bash
screen -d -m -S screenname &&
screen -S screenname -p 0 -X stuff "/home/ubuntu/command.sh^M"
Гарантируют, что "processscript.sh" находится в/home/ubuntu каталоге, и что это - исполняемый файл с командой:
chmod 744 processscript.sh
вышеупомянутый сценарий оболочки создает экранный экземпляр с именем "screenname", и, если завершено успешно, это наполняет командную строку того экранного экземпляра с командой "command.sh" с возвратом каретки (который является тем, что "^M" в конце делает).
Шаг три
На предыдущем шаге, я встретился с некоторыми проблемами при наполнении команды атрибутами к экранной командной строке (я думаю, что некоторый символьный выход требовался). Для разрешения этого просто я добавил полную команду с атрибутами к сценарию оболочки и использовал это вместо этого. Поэтому создайте другой сценарий оболочки (как выше) названный "command.sh" и добавьте полную команду там.