Невозможно запустить сценарий tmux при загрузке

У меня есть сценарий запуска tmux, как указано ниже, работающий на Raspbian Wheezy 7.10 :

Я проверил сценарий работы следующим образом:

  • сначала запустив скрипт python sudo /home/pi/bin/myscript.py а затем, введя команду tmux, как указано выше, tmux new-session -d -s sess1 'sudo /home/pi/bin/myscript.py' . Оба сценария запускаются.

Поскольку, если пользователь может вводить и запускать эти сценарии, это безопасное предположение, что полная вещь может быть записана как сценарий bash. Следовательно, вышеупомянутый сценарий 'sess'

  • Шаг 2

Я передаю этот файл, выполняя права через chmod +x /home/pi/bin/sess

  • Шаг 3

Я также попытался запустить скрипт с помощью rc.local следующим образом:

 # in the rc.local file /home/pi/bin/sess & exit 0 

Файл rc.local запускается по факту, так как я установил параметр WLAN при загрузке, чтобы мой Pi присоединился к Ad-Hoc Network.

Я могу ясно проверить это, так как я могу ssh в свой Pi.

Замечания:

При перезагрузке сценарий не запускается. Это можно проверить с помощью команды tmux ls которой указано, что Connection to Server Failed . Я также проверил использование sudo tmux ls incase, если суперпользователь имеет сеанс tmux, но Output тот же.

  • Шаг 4

Я попытался запустить скрипт в crontab используя:

 sudo crontab -u pi -e ## inside the crontab @reboot /home/pi/bin/sess & 

Я также попытался создать работу cron для суперпользователя

 sudo crontab -e @reboot /home/pi/bin/sess & 

Замечания:

После перезагрузки сценарий не выполняется.

  • Шаг 5

Я создал суб-оболочку в rc.local для захвата любой активности запускаемого сценария

 # in the rc.local file (/home/pi/bin/sess &) > /tmp/tmux.log 

наблюдения

при перезагрузке и cat /tmp/tmux.log внутри файла ничего нет. Файл tmux.log создается, хотя

Умозаключения

По иронии судьбы, если вы делаете что-то вроде sudo /etc/rc.local или sudo ~/bin/sess пока я вошел в систему, сценарий запускается отлично, так как я могу фактически присоединить сеанс, используя sudo tmux a а также увидеть список sudo tmux ls

Но поскольку он не может работать во время загрузки, цель бесполезна, если не запускаться при загрузке.

Я также проверил переменные среды $PATH которые на самом деле показывают /home/pi/bin .

Я также попытался использовать полный путь к tmux во всех моих сценариях, поскольку, если переменные среды не могут быть отсортированы. Но не удача

 $ which tmux $ /usr/bin/tmux 

Как ни странно, если я последую за таким шагом на моем ноутбуке Ubuntu 14.04 LTS, сценарий запускается через мой файл rc.local

Дополнительные параметры

  1. Возможно, попробуйте сценарий rc.local init.d/ daemon, но не уверены, что rc.local и crontab не могут справиться с этим, а может быть, и демон

  2. Я не знаю, является ли ~/.tmux.conf хорошим.

Заметка

Как вы можете видеть, это для модели Raspberry Pi 2 B. Я задал этот вопрос на соответствующем форуме, но модератор предложил задать здесь этот вопрос. Тема здесь

также я просмотрел эту тему в Linux Unix и пробовал все результаты, но, тем не менее, скрипт не работает при перезагрузке

One Solution collect form web for “Невозможно запустить сценарий tmux при загрузке”

Самое оптимизированное решение для устранения неполадок с любым сценарием, использующим tmux , потребует использования в сценарии запуска следующего параметра:

 #!/bin/bash # this script is called "sess" tmux new-session -d -s sess1 # this statement is a life-saver for tmux detached sessions tmux set-option -t sess1 set-remain-on-exit on # In my case running the script in a new window worked tmux new-window -d -n 'nameofWindow' -t sess1:1 'sudo /home/pi/bin/script.py' exit 0 

Теперь из rc.local следующий скрипт, и Pi был перезагружен. В конце концов при перезагрузке, когда вы присоединяете сеанс, используя sudo tmux a Once получает сеанс tmux с 2 окнами

  1. Начальный – это просто пустой сеанс, вызванный tmux new-session -d -s sess1

  2. и другой из команды tmux new-window которая может быть открыта с помощью CTRL + B + 1, поскольку она упоминалась как sess1:1 ( примечание: горячие клавиши могут отличаться для пользователя, по умолчанию горячая клавиша tmux (bindkeys) – CTRL + B )

вывод

Если сценарий заканчивается ошибкой, окно покажет вам, где ошибка была в моих случаях, ошибки в моем скрипте Python, а в нижней части она показывает, что Pane is Dead . Следовательно, из-за ошибок в скрипте сеанс tmux был завершен без предоставления какого-либо релевантного журнала (обратной связи), поэтому в вышеупомянутом /tmp/tmux.log не было зарегистрировано никакого выхода

Следовательно, всегда рекомендуется использовать set-remain-on-exit on при запуске скриптов с tmux в случае, если в сценарии в отдельном режиме есть ошибки

  • Unbind cn и cp из tmux
  • Как добавить подсказку подтверждения tmux, когда я убью окно?
  • tmux перестала нормально работать с zsh и oh-my-zsh
  • ssh-agent для вложенной сессии tmux
  • Как обновить пакет с более новой версией, чем репозиторий?
  • Vim не работает внутри tmux
  • Почему мои окна выделяются при первом открытии tmux?
  • Gentoo как автоматически запускать программы при входе в систему?
  • передача переменной tmux в shell-команду в tmux.conf
  • tmux: включить мышь только при нажатии сдвига
  • Запускать tmux всегда, когда я открываю терминал
  • Linux и Unix - лучшая ОС в мире.