Score:0

วิธีรันสคริปต์ Python venv ด้วยหน้าจอใน crontab

ธง jp

ฉันมีสคริปต์ sh พร้อมเนื้อหาต่อไปนี้:

หน้าจอ -mdS myscript /home/myscript/myscript_env/bin/python3 /home/myscript/bot.py

สคริปต์นี้เรียกใช้สคริปต์ไพทอนและเปิดขึ้นในหน้าจอใหม่

มันทำงานได้ดีเมื่อเรียกใช้งานไฟล์ sh ในเทอร์มินัล อย่างไรก็ตาม เมื่อใช้ crontab เพื่อเรียกใช้งานสคริปต์ sh นี้ขณะรีบูต มันจะไม่ทำงาน:

@reboot ./home/myscript/start.sh
cn flag
คุณช่วย [แก้ไข](https://serverfault.com/posts/1081562/edit) คำถามที่จะรวม `./home/myscript/start.sh` ทั้งหมดได้ไหม
cn flag
นอกจากนี้ยังควรอ่าน https://unix.stackexchange.com/questions/109804/crontabs-reboot-only-works-for-root
jp flag
@hardillb ฉันโพสต์เนื้อหาของสคริปต์ด้านบนแล้ว
Score:1
ธง cn

ประการแรก สคริปต์ควรเริ่มต้นด้วย shebang ที่ชี้ไปที่ล่ามที่จะเรียกใช้ โดยเฉพาะอย่างยิ่งเมื่อส่งต่อไปยังสิ่งอื่นที่ไม่ใช่เชลล์ที่มีอยู่เพื่อเรียกใช้ เนื่องจากคุณไม่ทราบว่าจะใช้สภาพแวดล้อมใด ดังนั้นสคริปต์แบบเต็มควรมีลักษณะดังนี้

#!/bin/sh
หน้าจอ -mdS myscript /home/myscript/myscript_env/bin/python3

ประการที่สอง ดังที่กล่าวไว้ในคำถามที่ข้าพเจ้าเชื่อมโยงถึง @รีบูต ไม่ได้รับการสนับสนุนเสมอไป สำหรับผู้ใช้ทั้งหมดหรือทั้งหมด

ตัวเลือกที่ดีกว่ามากสำหรับการเริ่มต้นบางอย่างในเวลาบูตคือบริการ systemd (สมมติว่าคุณไม่ได้ใช้บางอย่างที่เก่าพอที่จะยังคงใช้สคริปต์ init.d) การอภิปรายอย่างสมเหตุสมผลเกี่ยวกับวิธีการตั้งค่าบริการคือ ที่นี่

Score:0
ธง cn

คุณมีผลลัพธ์ใด ๆ ในจดหมายที่สร้างโดย cron หรือไม่ ลองตรวจสอบ cron หรือบันทึกเมลสำหรับผู้ใช้ที่มี crontab มีรายการนี้ และนั่นควรให้คำแนะนำเกี่ยวกับปัญหา

สำหรับฉันแล้วดูเหมือนว่าเหตุผลน่าจะเป็นสิ่งพิเศษ . ในคำสั่ง ลองเปลี่ยน

@reboot ./home/myscript/start.sh

ถึง

@reboot /home/myscript/start.sh

และดูว่าจะช่วยได้หรือไม่

เท่าที่ฉันทราบ cronjob รันคำสั่งจากโฮมไดเร็กทอรีของผู้ใช้ (เช่น /ราก) แทนรูทระบบไฟล์ (เช่น /).

Score:0
ธง us

เชลล์สคริปต์ของคุณควรมี #!/bin/bash หรือ #!/bin/sh ที่ด้านบน. หรือถ้าเรียกผ่าน crontab ก็ควรจะเรียกด้วย /ถัง/sh หรือ /bin/bash สคริปต์ของคุณ. ทางเลือกอื่นเมื่อเปรียบเทียบกับ crontab คือการใช้ประโยชน์จาก "/etc/rc.d/rc.local" ไฟล์.

หน้าจอ sh -mdS myscript /home/myscript/myscript_env/bin/python3.sh

เพียงแค่ต้องแน่ใจว่าไฟล์ rc.local นั้นสามารถเรียกใช้งานได้:

chmod +x /etc/rc.d/rc.local

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา