ฉันคิดว่า-cพารามิเตอร์ทั้งสอง( suและbash) จะต้องมีการเสนอราคาอย่างน้อยที่สุด
su - username -c "/usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'"
นอกจากนี้-คาดว่าจะเป็นครั้งสุดท้ายและอาจไม่เป็นที่ต้องการที่นี่ (ดูman su)
พูดอีกไม่กี่ sudo อาจเป็นทางเลือกที่ดีกว่าสำหรับคำสั่ง one-shot เช่นคุณ แต่ไม่จำเป็นต้อง:
sudo -iu username /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'
โดยเฉพาะอย่างยิ่งคุณสามารถใช้หนึ่งระดับน้อย quoting sudoกับ
สิ่งที่คุณต้องระวังก็คือการรันคำสั่งโดยไม่มีพา ธ สัมบูรณ์ในบริบทที่ได้รับการยกเว้น สิ่งนี้มีไว้สำหรับsu(หรือsudo) แต่ยังรวมถึงเส้นทางไปยังbashในคำสั่งของคุณ screenคุณกำลังทำมันถูกต้องกับ
เพิ่งทดสอบต่อไปนี้และมันก็ใช้งานได้ดี ฉันคิดว่า-นี่เป็นปัญหาหลักในบรรทัดต้นฉบับของคุณ:
/bin/su username -c "/usr/bin/screen -dmS test bash -c '/home/username/test.sh; exec bash'"
คำพูดที่ชั่วร้าย:ทำไมเจ้าไม่tmuxลองดูล่ะ? ฉันเพิ่งเปลี่ยนและไม่เคยมองย้อนกลับไป สิ่งเดียวที่ฉันต้องการที่จะเปลี่ยนทันทีเป็นคีย์ผสมคำนำหน้าซึ่งtmuxเริ่มต้นที่Ctrl+ B- กลับไป GNU 'sscreen +CtrlA
มันช่วยให้การแยกหน้าต่างของคุณเป็นจำนวนบานหน้าต่างโดยพลการ (ตามแนวตั้งและแนวนอน) และรูปแบบไฟล์กำหนดค่า แน่นอนtmuxว่าดีscreenเมื่อคุณต้องการเรียกใช้โปรแกรม / สคริปต์ที่ไม่ได้เขียนเป็น daemon ในพื้นหลัง หากคุณตั้งใจที่จะมีปฏิสัมพันธ์กับ Multiplexer ขั้ว tmuxแต่ผมขอแนะนำให้อย่างอบอุ่น
suหรือsudoไม่