Score:1

ทำไม crontab -e ของฉันไม่เรียกใช้งานสคริปต์ .sh

ธง cn

ใน sudo crontab -e ฉันมีสิ่งนี้:

*/2 * * * * วันที่ >> /home/rki/test.log
*/5 * * * * sudo sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh

*/2 * * * * วันที่ >> /home/rki/test.log ใช้งานได้โดยไม่มีปัญหา เขียนทุกๆ 2 นาทีลงใน ทดสอบ.เข้าสู่ระบบ ไฟล์.

มันจะไม่ดำเนินการ สำรองข้อมูล.sh สคริปต์ซึ่งมีสิ่งนี้:

#!/bin/bash
# ลบข้อมูลสำรองก่อนหน้านี้
#sudo rm dokuwiki-สำรองข้อมูล*.tar.gz

#ตั้งชื่อสำรอง
name=dokuwiki-backup_$(วันที่ '+%Y-%m-%d-%H%M%S')

#ของสำรอง
/bin/tar -zcvf "$name.tar.gz" /var/lib/docker/volumes/dokuwiki_data

ที่ฉันสามารถทำได้ sudo sh dokuwiki_backup.sh สบายดีไม่มีปัญหา สคริปต์ทุบตีคือ chmodเอ็ด 0777 และ chown rki:rki.

สิ่งที่ฉันทำผิด?

sudodus avatar
jp flag
งานที่ต้องการสิทธิ์ขั้นสูงควรอัปโหลดไปยัง cron ด้วย `sudo crontab -e` และไม่ควรมี sudo ดังนั้นให้ลองด้วย `*/5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki /backups/dokuwiki_backup.sh`
cn flag
1. อย่าใส่ sudo ใน crontab 2. ใช้เส้นทางที่แน่นอน
Grumpy ol' Bear avatar
cn flag
คือ `/home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh ` ไม่ใช่เส้นทางที่สมบูรณ์?
cn flag
และอย่าทำ `chmod 0777` ไม่เคยใช้ 3rd 7. 0700 หรือ 0750 สำหรับสคริปต์เป็นการรักษาความปลอดภัยที่ดีที่สุดเมื่อคุณรู้ว่าผู้ใช้ที่ดำเนินการนั้น @Grumpyol'Bear มี แต่ `sh` ไม่มี เป็นการดีที่สุดที่จะใช้เส้นทางเสมอแม้ว่าเส้นทางจะอยู่ภายในค่าเริ่มต้นสำหรับ cron เราไม่รู้ว่าเส้นทางระบบของคุณอยู่ใน cron ;)
Grumpy ol' Bear avatar
cn flag
ฉันเพิ่งทดสอบ `*/5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh` ไม่มีลูกเต๋า `*/2 * * * * date >> /home/rki/test.log` ยังใช้งานได้ ยังไม่มีการสำรองข้อมูล
sudodus avatar
jp flag
@ Grumpyol'Bear, 1. อาจจำเป็นต้องใส่เส้นทางที่แน่นอนใน shellscript เหตุผลก็คือสภาพแวดล้อมที่ใช้โดย `cron ' นั้นแทบจะไร้กระดูก (คุณไม่สามารถคาดหวังให้สภาพแวดล้อมนั้นเหมือนกับที่คุณได้รับในฐานะผู้ใช้ที่เข้าสู่ระบบ) 2. คุณใช้ `sudo crontab -e` หรือไม่
Grumpy ol' Bear avatar
cn flag
ใช่ `sudo crontab -e` เสมอ ฉันต้องการให้เป็น root ไม่ใช่ rki มิฉะนั้นฉันจะไป `crontab -e` สำหรับ rki cronjobs
sudodus avatar
jp flag
1. ฉันขอแนะนำให้คุณใส่พา ธ แบบเต็มในการเรียก 'วันที่' ด้วย 2. ไม่สามารถเรียกสคริปต์ด้วย `/bin/sh` และในขณะเดียวกันก็มี shebang `#!/bin/bash` ในบรรทัดแรก โทรด้วยโปรแกรมเชลล์หรือใช้ shebang ในกรณีหลังนี้ สคริปต์จะต้องสามารถดำเนินการได้
Grumpy ol' Bear avatar
cn flag
ให้ตายเถอะ ฉันจะทำมันเองไอ้เหี้ยไม่ทำงาน...
pLumo avatar
in flag
บางทีมันอาจจะใช้ได้ดี แต่ `$name.tar.gz` ของคุณสัมพันธ์กันและคุณไม่รู้ว่ามันอยู่ที่ไหน ?
Grumpy ol' Bear avatar
cn flag
หึหึ... @pLumo นั่นมันจริงๆ ทุกอย่างใน ./root/ เชี่ยเอ้ย...
sudodus avatar
jp flag
หวัดดี @pLumo :-)
Score:1
ธง in

หากคุณเพิ่ม cronjob ของคุณผ่าน sudo crontab -eมันจะทำงานเป็น ราก.

  • ไม่จำเป็นต้อง ซูโด, ใช้:

    */5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh
    
  • ไดเร็กทอรีการทำงานเริ่มต้นควรเป็น ราก$บ้านดังนั้นโดยปกติ /ราก. คุณสามารถหา $name.tar.gz ที่นั่น. แต่จะดีกว่าถ้าใช้เส้นทางที่สมบูรณ์ เช่น:

    /bin/tar -zcvf "/home/rki/Backups/$name.tar.gz" /var/lib/docker/volumes/dokuwiki_data
    
Score:-1
ธง cn

ในการรัน cronjobs ด้วยสภาพแวดล้อมรูทแบบเต็มให้ใช้คำสั่งนี้

*/5 * * * * su - root -c '/home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh'
Grumpy ol' Bear avatar
cn flag
ไม่มีลูกเต๋า ไม่ทำงาน
Thomas Aichinger avatar
cn flag
สคริปต์ของคุณอาจมีข้อผิดพลาด ลองเรียกใช้จากบรรทัดคำสั่ง

โพสต์คำตอบ

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