Her iki -cparametrenin ( suve bash) minimum olarak alıntılanması gerektiğini düşünüyorum.
su - username -c "/usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'"
Ayrıca -sonuncu olması beklenir ve burada istenmeyebilir (bkz. man su).
Birkaç açıklama daha. sizinki gibi bir kerelik bir komut için daha iyi bir seçim sudo olabilir , ancak mutlaka:
sudo -iu username /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'
Özellikle, daha az bir alıntılama seviyesi ile kullanabilirsiniz sudo.
Dikkatli olmak istediğiniz başka bir şey, ayrıcalıklı bir bağlamda mutlak yol olmadan komutları yürütmektir. Bu komut su(veya sudo) için değil aynı zamanda bashkomutunuzdaki yol için de geçerlidir. İle doğru yapıyorsun screen.
Sadece aşağıdakileri test etti ve güzel çalışıyor. -Orijinal hattınızdaki ana sorun olduğunu düşünüyorum :
/bin/su username -c "/usr/bin/screen -dmS test bash -c '/home/username/test.sh; exec bash'"
Kötü açıklama: neden tmuxdenemiyorsun? Geçenlerde değişti ve asla geri baktım. Hemen değiştirmem gereken tek şey, tmuxvarsayılan olarak Ctrl+ B- geri GNU screen's Ctrl+ ' ya olan önek tuş kombinasyonuydu A.
Pencerenizi neredeyse rastgele sayıda bölmeye (dikey ve yatay olarak) bölmeye izin verir ve yapılandırma dosyası biçimi (durum par için olanı da içeren) aslında insanlar tarafından anlaşılabilir. Tabii ki tmux, screenarka planda daemon olarak yazılmayan bazı programları / komut dosyalarını çalıştırmak istediğinizde olduğu kadar iyidir . Bununla birlikte, terminal çoklayıcı ile etkileşime girmeyi planlıyorsanız, sıcak bir şekilde tavsiye ederim tmux.
suyasudo?