Вы могли бы хотеть выяснить то, что точно ест тот возврат путем первого запущения/etc/init.d скрипта непосредственно с (sudo как требуется) sh -x /etc/init.d/celeryd start
. Если это находится в сценарии оболочки, необходимо видеть его этот путь. Если daemon
самостоятельно ожидает новой строки, прежде чем возврат, Ваш ответ будет celeryd конкретный и мог бы извлечь выгоду из прокручивания ее strace
или просто с a < /dev/null
добавленный так, чтобы это не имело доступа к стандарту, вводят через Ваш терминал.
Другой "блуждает в темноте" вещь попробовать: выполненный ssh
с -nt
опция отключить терминальное выделение и стандартный вход.
Это справедливо tmux
, дополнительно с -t
опция выбрать сессию (соответствие -S
для Экрана).
tmux set-environment DISPLAY $DISPLAY
Ответ на часть вопроса об обновлении среды: tmux по умолчанию наследовал определенные переменные от среды клиента при создании или повторном прикреплении сессии.
Из страницы справочника:
Опция сессии среды обновления может использоваться для обновления среды сессии от клиента, когда новая сессия создается или повторно прикрепленное старое.
Значение по умолчанию является "SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY ДИСПЛЕЯ".
Таким образом, Вы не должны делать ничего для получения обновленного DISPLAY
установка при повторном прикреплении сессии.
Обратите внимание, что это только вступает в силу для новых окон или областей, которые Вы создаете на старой сессии, но не существующих окнах.
Если вы хотите автоматически обновлять $DISPLAY для каждого из ваших процессов оболочки в сеансе tmux, вы можете проверить мое решение :https://www.reddit.com/r/tmux/comments/cd3jqw/automatically_update_display_for_each_tmux_pane/
Подводя итоги:
Добавить строку в tmux.confset-hook -g client-attached 'run-shell /bin/update_display.sh'
Создать скрипт /bin/update _display.sh:
# tmux will only send-keys to the following active processes
shell_grep="bash|zsh"
# Update $DISPLAY for each tmux pane that is currently running one of the $shell_grep processes
tmux list-panes -s -F "#{session_name}:#{window_index}.#{pane_index} #{pane_current_command}" | \
grep -E $shell_grep| \
cut -f 1 -d " " | \
xargs -I PANE tmux send-keys -t PANE 'eval $(tmux showenv -s DISPLAY)' Enter