Her iki -c
parametrenin ( su
ve 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 bash
komutunuzdaki 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 tmux
denemiyorsun? Geçenlerde değişti ve asla geri baktım. Hemen değiştirmem gereken tek şey, tmux
varsayı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
, screen
arka 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
.
su
yasudo
?