ฉันคิดว่า-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
ไม่