Eu acho que os dois -cparâmetros ( sue bash) terão que ser citados no mínimo.
su - username -c "/usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'"
Também -é esperado que seja o último e pode não ser desejável aqui (veja man su).
Mais algumas observações. sudo poderia ser uma escolha melhor para um comando de uma tentativa como o seu, mas não necessariamente:
sudo -iu username /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'
Em particular, você pode usar um nível a menos de citação sudo.
Outra coisa com a qual você deve ter cuidado é executar comandos sem caminho absoluto em um contexto privilegiado. Isso vale para su(ou sudo), mas também para o caminho bashem seu comando. Você está fazendo certo com screen.
Apenas testei o seguinte e funciona bem. Eu acho que esse -é o principal problema em sua linha original:
/bin/su username -c "/usr/bin/screen -dmS test bash -c '/home/username/test.sh; exec bash'"
Observação ruim: por que você não tmuxtenta? Eu mudei recentemente e nunca olhei para trás. A única coisa que eu precisava para mudar imediatamente foi a combinação de teclas de prefixo que por tmuxpadrão é Ctrl+ B- regressar à GNU screen's Ctrl+ A.
Ele permite dividir sua janela em um número quase arbitrário de painéis (vertical e horizontalmente) e seu formato de arquivo de configuração (incluindo o do par de status) é realmente inteligível para os seres humanos. É claro que tmuxé tão bom quanto screenquando você simplesmente deseja executar algum programa / script não originalmente escrito como daemon em segundo plano. Se você pretende interagir com o multiplexador de terminal, recomendo vivamente tmux.
suousudo?